public InteractionException(final InteractionEvent interactionEvent) { super(interactionEvent.getReason()); this.interactionEvent = interactionEvent; }
/** * Convenience method that returns the {@link InteractionEvent#getAdvisorClass() advisor class} of the * wrapped {@link #getInteractionEvent() interaction event}. * * @return */ public Class<?> getAdvisorClass() { return interactionEvent.getAdvisorClass(); }
/** * Convenience method that returns the {@link InteractionEvent#getIdentifier() identifier} of the wrapped * {@link #getInteractionEvent() interaction event}. * * @return */ public Identifier getIdentifier() { return interactionEvent.getIdentifier(); }
/** * Wraps a {@link InteractionEvent#isVeto() vetoing} {@link InteractionEvent} in a corresponding * {@link InteractionException}, and returns it. */ private InteractionException toException(final InteractionEvent interactionEvent) { if (!interactionEvent.isVeto()) { throw new IllegalArgumentException("Provided interactionEvent must be a veto"); } if (interactionEvent instanceof ValidityEvent) { final ValidityEvent validityEvent = (ValidityEvent) interactionEvent; return new InvalidException(validityEvent); } if (interactionEvent instanceof VisibilityEvent) { final VisibilityEvent visibilityEvent = (VisibilityEvent) interactionEvent; return new HiddenException(visibilityEvent); } if (interactionEvent instanceof UsabilityEvent) { final UsabilityEvent usabilityEvent = (UsabilityEvent) interactionEvent; return new DisabledException(usabilityEvent); } throw new IllegalArgumentException( "Provided interactionEvent must be a VisibilityEvent, UsabilityEvent or a ValidityEvent"); }
/** * Returns the contained {@link InteractionEvent}, if necessary updated with the * {@link #advise(String, InteractionAdvisorFacet) advice} of the interactions. * * <p> * That is, if still {@link State#ADVISING advising}, then copies over the details from this result into * the contained {@link InteractionEvent}, and flips into {@link State#ADVISED advised (done)}. * * @return */ public InteractionEvent getInteractionEvent() { if (state == State.ADVISING) { interactionEvent.advised(getReason(), getAdvisorFacetClass()); state = State.ADVISED; } return interactionEvent; }
@Override public Object getSource() { return super.getSource(); } }
/** * As per {@link #getClassName()}, but {@link NameUtils#naturalName(String) naturalized}. */ public String getClassNaturalName() { return NameUtils.naturalName(getClassName()); }
/** * As per {@link #getMemberName()}, but naturalized. */ public String getMemberNaturalName() { return NameUtils.naturalName(getMemberName()); }
/** * As per {@link #getMemberParameterName()}, but naturalized. */ public String[] getMemberParameterNaturalNames() { return NameUtils.naturalNames(getMemberParameterNames()); }
/** * Wraps a {@link InteractionEvent#isVeto() vetoing} {@link InteractionEvent} in a corresponding * {@link InteractionException}, and returns it. */ private InteractionException toException(final InteractionEvent interactionEvent) { if (!interactionEvent.isVeto()) { throw new IllegalArgumentException("Provided interactionEvent must be a veto"); } if (interactionEvent instanceof ValidityEvent) { final ValidityEvent validityEvent = (ValidityEvent) interactionEvent; return new InvalidException(validityEvent); } if (interactionEvent instanceof VisibilityEvent) { final VisibilityEvent visibilityEvent = (VisibilityEvent) interactionEvent; return new HiddenException(visibilityEvent); } if (interactionEvent instanceof UsabilityEvent) { final UsabilityEvent usabilityEvent = (UsabilityEvent) interactionEvent; return new DisabledException(usabilityEvent); } throw new IllegalArgumentException( "Provided interactionEvent must be a VisibilityEvent, UsabilityEvent or a ValidityEvent"); }
/** * Returns the contained {@link InteractionEvent}, if necessary updated with the * {@link #advise(String, InteractionAdvisorFacet) advice} of the interactions. * * <p> * That is, if still {@link State#ADVISING advising}, then copies over the details from this result into * the contained {@link InteractionEvent}, and flips into {@link State#ADVISED advised (done)}. * * @return */ public InteractionEvent getInteractionEvent() { if (state == State.ADVISING) { interactionEvent.advised(getReason(), getAdvisorFacetClass()); state = State.ADVISED; } return interactionEvent; }
/** * Wraps a {@link InteractionEvent#isVeto() vetoing} {@link InteractionEvent} in a corresponding * {@link InteractionException}, and returns it. */ private InteractionException toException(final InteractionEvent interactionEvent) { if (!interactionEvent.isVeto()) { throw new IllegalArgumentException("Provided interactionEvent must be a veto"); } if (interactionEvent instanceof ValidityEvent) { final ValidityEvent validityEvent = (ValidityEvent) interactionEvent; return new InvalidException(validityEvent); } if (interactionEvent instanceof VisibilityEvent) { final VisibilityEvent visibilityEvent = (VisibilityEvent) interactionEvent; return new HiddenException(visibilityEvent); } if (interactionEvent instanceof UsabilityEvent) { final UsabilityEvent usabilityEvent = (UsabilityEvent) interactionEvent; return new DisabledException(usabilityEvent); } throw new IllegalArgumentException( "Provided interactionEvent must be a VisibilityEvent, UsabilityEvent or a ValidityEvent"); }
public InteractionException(final InteractionEvent interactionEvent) { super(interactionEvent.getReason()); this.interactionEvent = interactionEvent; }
/** * Convenience method that returns the {@link InteractionEvent#getAdvisorClass() advisor class} of the * wrapped {@link #getInteractionEvent() interaction event}. * * @return */ public Class<?> getAdvisorClass() { return interactionEvent.getAdvisorClass(); }
/** * Convenience method that returns the {@link InteractionEvent#getIdentifier() identifier} of the wrapped * {@link #getInteractionEvent() interaction event}. * * @return */ public Identifier getIdentifier() { return interactionEvent.getIdentifier(); }
private void notifyListenersAndVetoIfRequired(final InteractionResult interactionResult) { final InteractionEvent interactionEvent = interactionResult.getInteractionEvent(); notifyListeners(interactionEvent); if (interactionEvent.isVeto()) { throw toException(interactionEvent); } }
/** * Whether this interaction has been vetoed (meaning that {@link #getReason()} and * {@link #getAdvisorClass()} will both be non-<tt>null</tt> and the {@link #getReason() reason} * non-empty.) * * <p> * The interpretation of this depends on the subclass: * <ul> * <li>for {@link VisibilityEvent}, a veto means that the feature (property, collection, action) is * hidden</li> * <li>for {@link UsabilityEvent}, a veto means that the feature is disabled</li> * <li>for {@link ValidityEvent}, a veto means that the proposed modification (property value, object * added/removed, action argument) is invalid</li> * </ul> */ public boolean isVeto() { return getReason() != null && getReason().length() > 0; }
private void notifyListenersAndVetoIfRequired(final InteractionResult interactionResult) { final InteractionEvent interactionEvent = interactionResult.getInteractionEvent(); notifyListeners(interactionEvent); if (interactionEvent.isVeto()) { throw toException(interactionEvent); } }
private void notifyListenersAndVetoIfRequired(final InteractionResult interactionResult) { final InteractionEvent interactionEvent = interactionResult.getInteractionEvent(); notifyListeners(interactionEvent); if (interactionEvent.isVeto()) { throw toException(interactionEvent); } }