
org.squirrelframework.foundation.fsm.impl.FSM Maven / Gradle / Ivy
package org.squirrelframework.foundation.fsm.impl;
import org.squirrelframework.foundation.component.SquirrelProvider;
import org.squirrelframework.foundation.fsm.*;
import org.squirrelframework.foundation.fsm.builder.*;
import org.squirrelframework.foundation.util.TypeReference;
import java.lang.reflect.Method;
import java.util.List;
import java.util.Map;
abstract class FSM {
static , S, E, C> StateContext newStateContext(
StateMachine stateMachine, StateMachineData data,
ImmutableState sourceState, E event, C context,
TransitionResult result, ActionExecutionService executor) {
return new StateContextImpl(stateMachine, data, sourceState, event, context, result, executor);
}
static , S, E, C> MutableTransition newTransition() {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {});
}
static , S, E, C> MutableState newState(S stateId) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { Object.class }, new Object[] { stateId });
}
static , S, E, C> MutableLinkedState newLinkedState(S stateId) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { Object.class }, new Object[] { stateId });
}
static , S, E, C> MutableTimedState newTimedState(S stateId) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { Object.class }, new Object[] { stateId });
}
static , S, E, C> MutableState getState(
Map> states, S stateId) {
MutableState state = states.get(stateId);
if (state == null) {
state = FSM.newState(stateId);
states.put(stateId, state);
}
return state;
}
static , S, E, C> DeferBoundActionBuilder newDeferBoundActionBuilder(
List> deferBoundActionInfoList, ExecutionContext executionContext
) {
return SquirrelProvider.getInstance().newInstance( new TypeReference>(){},
new Class[]{List.class, ExecutionContext.class}, new Object[]{deferBoundActionInfoList, executionContext} );
}
static , S, E, C> MultiTransitionBuilder newMultiTransitionBuilder(
Map> states, TransitionType transitionType, int priority, ExecutionContext executionContext
) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { Map.class, TransitionType.class, int.class, ExecutionContext.class },
new Object[] { states, transitionType, priority, executionContext });
}
static , S, E, C> ExternalTransitionBuilder newExternalTransitionBuilder(
Map> states, int priority, ExecutionContext executionContext) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { Map.class, TransitionType.class, int.class, ExecutionContext.class },
new Object[] { states, TransitionType.EXTERNAL, priority, executionContext });
}
static , S, E, C> LocalTransitionBuilder newLocalTransitionBuilder(
Map> states, int priority, ExecutionContext executionContext) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { Map.class, TransitionType.class, int.class, ExecutionContext.class },
new Object[] { states, TransitionType.LOCAL, priority, executionContext });
}
static , S, E, C> InternalTransitionBuilder newInternalTransitionBuilder(
Map> states, int priority, ExecutionContext executionContext) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { Map.class, TransitionType.class, int.class, ExecutionContext.class },
new Object[] { states, TransitionType.INTERNAL, priority, executionContext });
}
static , S, E, C> EntryExitActionBuilder newEntryExitActionBuilder(
MutableState state, boolean isEntryAction, ExecutionContext executionContext) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { MutableState.class, boolean.class, ExecutionContext.class},
new Object[] { state, isEntryAction, executionContext});
}
static , S, E, C> MethodCallActionImpl newMethodCallAction(
Method method, int weight, ExecutionContext executionContext) {
return SquirrelProvider.getInstance().newInstance(
new TypeReference>() {},
new Class[] { Method.class, int.class, ExecutionContext.class },
new Object[] { method, weight, executionContext } );
}
static , S, E, C> MethodCallActionProxyImpl newMethodCallActionProxy(
String methodName, ExecutionContext executionContext) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class[] { String.class, ExecutionContext.class }, new Object[] { methodName, executionContext });
}
static , S, E, C> Actions newActions() {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {});
}
static , S, E, C> TransitionResult newResult(
boolean accepted, ImmutableState targetState, TransitionResult parent) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {}).
setAccepted(accepted).setTargetState(targetState).setParent(parent);
}
static Condition newMvelCondition(String expression, MvelScriptManager scriptManager) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class>[]{String.class, MvelScriptManager.class}, new Object[]{expression, scriptManager});
}
static , S, E, C> Action newMvelAction(
String expression, ExecutionContext executionContext) {
return SquirrelProvider.getInstance().newInstance(new TypeReference>() {},
new Class>[]{String.class, ExecutionContext.class}, new Object[]{expression, executionContext});
}
static , S, E, C> StateMachineData newStateMachineData(
Map> states) {
return SquirrelProvider.getInstance().newInstance(
new TypeReference>(){},
new Class[]{Map.class}, new Object[]{states} );
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy