If we are in a nested state method canAccept() returns false for transitions available from parent state.
Workaround (subclass override):
@Override
public boolean canAccept(Object event) {
ImmutableState<?, ?, ?, ?> testRawState = getCurrentRawState();
if (testRawState == null) { // assuming auto_start enabled
testRawState = getInitialRawState();
}
return canAccept(testRawState, event);
}
private boolean canAccept(ImmutableState<?, ?, ?, ?> state, Object event) {
final ImmutableState<?, ?, ?, ?> parentState = state.getParentState();
return state.getAcceptableEvents().contains(event) ||
(parentState != null && canAccept(parentState, event));
}
If we are in a nested state method
canAccept()returnsfalsefor transitions available from parent state.Workaround (subclass override):