package click.kamil.examples.statemachine.inheritanceextrafunctionsstate;

import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
import org.springframework.statemachine.config.configurers.ExternalTransitionConfigurer;
import org.springframework.statemachine.config.configurers.StateConfigurer;

class TwoStateMachineConfiguration extends AbstractTwoStateMachineConfiguration {
    @Override
    protected void addAdditionalStates(StateConfigurer<States, Events> states) {
        states.state(States.STATE_EXTRA_1);
    }

    @Override
    protected void addAdditionalCancellationTransitions(StateMachineTransitionConfigurer<States, Events> transitions) {
        addAllCancellationTransitionsForSource(transitions, States.STATE_EXTRA_1);
    }

    @Override
    protected void addAdditionalTransitions(ExternalTransitionConfigurer<States, Events> transitions) throws Exception {
        transitions
                .and()
                .withExternal().event(Events.EVENTX)
                .source(States.STATE5)
                .target(States.STATE_EXTRA_1);
    }

}
