@Override public String toString() { return new StringBuilder("[Event ").append(getEventType()).append(" ") .append(previousState).append(" + ").append(trigger).append(" -> ") .append(newState).append("]").toString(); }
@Override public boolean equals(@Nullable Object other) { if (other == null) { return false; } if (this == other) { return true; } if (!(other instanceof StateTransitionEvent<?, ?>)) { return false; } @SuppressWarnings("unchecked") final StateTransitionEvent<T, C> ev = (StateTransitionEvent<T, C>) other; return Objects.equal(previousState, ev.previousState) && Objects.equal(newState, ev.newState) && Objects.equal(trigger, ev.trigger) && Objects.equal(eventType, ev.eventType) && Objects.equal(getIssuer(), ev.getIssuer()); } }
assertEquals(2, history.getHistory().size()); assertTrue(((StateTransitionEvent) history.getHistory().get(0)) .equalTo(startState, Events.SPEZIAL, specialState)); assertTrue(((StateTransitionEvent) history.getHistory().get(1)) .equalTo(specialState, Events.START, startState)); .equalTo(startState, Events.START, startState)); assertFalse(((StateTransitionEvent) history.getHistory().get(1)) .equalTo(specialState, Events.PAUSE, startState)); assertFalse(((StateTransitionEvent) history.getHistory().get(1)) .equalTo(specialState, Events.START, specialState));
assertEquals(1, history.getHistory().size()); assertEquals( new StateTransitionEvent<>(fsm, stopState, Events.RECURSIVE, stopState), history.getHistory().get(0));
/** * Perform a state change if possible. * @param trigger The trigger that may initiate a state change. * @param context Reference to the context. */ protected void changeState(T trigger, C context) { checkArgument(transitionTable.contains(currentState, trigger), "The trigger %s is not supported when in state %s.", trigger, currentState); final State<T, C> newState = transitionTable.get(currentState, trigger); if (!newState.equals(currentState) || explicitRecursiveTransitions) { currentState.onExit(trigger, context); final State<T, C> oldState = currentState; currentState = newState; currentState.onEntry(trigger, context); eventDispatcher.dispatchEvent(new StateTransitionEvent<>(this, oldState, trigger, newState)); } }
@Override public boolean equals(@Nullable Object other) { if (other == null) { return false; } if (this == other) { return true; } if (!(other instanceof StateTransitionEvent<?, ?>)) { return false; } @SuppressWarnings("unchecked") final StateTransitionEvent<T, C> ev = (StateTransitionEvent<T, C>) other; return Objects.equal(previousState, ev.previousState) && Objects.equal(newState, ev.newState) && Objects.equal(trigger, ev.trigger) && Objects.equal(eventType, ev.eventType) && Objects.equal(getIssuer(), ev.getIssuer()); } }
/** * Perform a state change if possible. * @param trigger The trigger that may initiate a state change. * @param context Reference to the context. */ protected void changeState(T trigger, C context) { checkArgument(transitionTable.contains(currentState, trigger), "The trigger %s is not supported when in state %s.", trigger, currentState); final State<T, C> newState = transitionTable.get(currentState, trigger); if (!newState.equals(currentState) || explicitRecursiveTransitions) { currentState.onExit(trigger, context); final State<T, C> oldState = currentState; currentState = newState; currentState.onEntry(trigger, context); eventDispatcher.dispatchEvent(new StateTransitionEvent<>(this, oldState, trigger, newState)); } }
@Override public String toString() { return new StringBuilder("[Event ").append(getEventType()).append(" ") .append(previousState).append(" + ").append(trigger).append(" -> ") .append(newState).append("]").toString(); }