diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/AbstractStateMachineFactory.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/AbstractStateMachineFactory.java index 5ad70845..4c12b6f8 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/AbstractStateMachineFactory.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/AbstractStateMachineFactory.java @@ -39,11 +39,9 @@ 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.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; +import org.springframework.statemachine.config.model.TransitionsData; import org.springframework.statemachine.config.model.verifier.CompositeStateMachineModelVerifier; import org.springframework.statemachine.config.model.verifier.StateMachineModelVerifier; import org.springframework.statemachine.ensemble.DistributedStateMachine; @@ -91,12 +89,6 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS private final Log log = LogFactory.getLog(AbstractStateMachineFactory.class); - private final StateMachineTransitions stateMachineTransitions; - - private final StateMachineStates stateMachineStates; - - private final StateMachineConfigurationConfig stateMachineConfigurationConfig; - private final StateMachineModel stateMachineModel; private Boolean contextEvents; @@ -113,9 +105,6 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS public AbstractStateMachineFactory(StateMachineModel stateMachineModel) { Assert.notNull(stateMachineModel, "StateMachineModel must be set"); this.stateMachineModel = stateMachineModel; - this.stateMachineConfigurationConfig = stateMachineModel.getConfiguration(); - this.stateMachineTransitions = stateMachineModel.getTransitions(); - this.stateMachineStates = stateMachineModel.getStates(); } @Override @@ -126,8 +115,8 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS @SuppressWarnings("unchecked") @Override public StateMachine getStateMachine() { - if (stateMachineConfigurationConfig.isVerifierEnabled()) { - StateMachineModelVerifier verifier = stateMachineConfigurationConfig.getVerifier(); + if (stateMachineModel.getConfigurationData().isVerifierEnabled()) { + StateMachineModelVerifier verifier = stateMachineModel.getConfigurationData().getVerifier(); if (verifier == null) { verifier = new CompositeStateMachineModelVerifier(); } @@ -183,7 +172,7 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS if (initialCount > 1) { for (Collection> regionStateDatas : regionsStateDatas) { machine = buildMachine(machineMap, stateMap, regionStateDatas, transitionsData, resolveBeanFactory(), - contextEvents, defaultExtendedState, stateMachineTransitions, resolveTaskExecutor(), + contextEvents, defaultExtendedState, stateMachineModel.getTransitionsData(), resolveTaskExecutor(), resolveTaskScheduler()); regionStack.push(new MachineStackItem(machine)); } @@ -210,7 +199,7 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS } } else { machine = buildMachine(machineMap, stateMap, stateDatas, transitionsData, resolveBeanFactory(), - contextEvents, defaultExtendedState, stateMachineTransitions, resolveTaskExecutor(), resolveTaskScheduler()); + contextEvents, defaultExtendedState, stateMachineModel.getTransitionsData(), resolveTaskExecutor(), resolveTaskScheduler()); if (peek.isInitial() || (!peek.isInitial() && !machineMap.containsKey(peek.getParent()))) { machineMap.put(peek.getParent(), machine); } @@ -221,7 +210,7 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS // setup autostart for top-level machine if (machine instanceof LifecycleObjectSupport) { - ((LifecycleObjectSupport)machine).setAutoStartup(stateMachineConfigurationConfig.isAutoStart()); + ((LifecycleObjectSupport)machine).setAutoStartup(stateMachineModel.getConfigurationData().isAutoStart()); } // set top-level machine as relay @@ -235,11 +224,11 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS }); // TODO: should error out if sec is enabled but spring-security is not in cp - if (stateMachineConfigurationConfig.isSecurityEnabled()) { + if (stateMachineModel.getConfigurationData().isSecurityEnabled()) { final StateMachineSecurityInterceptor securityInterceptor = new StateMachineSecurityInterceptor( - stateMachineConfigurationConfig.getTransitionSecurityAccessDecisionManager(), - stateMachineConfigurationConfig.getEventSecurityAccessDecisionManager(), - stateMachineConfigurationConfig.getEventSecurityRule()); + stateMachineModel.getConfigurationData().getTransitionSecurityAccessDecisionManager(), + stateMachineModel.getConfigurationData().getEventSecurityAccessDecisionManager(), + stateMachineModel.getConfigurationData().getEventSecurityRule()); log.info("Adding security interceptor " + securityInterceptor); fmachine.getStateMachineAccessor().doWithAllRegions(new StateMachineFunction>() { @@ -253,15 +242,15 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS // setup distributed state machine if needed. // we wrap previously build machine with a distributed // state machine and set it to use given ensemble. - if (stateMachineConfigurationConfig.getStateMachineEnsemble() != null) { + if (stateMachineModel.getConfigurationData().getStateMachineEnsemble() != null) { DistributedStateMachine distributedStateMachine = new DistributedStateMachine( - stateMachineConfigurationConfig.getStateMachineEnsemble(), machine); - distributedStateMachine.setAutoStartup(stateMachineConfigurationConfig.isAutoStart()); + stateMachineModel.getConfigurationData().getStateMachineEnsemble(), machine); + distributedStateMachine.setAutoStartup(stateMachineModel.getConfigurationData().isAutoStart()); distributedStateMachine.afterPropertiesSet(); machine = distributedStateMachine; } - for (StateMachineListener listener : stateMachineConfigurationConfig.getStateMachineListeners()) { + for (StateMachineListener listener : stateMachineModel.getConfigurationData().getStateMachineListeners()) { machine.addStateListener(listener); } @@ -295,24 +284,24 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS } private BeanFactory resolveBeanFactory() { - if (stateMachineConfigurationConfig.getBeanFactory() != null) { - return stateMachineConfigurationConfig.getBeanFactory(); + if (stateMachineModel.getConfigurationData().getBeanFactory() != null) { + return stateMachineModel.getConfigurationData().getBeanFactory(); } else { return getBeanFactory(); } } private TaskExecutor resolveTaskExecutor() { - if (stateMachineConfigurationConfig.getTaskExecutor() != null) { - return stateMachineConfigurationConfig.getTaskExecutor(); + if (stateMachineModel.getConfigurationData().getTaskExecutor() != null) { + return stateMachineModel.getConfigurationData().getTaskExecutor(); } else { return getTaskExecutor(); } } private TaskScheduler resolveTaskScheduler() { - if (stateMachineConfigurationConfig.getTaskScheduler() != null) { - return stateMachineConfigurationConfig.getTaskScheduler(); + if (stateMachineModel.getConfigurationData().getTaskScheduler() != null) { + return stateMachineModel.getConfigurationData().getTaskScheduler(); } else { return getTaskScheduler(); } @@ -343,9 +332,9 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS private Collection> getTransitionData(boolean roots, Collection> stateDatas) { if (roots) { - return resolveTransitionData(stateMachineTransitions.getTransitions(), stateDatas); + return resolveTransitionData(stateMachineModel.getTransitionsData().getTransitions(), stateDatas); } else { - return resolveTransitionData2(stateMachineTransitions.getTransitions()); + return resolveTransitionData2(stateMachineModel.getTransitionsData().getTransitions()); } } @@ -405,7 +394,7 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS Map> machineMap, Map> stateMap, Collection> stateDatas, Collection> transitionsData, BeanFactory beanFactory, Boolean contextEvents, DefaultExtendedState defaultExtendedState, - StateMachineTransitions stateMachineTransitions, TaskExecutor taskExecutor, + TransitionsData stateMachineTransitions, TaskExecutor taskExecutor, TaskScheduler taskScheduler) { State state = null; State initialState = null; @@ -606,7 +595,7 @@ public abstract class AbstractStateMachineFactory extends LifecycleObjectS private Iterator>> buildStateDataIterator() { Tree> tree = new Tree>(); - for (StateData stateData : stateMachineStates.getStateDatas()) { + for (StateData stateData : stateMachineModel.getStatesData().getStateData()) { Object id = stateData.getState(); Object parent = stateData.getParent(); tree.add(stateData, id, parent); diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/StateMachineBuilder.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/StateMachineBuilder.java index ef5b0968..e7c8fda2 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/StateMachineBuilder.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/StateMachineBuilder.java @@ -30,9 +30,9 @@ import org.springframework.statemachine.config.builders.StateMachineTransitionCo 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; +import org.springframework.statemachine.config.model.ConfigurationData; +import org.springframework.statemachine.config.model.StatesData; +import org.springframework.statemachine.config.model.TransitionsData; /** * {@code StateMachineBuilder} provides a builder pattern for @@ -112,9 +112,9 @@ public class StateMachineBuilder { builder.apply(adapter); StateMachineConfig stateMachineConfig = builder.getOrBuild(); - StateMachineTransitions stateMachineTransitions = stateMachineConfig.getTransitions(); - StateMachineStates stateMachineStates = stateMachineConfig.getStates(); - StateMachineConfigurationConfig stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig(); + TransitionsData stateMachineTransitions = stateMachineConfig.getTransitions(); + StatesData stateMachineStates = stateMachineConfig.getStates(); + ConfigurationData stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig(); ObjectStateMachineFactory stateMachineFactory = new ObjectStateMachineFactory( new DefaultStateMachineModel(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions)); diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/StateMachineConfig.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/StateMachineConfig.java index 4a90e1e3..d9e06a2e 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/StateMachineConfig.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/StateMachineConfig.java @@ -15,33 +15,33 @@ */ package org.springframework.statemachine.config; -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.ConfigurationData; +import org.springframework.statemachine.config.model.StatesData; +import org.springframework.statemachine.config.model.TransitionsData; public class StateMachineConfig { - public final StateMachineConfigurationConfig stateMachineConfigurationConfig; + public final ConfigurationData stateMachineConfigurationConfig; - public final StateMachineTransitions transitions; + public final TransitionsData transitions; - public final StateMachineStates states; + public final StatesData states; - public StateMachineConfig(StateMachineConfigurationConfig stateMachineConfigurationConfig, StateMachineTransitions transitions, StateMachineStates states) { + public StateMachineConfig(ConfigurationData stateMachineConfigurationConfig, TransitionsData transitions, StatesData states) { this.stateMachineConfigurationConfig = stateMachineConfigurationConfig; this.transitions = transitions; this.states = states; } - public StateMachineConfigurationConfig getStateMachineConfigurationConfig() { + public ConfigurationData getStateMachineConfigurationConfig() { return stateMachineConfigurationConfig; } - public StateMachineTransitions getTransitions() { + public TransitionsData getTransitions() { return transitions; } - public StateMachineStates getStates() { + public StatesData getStates() { return states; } diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineConfigBuilder.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineConfigBuilder.java index 821a6a08..604f8bd2 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineConfigBuilder.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineConfigBuilder.java @@ -17,9 +17,9 @@ package org.springframework.statemachine.config.builders; import org.springframework.statemachine.config.StateMachineConfig; import org.springframework.statemachine.config.common.annotation.AbstractConfiguredAnnotationBuilder; -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.ConfigurationData; +import org.springframework.statemachine.config.model.StatesData; +import org.springframework.statemachine.config.model.TransitionsData; public class StateMachineConfigBuilder extends @@ -33,10 +33,10 @@ public class StateMachineConfigBuilder StateMachineStateBuilder stateBuilder = getSharedObject(StateMachineStateBuilder.class); // build config first as it's shared with transition builder - StateMachineConfigurationConfig config = (StateMachineConfigurationConfig) configurationBuilder.build(); - transitionBuilder.setSharedObject(StateMachineConfigurationConfig.class, config); - StateMachineTransitions transitions = (StateMachineTransitions) transitionBuilder.build(); - StateMachineStates states = (StateMachineStates) stateBuilder.build(); + ConfigurationData config = (ConfigurationData) configurationBuilder.build(); + transitionBuilder.setSharedObject(ConfigurationData.class, config); + TransitionsData transitions = (TransitionsData) transitionBuilder.build(); + StatesData states = (StatesData) stateBuilder.build(); StateMachineConfig bean = new StateMachineConfig(config, transitions, states); return bean; } diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineConfigurationBuilder.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineConfigurationBuilder.java index 0db72453..626058b0 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineConfigurationBuilder.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineConfigurationBuilder.java @@ -33,15 +33,15 @@ import org.springframework.statemachine.config.configurers.DefaultVerifierConfig import org.springframework.statemachine.config.configurers.DistributedStateMachineConfigurer; import org.springframework.statemachine.config.configurers.SecurityConfigurer; import org.springframework.statemachine.config.configurers.VerifierConfigurer; -import org.springframework.statemachine.config.model.StateMachineConfigurationConfig; -import org.springframework.statemachine.config.model.StateMachineStates; +import org.springframework.statemachine.config.model.ConfigurationData; +import org.springframework.statemachine.config.model.StatesData; import org.springframework.statemachine.config.model.verifier.StateMachineModelVerifier; import org.springframework.statemachine.ensemble.StateMachineEnsemble; import org.springframework.statemachine.listener.StateMachineListener; import org.springframework.statemachine.security.SecurityRule; /** - * {@link AnnotationBuilder} for {@link StateMachineStates}. + * {@link AnnotationBuilder} for {@link StatesData}. * * @author Janne Valkealahti * @@ -49,7 +49,7 @@ import org.springframework.statemachine.security.SecurityRule; * @param the type of event */ public class StateMachineConfigurationBuilder - extends AbstractConfiguredAnnotationBuilder, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> + extends AbstractConfiguredAnnotationBuilder, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> implements StateMachineConfigurationConfigurer { private BeanFactory beanFactory; @@ -114,8 +114,8 @@ public class StateMachineConfigurationBuilder } @Override - protected StateMachineConfigurationConfig performBuild() throws Exception { - return new StateMachineConfigurationConfig(beanFactory, taskExecutor, taskScheculer, autoStart, ensemble, listeners, + protected ConfigurationData performBuild() throws Exception { + return new ConfigurationData(beanFactory, taskExecutor, taskScheculer, autoStart, ensemble, listeners, securityEnabled, transitionSecurityAccessDecisionManager, eventSecurityAccessDecisionManager, eventSecurityRule, transitionSecurityRule, verifierEnabled, verifier); } diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineStateBuilder.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineStateBuilder.java index 7ebe0a05..8fa2bc13 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineStateBuilder.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineStateBuilder.java @@ -24,10 +24,10 @@ import org.springframework.statemachine.config.common.annotation.ObjectPostProce import org.springframework.statemachine.config.configurers.DefaultStateConfigurer; import org.springframework.statemachine.config.configurers.StateConfigurer; import org.springframework.statemachine.config.model.StateData; -import org.springframework.statemachine.config.model.StateMachineStates; +import org.springframework.statemachine.config.model.StatesData; /** - * {@link AnnotationBuilder} for {@link StateMachineStates}. + * {@link AnnotationBuilder} for {@link StatesData}. * * @author Janne Valkealahti * @@ -35,7 +35,7 @@ import org.springframework.statemachine.config.model.StateMachineStates; * @param the type of event */ public class StateMachineStateBuilder - extends AbstractConfiguredAnnotationBuilder, StateMachineStateConfigurer, StateMachineStateBuilder> + extends AbstractConfiguredAnnotationBuilder, StateMachineStateConfigurer, StateMachineStateBuilder> implements StateMachineStateConfigurer { private final Collection> stateDatas = new ArrayList>(); @@ -54,8 +54,8 @@ public class StateMachineStateBuilder } @Override - protected StateMachineStates performBuild() throws Exception { - return new StateMachineStates(stateDatas); + protected StatesData performBuild() throws Exception { + return new StatesData(stateDatas); } @Override diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineTransitionBuilder.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineTransitionBuilder.java index 678f26b7..5d70ad86 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineTransitionBuilder.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/builders/StateMachineTransitionBuilder.java @@ -38,15 +38,15 @@ import org.springframework.statemachine.config.configurers.InternalTransitionCon import org.springframework.statemachine.config.configurers.JoinTransitionConfigurer; import org.springframework.statemachine.config.configurers.LocalTransitionConfigurer; import org.springframework.statemachine.config.model.ChoiceData; -import org.springframework.statemachine.config.model.StateMachineConfigurationConfig; -import org.springframework.statemachine.config.model.StateMachineTransitions; +import org.springframework.statemachine.config.model.ConfigurationData; +import org.springframework.statemachine.config.model.TransitionsData; import org.springframework.statemachine.config.model.TransitionData; import org.springframework.statemachine.guard.Guard; import org.springframework.statemachine.security.SecurityRule; import org.springframework.statemachine.transition.TransitionKind; /** - * {@link AnnotationBuilder} for {@link StateMachineTransitions}. + * {@link AnnotationBuilder} for {@link TransitionsData}. * * @author Janne Valkealahti * @@ -55,7 +55,7 @@ import org.springframework.statemachine.transition.TransitionKind; */ public class StateMachineTransitionBuilder extends - AbstractConfiguredAnnotationBuilder, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> + AbstractConfiguredAnnotationBuilder, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> implements StateMachineTransitionConfigurer { private final Collection> transitionData = new ArrayList>(); @@ -77,8 +77,8 @@ public class StateMachineTransitionBuilder } @Override - protected StateMachineTransitions performBuild() throws Exception { - return new StateMachineTransitions(transitionData, choices, forks, joins); + protected TransitionsData performBuild() throws Exception { + return new TransitionsData(transitionData, choices, forks, joins); } @Override @@ -116,7 +116,7 @@ public class StateMachineTransitionBuilder // if rule not given, get it from global if (securityRule == null) { @SuppressWarnings("unchecked") - StateMachineConfigurationConfig config = getSharedObject(StateMachineConfigurationConfig.class); + ConfigurationData config = getSharedObject(ConfigurationData.class); securityRule = config.getTransitionSecurityRule(); } transitionData.add(new TransitionData(source, target, state, event, period, count, actions, guard, kind, securityRule)); diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configuration/StateMachineConfiguration.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configuration/StateMachineConfiguration.java index 238661f5..341c3815 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configuration/StateMachineConfiguration.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configuration/StateMachineConfiguration.java @@ -39,9 +39,9 @@ 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; +import org.springframework.statemachine.config.model.ConfigurationData; +import org.springframework.statemachine.config.model.StatesData; +import org.springframework.statemachine.config.model.TransitionsData; import org.springframework.util.ClassUtils; import org.springframework.util.StringUtils; @@ -142,9 +142,9 @@ public class StateMachineConfiguration extends } } StateMachineConfig stateMachineConfig = getBuilder().getOrBuild(); - StateMachineTransitions stateMachineTransitions = stateMachineConfig.getTransitions(); - StateMachineStates stateMachineStates = stateMachineConfig.getStates(); - StateMachineConfigurationConfig stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig(); + TransitionsData stateMachineTransitions = stateMachineConfig.getTransitions(); + StatesData stateMachineStates = stateMachineConfig.getStates(); + ConfigurationData stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig(); ObjectStateMachineFactory stateMachineFactory = new ObjectStateMachineFactory( new DefaultStateMachineModel(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions)); stateMachineFactory.setBeanFactory(getBeanFactory()); diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configuration/StateMachineFactoryConfiguration.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configuration/StateMachineFactoryConfiguration.java index fd2766e7..2e938045 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configuration/StateMachineFactoryConfiguration.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configuration/StateMachineFactoryConfiguration.java @@ -40,9 +40,9 @@ import org.springframework.statemachine.config.builders.StateMachineConfigBuilde 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; +import org.springframework.statemachine.config.model.ConfigurationData; +import org.springframework.statemachine.config.model.StatesData; +import org.springframework.statemachine.config.model.TransitionsData; import org.springframework.util.ClassUtils; /** @@ -130,9 +130,9 @@ public class StateMachineFactoryConfiguration extends } } StateMachineConfig stateMachineConfig = builder.getOrBuild(); - StateMachineTransitions stateMachineTransitions = stateMachineConfig.getTransitions(); - StateMachineStates stateMachineStates = stateMachineConfig.getStates(); - StateMachineConfigurationConfig stateMachineConfigurationConfig = stateMachineConfig + TransitionsData stateMachineTransitions = stateMachineConfig.getTransitions(); + StatesData stateMachineStates = stateMachineConfig.getStates(); + ConfigurationData stateMachineConfigurationConfig = stateMachineConfig .getStateMachineConfigurationConfig(); ObjectStateMachineFactory objectStateMachineFactory = new ObjectStateMachineFactory( new DefaultStateMachineModel(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions)); diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/AbstractTransitionConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/AbstractTransitionConfigurer.java index c5c84949..25365282 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/AbstractTransitionConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/AbstractTransitionConfigurer.java @@ -22,7 +22,7 @@ import org.springframework.statemachine.action.Action; import org.springframework.statemachine.config.builders.StateMachineTransitionBuilder; import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; -import org.springframework.statemachine.config.model.StateMachineTransitions; +import org.springframework.statemachine.config.model.TransitionsData; import org.springframework.statemachine.guard.Guard; import org.springframework.statemachine.security.SecurityRule; import org.springframework.statemachine.security.SecurityRule.ComparisonType; @@ -36,7 +36,7 @@ import org.springframework.statemachine.security.SecurityRule.ComparisonType; * @param the type of event */ public abstract class AbstractTransitionConfigurer extends - AnnotationConfigurerAdapter, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> { + AnnotationConfigurerAdapter, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> { private S source; private S target; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultChoiceTransitionConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultChoiceTransitionConfigurer.java index 39fc63c2..0fe21ff2 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultChoiceTransitionConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultChoiceTransitionConfigurer.java @@ -22,7 +22,7 @@ import org.springframework.statemachine.config.builders.StateMachineTransitionBu import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; import org.springframework.statemachine.config.model.ChoiceData; -import org.springframework.statemachine.config.model.StateMachineTransitions; +import org.springframework.statemachine.config.model.TransitionsData; import org.springframework.statemachine.guard.Guard; /** @@ -34,7 +34,7 @@ import org.springframework.statemachine.guard.Guard; * @param the type of event */ public class DefaultChoiceTransitionConfigurer - extends AnnotationConfigurerAdapter, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> + extends AnnotationConfigurerAdapter, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> implements ChoiceTransitionConfigurer { private S source; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultConfigurationConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultConfigurationConfigurer.java index b78e01d1..dcad9753 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultConfigurationConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultConfigurationConfigurer.java @@ -24,7 +24,7 @@ import org.springframework.scheduling.TaskScheduler; import org.springframework.statemachine.config.builders.StateMachineConfigurationBuilder; import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; -import org.springframework.statemachine.config.model.StateMachineConfigurationConfig; +import org.springframework.statemachine.config.model.ConfigurationData; import org.springframework.statemachine.listener.StateMachineListener; /** @@ -36,7 +36,7 @@ import org.springframework.statemachine.listener.StateMachineListener; * @param the type of event */ public class DefaultConfigurationConfigurer - extends AnnotationConfigurerAdapter, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> + extends AnnotationConfigurerAdapter, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> implements ConfigurationConfigurer { private BeanFactory beanFactory; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultDistributedStateMachineConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultDistributedStateMachineConfigurer.java index 2a2d6051..13cc0cfd 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultDistributedStateMachineConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultDistributedStateMachineConfigurer.java @@ -18,7 +18,7 @@ package org.springframework.statemachine.config.configurers; import org.springframework.statemachine.config.builders.StateMachineConfigurationBuilder; import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; -import org.springframework.statemachine.config.model.StateMachineConfigurationConfig; +import org.springframework.statemachine.config.model.ConfigurationData; import org.springframework.statemachine.ensemble.StateMachineEnsemble; /** @@ -30,7 +30,7 @@ import org.springframework.statemachine.ensemble.StateMachineEnsemble; * @param the type of event */ public class DefaultDistributedStateMachineConfigurer - extends AnnotationConfigurerAdapter, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> + extends AnnotationConfigurerAdapter, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> implements DistributedStateMachineConfigurer { private StateMachineEnsemble ensemble; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultForkTransitionConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultForkTransitionConfigurer.java index 5683f8d9..d9b02327 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultForkTransitionConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultForkTransitionConfigurer.java @@ -21,7 +21,7 @@ import java.util.List; import org.springframework.statemachine.config.builders.StateMachineTransitionBuilder; import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; -import org.springframework.statemachine.config.model.StateMachineTransitions; +import org.springframework.statemachine.config.model.TransitionsData; /** * Default implementation of a {@link ForkTransitionConfigurer}. @@ -32,7 +32,7 @@ import org.springframework.statemachine.config.model.StateMachineTransitions; * @param the type of event */ public class DefaultForkTransitionConfigurer - extends AnnotationConfigurerAdapter, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> + extends AnnotationConfigurerAdapter, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> implements ForkTransitionConfigurer { private S source; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultJoinTransitionConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultJoinTransitionConfigurer.java index 43da0cef..c7348fa2 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultJoinTransitionConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultJoinTransitionConfigurer.java @@ -22,7 +22,7 @@ import java.util.List; import org.springframework.statemachine.config.builders.StateMachineTransitionBuilder; import org.springframework.statemachine.config.builders.StateMachineTransitionConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; -import org.springframework.statemachine.config.model.StateMachineTransitions; +import org.springframework.statemachine.config.model.TransitionsData; /** * Default implementation of a {@link JoinTransitionConfigurer}. @@ -33,7 +33,7 @@ import org.springframework.statemachine.config.model.StateMachineTransitions; * @param the type of event */ public class DefaultJoinTransitionConfigurer - extends AnnotationConfigurerAdapter, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> + extends AnnotationConfigurerAdapter, StateMachineTransitionConfigurer, StateMachineTransitionBuilder> implements JoinTransitionConfigurer { private S target; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultSecurityConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultSecurityConfigurer.java index 600d7c1a..6deb3707 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultSecurityConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultSecurityConfigurer.java @@ -19,7 +19,7 @@ import org.springframework.security.access.AccessDecisionManager; import org.springframework.statemachine.config.builders.StateMachineConfigurationBuilder; import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; -import org.springframework.statemachine.config.model.StateMachineConfigurationConfig; +import org.springframework.statemachine.config.model.ConfigurationData; import org.springframework.statemachine.security.SecurityRule; import org.springframework.statemachine.security.SecurityRule.ComparisonType; @@ -32,7 +32,7 @@ import org.springframework.statemachine.security.SecurityRule.ComparisonType; * @param the type of event */ public class DefaultSecurityConfigurer - extends AnnotationConfigurerAdapter, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> + extends AnnotationConfigurerAdapter, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> implements SecurityConfigurer { private boolean enabled = true; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultStateConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultStateConfigurer.java index ec58bd02..ef9408d3 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultStateConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultStateConfigurer.java @@ -28,7 +28,7 @@ import org.springframework.statemachine.config.builders.StateMachineStateBuilder import org.springframework.statemachine.config.builders.StateMachineStateConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; import org.springframework.statemachine.config.model.StateData; -import org.springframework.statemachine.config.model.StateMachineStates; +import org.springframework.statemachine.config.model.StatesData; import org.springframework.statemachine.state.PseudoStateKind; /** @@ -40,7 +40,7 @@ import org.springframework.statemachine.state.PseudoStateKind; * @param the type of event */ public class DefaultStateConfigurer - extends AnnotationConfigurerAdapter, StateMachineStateConfigurer, StateMachineStateBuilder> + extends AnnotationConfigurerAdapter, StateMachineStateConfigurer, StateMachineStateBuilder> implements StateConfigurer { private Object parent; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultVerifierConfigurer.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultVerifierConfigurer.java index c0dc51e5..8164566f 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultVerifierConfigurer.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/configurers/DefaultVerifierConfigurer.java @@ -18,7 +18,7 @@ package org.springframework.statemachine.config.configurers; import org.springframework.statemachine.config.builders.StateMachineConfigurationBuilder; import org.springframework.statemachine.config.builders.StateMachineConfigurationConfigurer; import org.springframework.statemachine.config.common.annotation.AnnotationConfigurerAdapter; -import org.springframework.statemachine.config.model.StateMachineConfigurationConfig; +import org.springframework.statemachine.config.model.ConfigurationData; import org.springframework.statemachine.config.model.verifier.CompositeStateMachineModelVerifier; import org.springframework.statemachine.config.model.verifier.StateMachineModelVerifier; @@ -31,7 +31,7 @@ import org.springframework.statemachine.config.model.verifier.StateMachineModelV * @param the type of event */ public class DefaultVerifierConfigurer - extends AnnotationConfigurerAdapter, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> + extends AnnotationConfigurerAdapter, StateMachineConfigurationConfigurer, StateMachineConfigurationBuilder> implements VerifierConfigurer { private boolean enabled = true; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineConfigurationConfig.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/ConfigurationData.java similarity index 97% rename from spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineConfigurationConfig.java rename to spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/ConfigurationData.java index f8d15775..8fc8e967 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineConfigurationConfig.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/ConfigurationData.java @@ -35,7 +35,7 @@ import org.springframework.statemachine.security.SecurityRule; * @param the type of state * @param the type of event */ -public class StateMachineConfigurationConfig { +public class ConfigurationData { private final BeanFactory beanFactory; private final TaskExecutor taskExecutor; @@ -68,7 +68,7 @@ public class StateMachineConfigurationConfig { * @param verifierEnabled the verifier enabled flag * @param verifier the state machine model verifier */ - public StateMachineConfigurationConfig(BeanFactory beanFactory, TaskExecutor taskExecutor, + public ConfigurationData(BeanFactory beanFactory, TaskExecutor taskExecutor, TaskScheduler taskScheduler, boolean autoStart, StateMachineEnsemble ensemble, List> listeners, boolean securityEnabled, AccessDecisionManager transitionSecurityAccessDecisionManager, AccessDecisionManager eventSecurityAccessDecisionManager, diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/DefaultStateMachineModel.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/DefaultStateMachineModel.java index 9439d9d4..9c71d4b2 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/DefaultStateMachineModel.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/DefaultStateMachineModel.java @@ -15,6 +15,8 @@ */ package org.springframework.statemachine.config.model; +import org.springframework.util.Assert; + /** * Default implementation of a {@link StateMachineModel}. * @@ -25,36 +27,39 @@ package org.springframework.statemachine.config.model; */ public class DefaultStateMachineModel extends StateMachineModel { - private final StateMachineConfigurationConfig configuration; - private final StateMachineStates states; - private final StateMachineTransitions transitions; + private final ConfigurationData configuration; + private final StatesData states; + private final TransitionsData transitions; /** * Instantiates a new default state machine model. * - * @param configuration the configuration - * @param states the states - * @param transitions the transitions + * @param configurationData the configuration + * @param statesData the states + * @param transitionsData the transitions */ - public DefaultStateMachineModel(StateMachineConfigurationConfig configuration, StateMachineStates states, - StateMachineTransitions transitions) { - this.configuration = configuration; - this.states = states; - this.transitions = transitions; + public DefaultStateMachineModel(ConfigurationData configurationData, StatesData statesData, + TransitionsData transitionsData) { + Assert.notNull(configurationData, "Configuration must be set"); + Assert.notNull(statesData, "States must be set"); + Assert.notNull(transitionsData, "Transitions must be set"); + this.configuration = configurationData; + this.states = statesData; + this.transitions = transitionsData; } @Override - public StateMachineConfigurationConfig getConfiguration() { + public ConfigurationData getConfigurationData() { return configuration; } @Override - public StateMachineStates getStates() { + public StatesData getStatesData() { return states; } @Override - public StateMachineTransitions getTransitions() { + public TransitionsData getTransitionsData() { return transitions; } } diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateData.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateData.java index 62f32c94..61b4c05c 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateData.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateData.java @@ -45,6 +45,16 @@ public class StateData { private boolean end = false; private PseudoStateKind pseudoStateKind; + /** + * Instantiates a new state data. + * + * @param parent the parent + * @param region the region + * @param state the state + * @param deferred the deferred + * @param entryActions the entry actions + * @param exitActions the exit actions + */ public StateData(Object parent, Object region, S state, Collection deferred, Collection> entryActions, Collection> exitActions) { this.state = state; @@ -55,58 +65,128 @@ public class StateData { this.region = region; } + /** + * Gets the state. + * + * @return the state + */ public S getState() { return state; } + /** + * Gets the deferred. + * + * @return the deferred + */ public Collection getDeferred() { return deferred; } + /** + * Sets the deferred. + * + * @param deferred the new deferred + */ public void setDeferred(Collection deferred) { this.deferred = deferred; } + /** + * Gets the entry actions. + * + * @return the entry actions + */ public Collection> getEntryActions() { return entryActions; } + /** + * Sets the entry actions. + * + * @param entryActions the entry actions + */ public void setEntryActions(Collection> entryActions) { this.entryActions = entryActions; } + /** + * Gets the exit actions. + * + * @return the exit actions + */ public Collection> getExitActions() { return exitActions; } + /** + * Sets the exit actions. + * + * @param exitActions the exit actions + */ public void setExitActions(Collection> exitActions) { this.exitActions = exitActions; } + /** + * Gets the parent. + * + * @return the parent + */ public Object getParent() { return parent; } + /** + * Sets the parent. + * + * @param parent the new parent + */ public void setParent(Object parent) { this.parent = parent; } + /** + * Gets the region. + * + * @return the region + */ public Object getRegion() { return region; } + /** + * Sets the region. + * + * @param region the new region + */ public void setRegion(Object region) { this.region = region; } + /** + * Checks if is initial. + * + * @return true, if is initial + */ public boolean isInitial() { return initial; } + /** + * Sets the initial. + * + * @param initial the new initial + */ public void setInitial(boolean initial) { this.initial = initial; } + /** + * Sets the initial action. + * + * @param action the action + */ public void setInitialAction(Action action) { this.initialAction = action; } @@ -115,18 +195,38 @@ public class StateData { return initialAction; } + /** + * Checks if is end. + * + * @return true, if is end + */ public boolean isEnd() { return end; } + /** + * Sets the end. + * + * @param end the new end + */ public void setEnd(boolean end) { this.end = end; } + /** + * Gets the pseudo state kind. + * + * @return the pseudo state kind + */ public PseudoStateKind getPseudoStateKind() { return pseudoStateKind; } + /** + * Sets the pseudo state kind. + * + * @param pseudoStateKind the new pseudo state kind + */ public void setPseudoStateKind(PseudoStateKind pseudoStateKind) { this.pseudoStateKind = pseudoStateKind; } diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineModel.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineModel.java index 93ab7cc8..9d79178b 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineModel.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineModel.java @@ -26,23 +26,23 @@ package org.springframework.statemachine.config.model; public abstract class StateMachineModel { /** - * Gets the configuration config. + * Gets the configuration config data. * - * @return the configuration config + * @return the configuration config data */ - public abstract StateMachineConfigurationConfig getConfiguration(); + public abstract ConfigurationData getConfigurationData(); /** - * Gets the states config. + * Gets the states config data. * - * @return the states config + * @return the states config data */ - public abstract StateMachineStates getStates(); + public abstract StatesData getStatesData(); /** - * Gets the transitions config. + * Gets the transitions config data. * - * @return the transitions config + * @return the transitions config data */ - public abstract StateMachineTransitions getTransitions(); + public abstract TransitionsData getTransitionsData(); } diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineStates.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StatesData.java similarity index 70% rename from spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineStates.java rename to spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StatesData.java index 725de1de..b5323713 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineStates.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StatesData.java @@ -27,16 +27,26 @@ import org.springframework.statemachine.config.configurers.StateConfigurer; * @param the type of state * @param the type of event */ -public class StateMachineStates { +public class StatesData { - private final Collection> stateDatas; + private final Collection> stateData; - public StateMachineStates(Collection> stateDatas) { - this.stateDatas = stateDatas; + /** + * Instantiates a new states data. + * + * @param stateData the state data + */ + public StatesData(Collection> stateData) { + this.stateData = stateData; } - public Collection> getStateDatas() { - return stateDatas; + /** + * Gets the state data. + * + * @return the state data + */ + public Collection> getStateData() { + return stateData; } } diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/TransitionData.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/TransitionData.java index dcad8352..2330aef3 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/TransitionData.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/TransitionData.java @@ -1,5 +1,5 @@ /* - * Copyright 2016 the original author or authors. + * Copyright 2015-2016 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineTransitions.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/TransitionsData.java similarity index 94% rename from spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineTransitions.java rename to spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/TransitionsData.java index 4097c40e..9d9c9fad 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/StateMachineTransitions.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/TransitionsData.java @@ -27,7 +27,7 @@ import java.util.Map; * @param the type of state * @param the type of event */ -public class StateMachineTransitions { +public class TransitionsData { private final Collection> transitions; private final Map>> choices; @@ -42,7 +42,7 @@ public class StateMachineTransitions { * @param forks the forks * @param joins the joins */ - public StateMachineTransitions(Collection> transitions, + public TransitionsData(Collection> transitions, Map>> choices, Map> forks, Map> joins) { this.transitions = transitions; this.choices = choices; diff --git a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/verifier/BaseStructureVerifier.java b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/verifier/BaseStructureVerifier.java index 7e4e461e..9426ea60 100644 --- a/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/verifier/BaseStructureVerifier.java +++ b/spring-statemachine-core/src/main/java/org/springframework/statemachine/config/model/verifier/BaseStructureVerifier.java @@ -20,7 +20,7 @@ import java.util.Iterator; import org.springframework.statemachine.config.model.MalformedConfigurationException; import org.springframework.statemachine.config.model.StateData; import org.springframework.statemachine.config.model.StateMachineModel; -import org.springframework.statemachine.config.model.StateMachineStates; +import org.springframework.statemachine.config.model.StatesData; import org.springframework.statemachine.support.tree.Tree; import org.springframework.statemachine.support.tree.Tree.Node; import org.springframework.statemachine.support.tree.TreeTraverser; @@ -39,12 +39,12 @@ public class BaseStructureVerifier implements StateMachineModelVerifier model) { // verify that we have transitions - if (model.getTransitions().getTransitions().isEmpty()) { + if (model.getTransitionsData().getTransitions().isEmpty()) { MalformedConfigurationException exception = new MalformedConfigurationException("Must have at least one transition"); throw exception; } // verify that we have initial state - Iterator>> iterator = buildStateDataIterator(model.getStates()); + Iterator>> iterator = buildStateDataIterator(model.getStatesData()); while (iterator.hasNext()) { Node> node = iterator.next(); if (node.getData() == null) { @@ -66,10 +66,10 @@ public class BaseStructureVerifier implements StateMachineModelVerifier>> buildStateDataIterator(StateMachineStates stateMachineStates) { + private Iterator>> buildStateDataIterator(StatesData stateMachineStates) { Tree> tree = new Tree>(); - for (StateData stateData : stateMachineStates.getStateDatas()) { + for (StateData stateData : stateMachineStates.getStateData()) { Object id = stateData.getState(); Object parent = stateData.getParent(); tree.add(stateData, id, parent); diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/ManualBuilderTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/ManualBuilderTests.java index d16db804..b8575525 100644 --- a/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/ManualBuilderTests.java +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/ManualBuilderTests.java @@ -36,9 +36,9 @@ import org.springframework.statemachine.config.builders.StateMachineConfigBuilde 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; +import org.springframework.statemachine.config.model.ConfigurationData; +import org.springframework.statemachine.config.model.StatesData; +import org.springframework.statemachine.config.model.TransitionsData; import org.springframework.statemachine.listener.StateMachineListenerAdapter; import org.springframework.statemachine.state.State; @@ -51,9 +51,9 @@ public class ManualBuilderTests { builder.apply(config); StateMachineConfig stateMachineConfig = builder.getOrBuild(); - StateMachineTransitions stateMachineTransitions = stateMachineConfig.getTransitions(); - StateMachineStates stateMachineStates = stateMachineConfig.getStates(); - StateMachineConfigurationConfig stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig(); + TransitionsData stateMachineTransitions = stateMachineConfig.getTransitions(); + StatesData stateMachineStates = stateMachineConfig.getStates(); + ConfigurationData stateMachineConfigurationConfig = stateMachineConfig.getStateMachineConfigurationConfig(); ObjectStateMachineFactory stateMachineFactory = new ObjectStateMachineFactory( new DefaultStateMachineModel(stateMachineConfigurationConfig, stateMachineStates, stateMachineTransitions)); diff --git a/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/model/StateMachineModelTests.java b/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/model/StateMachineModelTests.java new file mode 100644 index 00000000..6e9bc1d3 --- /dev/null +++ b/spring-statemachine-core/src/test/java/org/springframework/statemachine/config/model/StateMachineModelTests.java @@ -0,0 +1,90 @@ +/* + * Copyright 2016 the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.springframework.statemachine.config.model; + +import static org.hamcrest.Matchers.contains; +import static org.junit.Assert.assertThat; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import org.junit.Test; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.core.task.SyncTaskExecutor; +import org.springframework.core.task.TaskExecutor; +import org.springframework.scheduling.TaskScheduler; +import org.springframework.security.access.AccessDecisionManager; +import org.springframework.statemachine.StateMachine; +import org.springframework.statemachine.config.ObjectStateMachineFactory; +import org.springframework.statemachine.config.model.verifier.DefaultStateMachineModelVerifier; +import org.springframework.statemachine.config.model.verifier.StateMachineModelVerifier; +import org.springframework.statemachine.ensemble.StateMachineEnsemble; +import org.springframework.statemachine.listener.StateMachineListener; +import org.springframework.statemachine.security.SecurityRule; +import org.springframework.statemachine.transition.TransitionKind; + +public class StateMachineModelTests { + + @Test + public void testMachineManuallyViaModel() { + BeanFactory beanFactory = null; + TaskExecutor taskExecutor = new SyncTaskExecutor(); + TaskScheduler taskScheduler = null; + boolean autoStart = false; + StateMachineEnsemble ensemble = null; + List> listeners = new ArrayList<>(); + boolean securityEnabled = false; + AccessDecisionManager transitionSecurityAccessDecisionManager = null; + AccessDecisionManager eventSecurityAccessDecisionManager = null; + SecurityRule eventSecurityRule = null; + SecurityRule transitionSecurityRule = null; + boolean verifierEnabled = true; + StateMachineModelVerifier verifier = new DefaultStateMachineModelVerifier<>(); + + ConfigurationData configurationData = new ConfigurationData<>(beanFactory, taskExecutor, taskScheduler, autoStart, + ensemble, listeners, securityEnabled, transitionSecurityAccessDecisionManager, eventSecurityAccessDecisionManager, + eventSecurityRule, transitionSecurityRule, verifierEnabled, verifier); + + Collection> stateData = new ArrayList<>(); + StateData stateData1 = new StateData(null, null, "S1", null, null, null); + stateData1.setInitial(true); + stateData.add(stateData1); + StateData stateData2 = new StateData(null, null, "S2", null, null, null); + stateData.add(stateData2); + StatesData statesData = new StatesData<>(stateData); + + + Collection> transitions = new ArrayList<>(); + TransitionData transitionData1 = new TransitionData("S1", "S2", null, "E1", null, null, null, null, TransitionKind.EXTERNAL, null); + transitions.add(transitionData1); + Map>> choices = new HashMap<>(); + Map> forks = new HashMap<>(); + Map> joins = new HashMap<>(); + TransitionsData transitionsData = new TransitionsData<>(transitions, choices, forks, joins); + + StateMachineModel stateMachineModel = new DefaultStateMachineModel<>(configurationData, statesData, transitionsData); + ObjectStateMachineFactory factory = new ObjectStateMachineFactory<>(stateMachineModel); + + StateMachine stateMachine = factory.getStateMachine(); + stateMachine.start(); + assertThat(stateMachine.getState().getIds(), contains("S1")); + stateMachine.sendEvent("E1"); + assertThat(stateMachine.getState().getIds(), contains("S2")); + } +}