You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@isis.apache.org by "Oscar Bou (JIRA)" <ji...@apache.org> on 2013/07/31 21:37:52 UTC

[jira] [Updated] (ISIS-485) Clearer messages for validation exceptions (specially MandatoryExceptions)

     [ https://issues.apache.org/jira/browse/ISIS-485?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Oscar Bou updated ISIS-485:
---------------------------

    Attachment: patch_validation_messages.diff

Find a git patch for this one.


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;
    }

....
                
> Clearer messages for validation exceptions (specially MandatoryExceptions)
> --------------------------------------------------------------------------
>
>                 Key: ISIS-485
>                 URL: https://issues.apache.org/jira/browse/ISIS-485
>             Project: Isis
>          Issue Type: Improvement
>          Components: Core
>    Affects Versions: core-1.2.0
>            Reporter: Oscar Bou
>            Assignee: Dan Haywood
>         Attachments: patch_validation_messages.diff
>
>
> Move from validation exception messages like this one:
> 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 ....
> To clear messages like the following one that allow to better identify the source of the validation exception:
> 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 ...
> }

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira