Hi Oscar, thanks for this. The ASF mailing lists don't allow attachments, so you'll need to raise a Jira issue.
(The other reason is because a patch associated to a Jira implicitly - if you read the small print somewhere - implies that you are granting a license to ASF to use the patch in its codebase). So, raise a Jira and I'll apply the patch. (I must also do your other patch on choices ... thx for that) Cheers Dan On 31 July 2013 18:12, GESCONSULTOR - Óscar Bou <[email protected]>wrote: > > Hi to all. > > We've made a "small" change on Isis applib that allows clearer messages > for validation exceptions. > > We wanted to move from this: > > org.apache.isis.applib.services.wrapper.InvalidException: Mandatory > at > org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.toException(DomainObjectInvocationHandler.java:584) > at > org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.notifyListenersAndVetoIfRequired(DomainObjectInvocationHandler.java:556) > at > org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.handleActionMethod(DomainObjectInvocationHandler.java:506) > at > org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:236) > at > org.apache.isis.core.wrapper.internal.InvocationHandlerMethodInterceptor.intercept(InvocationHandlerMethodInterceptor.java:37) > at > com.xms.framework.risk.domain.model.RiskRegister$$EnhancerByCGLIB$$d42e255.addQuantitativeRiskToAsset(<generated>) > at > com.xms.framework.risk.integration.glue.risk.RiskRegisterGlue.when_add_quantitative_risk_to_this_risk_register_with_asset_and_threat_and_likelihood_and_impact(RiskRegisterGlue.java:152) > at ✽.When I add a new quantitative risk to the risk register with > name "risk 1" and asset "A1" and threat "T1" and likelihood 0.50 and impact > 1000.00(com/xms/framework/risk/integration/specs/RiskAssessmentSpec_Risk_levelOfRisk.feature:56) > > > To something like this: > > org.apache.isis.applib.services.wrapper.InvalidException: Source: > com.xms.framework.risk.domain.model.RiskRegister@2012052f. Reason: > Mandatory. Identifier: > com.xms.framework.risk.domain.model.RiskRegister#addQuantitativeRiskToAsset(java.lang.String,java.lang.String,com.xms.framework.architecture.domain.model.Entity,com.xms.framework.risk.domain.model.threat.Threat,java.math.BigDecimal,java.math.BigDecimal). > Position: 2. Proposed: null > at > org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.toException(DomainObjectInvocationHandler.java:584) > at > org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.notifyListenersAndVetoIfRequired(DomainObjectInvocationHandler.java:556) > at > org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.handleActionMethod(DomainObjectInvocationHandler.java:506) > at > org.apache.isis.core.wrapper.internal.DomainObjectInvocationHandler.invoke(DomainObjectInvocationHandler.java:236) > at > org.apache.isis.core.wrapper.internal.InvocationHandlerMethodInterceptor.intercept(InvocationHandlerMethodInterceptor.java:37) > at > com.xms.framework.risk.domain.model.RiskRegister$$EnhancerByCGLIB$$d42e255.addQuantitativeRiskToAsset(<generated>) > at > com.xms.framework.risk.integration.glue.risk.RiskRegisterGlue.when_add_quantitative_risk_to_this_risk_register_with_asset_and_threat_and_likelihood_and_impact(RiskRegisterGlue.java:152) > at ✽.When I add a new quantitative risk to the risk register with > name "risk 1" and asset "A1" and threat "T1" and likelihood 0.50 and impact > 1000.00(com/xms/framework/risk/integration/specs/RiskAssessmentSpec_Risk_levelOfRisk.feature:56) > > > > We have created a new "getReasonMessage()" method on InteractionEvent as > this: > > > public abstract class InteractionEvent extends EventObject { > > ..... > > /** > * The reason message, if any, that this interaction may have been > vetoed or > * otherwise disallowed. > * > * <p> > * This message should be overridden by subclasses for containing the > Reason, the Identifier and any other relevant context information. > * > * @return > */ > public String getReasonMessage() { > if (this.getIdentifier() != null) { > return String.format("Reason: %s. Identifier: %s", > this.getReason(), this.getIdentifier()); > } else { > return String.format("Reason: %s", this.getReason()); > } > } > > ..... > > } > > And use that method to "construct" the InteractionException, instead of > "getReason()": > > public abstract class InteractionException extends ApplicationException { > > .... > > public InteractionException(final InteractionEvent interactionEvent) { > - super(interactionEvent.getReason()); > + super(interactionEvent.getReasonMessage()); > this.interactionEvent = interactionEvent; > } > > .... > } > > > Please, find a git patch attached. > > Perhaps there are better ways to implement it. If needed we can create the > Jira issue. > > > Thanks, > > Oscar > > > > > >
