Factories now use model SPI
- Actually pass StateMachineModel into AbstractStateMachineFactory instead of building it internally. - Relates to #172
This commit is contained in:
@@ -38,9 +38,9 @@ import org.springframework.statemachine.access.StateMachineAccess;
|
||||
import org.springframework.statemachine.access.StateMachineFunction;
|
||||
import org.springframework.statemachine.action.Action;
|
||||
import org.springframework.statemachine.config.model.ChoiceData;
|
||||
import org.springframework.statemachine.config.model.DefaultStateMachineModel;
|
||||
import org.springframework.statemachine.config.model.StateData;
|
||||
import org.springframework.statemachine.config.model.StateMachineConfigurationConfig;
|
||||
import org.springframework.statemachine.config.model.StateMachineModel;
|
||||
import org.springframework.statemachine.config.model.StateMachineStates;
|
||||
import org.springframework.statemachine.config.model.StateMachineTransitions;
|
||||
import org.springframework.statemachine.config.model.TransitionData;
|
||||
@@ -75,6 +75,7 @@ import org.springframework.statemachine.transition.TransitionKind;
|
||||
import org.springframework.statemachine.trigger.EventTrigger;
|
||||
import org.springframework.statemachine.trigger.TimerTrigger;
|
||||
import org.springframework.statemachine.trigger.Trigger;
|
||||
import org.springframework.util.Assert;
|
||||
import org.springframework.util.ObjectUtils;
|
||||
|
||||
/**
|
||||
@@ -94,7 +95,9 @@ public abstract class AbstractStateMachineFactory<S, E> extends LifecycleObjectS
|
||||
|
||||
private final StateMachineStates<S, E> stateMachineStates;
|
||||
|
||||
private final StateMachineConfigurationConfig<S,E> stateMachineConfigurationConfig;
|
||||
private final StateMachineConfigurationConfig<S, E> stateMachineConfigurationConfig;
|
||||
|
||||
private final StateMachineModel<S, E> stateMachineModel;
|
||||
|
||||
private Boolean contextEvents;
|
||||
|
||||
@@ -103,17 +106,16 @@ public abstract class AbstractStateMachineFactory<S, E> extends LifecycleObjectS
|
||||
private String beanName;
|
||||
|
||||
/**
|
||||
* Instantiates a new enum state machine factory.
|
||||
* Instantiates a new abstract state machine factory.
|
||||
*
|
||||
* @param stateMachineConfigurationConfig the state machine generic config
|
||||
* @param stateMachineTransitions the state machine transitions
|
||||
* @param stateMachineStates the state machine states
|
||||
* @param stateMachineModel the state machine model
|
||||
*/
|
||||
public AbstractStateMachineFactory(StateMachineConfigurationConfig<S, E> stateMachineConfigurationConfig,
|
||||
StateMachineTransitions<S, E> stateMachineTransitions, StateMachineStates<S, E> stateMachineStates) {
|
||||
this.stateMachineConfigurationConfig = stateMachineConfigurationConfig;
|
||||
this.stateMachineTransitions = stateMachineTransitions;
|
||||
this.stateMachineStates = stateMachineStates;
|
||||
public AbstractStateMachineFactory(StateMachineModel<S, E> stateMachineModel) {
|
||||
Assert.notNull(stateMachineModel, "StateMachineModel must be set");
|
||||
this.stateMachineModel = stateMachineModel;
|
||||
this.stateMachineConfigurationConfig = stateMachineModel.getConfiguration();
|
||||
this.stateMachineTransitions = stateMachineModel.getTransitions();
|
||||
this.stateMachineStates = stateMachineModel.getStates();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -124,13 +126,12 @@ public abstract class AbstractStateMachineFactory<S, E> extends LifecycleObjectS
|
||||
@SuppressWarnings("unchecked")
|
||||
@Override
|
||||
public StateMachine<S, E> getStateMachine() {
|
||||
// TODO: should pass model into constructor
|
||||
if (stateMachineConfigurationConfig.isVerifierEnabled()) {
|
||||
StateMachineModelVerifier<S, E> verifier = stateMachineConfigurationConfig.getVerifier();
|
||||
if (verifier == null) {
|
||||
verifier = new CompositeStateMachineModelVerifier<S, E>();
|
||||
}
|
||||
verifier.verify(new DefaultStateMachineModel<S, E>(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions));
|
||||
verifier.verify(stateMachineModel);
|
||||
}
|
||||
|
||||
// shared
|
||||
|
||||
@@ -26,9 +26,7 @@ import org.springframework.statemachine.ExtendedState;
|
||||
import org.springframework.statemachine.ObjectStateMachine;
|
||||
import org.springframework.statemachine.StateMachine;
|
||||
import org.springframework.statemachine.action.Action;
|
||||
import org.springframework.statemachine.config.model.StateMachineConfigurationConfig;
|
||||
import org.springframework.statemachine.config.model.StateMachineStates;
|
||||
import org.springframework.statemachine.config.model.StateMachineTransitions;
|
||||
import org.springframework.statemachine.config.model.StateMachineModel;
|
||||
import org.springframework.statemachine.region.Region;
|
||||
import org.springframework.statemachine.state.ObjectState;
|
||||
import org.springframework.statemachine.state.PseudoState;
|
||||
@@ -50,13 +48,10 @@ public class ObjectStateMachineFactory<S, E> extends AbstractStateMachineFactory
|
||||
/**
|
||||
* Instantiates a new object state machine factory.
|
||||
*
|
||||
* @param stateMachineConfigurationConfig the state machine generic config
|
||||
* @param stateMachineTransitions the state machine transitions
|
||||
* @param stateMachineStates the state machine states
|
||||
* @param stateMachineModel the state machine model
|
||||
*/
|
||||
public ObjectStateMachineFactory(StateMachineConfigurationConfig<S, E> stateMachineConfigurationConfig,
|
||||
StateMachineTransitions<S, E> stateMachineTransitions, StateMachineStates<S, E> stateMachineStates) {
|
||||
super(stateMachineConfigurationConfig, stateMachineTransitions, stateMachineStates);
|
||||
public ObjectStateMachineFactory(StateMachineModel<S, E> stateMachineModel) {
|
||||
super(stateMachineModel);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -29,6 +29,7 @@ import org.springframework.statemachine.config.builders.StateMachineTransitionBu
|
||||
import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
|
||||
import org.springframework.statemachine.config.common.annotation.AnnotationBuilder;
|
||||
import org.springframework.statemachine.config.common.annotation.ObjectPostProcessor;
|
||||
import org.springframework.statemachine.config.model.DefaultStateMachineModel;
|
||||
import org.springframework.statemachine.config.model.StateMachineConfigurationConfig;
|
||||
import org.springframework.statemachine.config.model.StateMachineStates;
|
||||
import org.springframework.statemachine.config.model.StateMachineTransitions;
|
||||
@@ -115,7 +116,8 @@ public class StateMachineBuilder {
|
||||
StateMachineStates<S, E> stateMachineStates = stateMachineConfig.getStates();
|
||||
StateMachineConfigurationConfig<S, E> stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig();
|
||||
ObjectStateMachineFactory<S, E> stateMachineFactory = new ObjectStateMachineFactory<S, E>(
|
||||
stateMachineConfigurationConfig, stateMachineTransitions, stateMachineStates);
|
||||
new DefaultStateMachineModel<S, E>(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions));
|
||||
|
||||
stateMachineFactory.setHandleAutostartup(stateMachineConfigurationConfig.isAutoStart());
|
||||
|
||||
if (stateMachineConfigurationConfig.getBeanFactory() != null) {
|
||||
|
||||
@@ -38,6 +38,7 @@ import org.springframework.statemachine.config.builders.StateMachineConfigBuilde
|
||||
import org.springframework.statemachine.config.builders.StateMachineConfigurer;
|
||||
import org.springframework.statemachine.config.common.annotation.AbstractImportingAnnotationConfiguration;
|
||||
import org.springframework.statemachine.config.common.annotation.AnnotationConfigurer;
|
||||
import org.springframework.statemachine.config.model.DefaultStateMachineModel;
|
||||
import org.springframework.statemachine.config.model.StateMachineConfigurationConfig;
|
||||
import org.springframework.statemachine.config.model.StateMachineStates;
|
||||
import org.springframework.statemachine.config.model.StateMachineTransitions;
|
||||
@@ -145,7 +146,7 @@ public class StateMachineConfiguration<S, E> extends
|
||||
StateMachineStates<S, E> stateMachineStates = stateMachineConfig.getStates();
|
||||
StateMachineConfigurationConfig<S, E> stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig();
|
||||
ObjectStateMachineFactory<S, E> stateMachineFactory = new ObjectStateMachineFactory<S, E>(
|
||||
stateMachineConfigurationConfig, stateMachineTransitions, stateMachineStates);
|
||||
new DefaultStateMachineModel<S, E>(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions));
|
||||
stateMachineFactory.setBeanFactory(getBeanFactory());
|
||||
stateMachineFactory.setContextEventsEnabled(contextEvents);
|
||||
stateMachineFactory.setBeanName(beanName);
|
||||
|
||||
@@ -39,6 +39,7 @@ import org.springframework.statemachine.config.StateMachineFactory;
|
||||
import org.springframework.statemachine.config.builders.StateMachineConfigBuilder;
|
||||
import org.springframework.statemachine.config.common.annotation.AbstractImportingAnnotationConfiguration;
|
||||
import org.springframework.statemachine.config.common.annotation.AnnotationConfigurer;
|
||||
import org.springframework.statemachine.config.model.DefaultStateMachineModel;
|
||||
import org.springframework.statemachine.config.model.StateMachineConfigurationConfig;
|
||||
import org.springframework.statemachine.config.model.StateMachineStates;
|
||||
import org.springframework.statemachine.config.model.StateMachineTransitions;
|
||||
@@ -134,7 +135,7 @@ public class StateMachineFactoryConfiguration<S, E> extends
|
||||
StateMachineConfigurationConfig<S, E> stateMachineConfigurationConfig = stateMachineConfig
|
||||
.getStateMachineConfigurationConfig();
|
||||
ObjectStateMachineFactory<S, E> objectStateMachineFactory = new ObjectStateMachineFactory<S, E>(
|
||||
stateMachineConfigurationConfig, stateMachineTransitions, stateMachineStates);
|
||||
new DefaultStateMachineModel<S, E>(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions));
|
||||
objectStateMachineFactory.setBeanFactory(beanFactory);
|
||||
objectStateMachineFactory.setContextEventsEnabled(contextEvents);
|
||||
// explicitly tell factory to handle auto-start because
|
||||
|
||||
@@ -35,6 +35,7 @@ import org.springframework.statemachine.config.StateMachineBuilder.Builder;
|
||||
import org.springframework.statemachine.config.builders.StateMachineConfigBuilder;
|
||||
import org.springframework.statemachine.config.builders.StateMachineStateConfigurer;
|
||||
import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer;
|
||||
import org.springframework.statemachine.config.model.DefaultStateMachineModel;
|
||||
import org.springframework.statemachine.config.model.StateMachineConfigurationConfig;
|
||||
import org.springframework.statemachine.config.model.StateMachineStates;
|
||||
import org.springframework.statemachine.config.model.StateMachineTransitions;
|
||||
@@ -54,7 +55,7 @@ public class ManualBuilderTests {
|
||||
StateMachineStates<String, String> stateMachineStates = stateMachineConfig.getStates();
|
||||
StateMachineConfigurationConfig<String, String> stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig();
|
||||
ObjectStateMachineFactory<String, String> stateMachineFactory = new ObjectStateMachineFactory<String, String>(
|
||||
stateMachineConfigurationConfig, stateMachineTransitions, stateMachineStates);
|
||||
new DefaultStateMachineModel<String, String>(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions));
|
||||
|
||||
StaticListableBeanFactory beanFactory = new StaticListableBeanFactory();
|
||||
beanFactory.addBean(StateMachineSystemConstants.TASK_EXECUTOR_BEAN_NAME, new SyncTaskExecutor());
|
||||
|
||||
Reference in New Issue
Block a user