package org.squirrelframework.foundation.fsm.impl; import org.squirrelframework.foundation.fsm.*; class StateContextImpl<T extends StateMachine<T, S, E, C>, S, E, C> implements StateContext<T, S, E, C> { private final StateMachine<T, S, E, C> stateMachine; private final StateMachineData<T, S, E, C> stateMachineData; private final ImmutableState<T, S, E, C> sourceState; private final C context; private final E event; private final TransitionResult<T, S, E, C> result; private final ActionExecutionService<T, S, E, C> executor; StateContextImpl(StateMachine<T, S, E, C> stateMachine, StateMachineData<T, S, E, C> stateMachineData, ImmutableState<T, S, E, C> sourceState, E event, C context, TransitionResult<T, S, E, C> result, ActionExecutionService<T, S, E, C> executor) { this.stateMachine = stateMachine; this.stateMachineData = stateMachineData; this.sourceState = sourceState; this.event = event; this.context = context; this.result = result; this.executor = executor; } @Override public StateMachine<T, S, E, C> getStateMachine() { return stateMachine; } @Override public ImmutableState<T, S, E, C> getSourceState() { return sourceState; } @Override public C getContext() { return context; } @Override public E getEvent() { return event; } @Override public TransitionResult<T, S, E, C> getResult() { return result; } @Override public ActionExecutionService<T, S, E, C> getExecutor() { return executor; } @Override public StateMachineData<T, S, E, C> getStateMachineData() { return stateMachineData; } }