From a4c8ddcbdda4e84abdef8d432d6a209470cb7ff3 Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Tue, 18 Oct 2016 09:38:12 +0100 Subject: [PATCH] Add support for end states - Adding end state construction - Relates to #262 --- .../data/jpa/JpaRepositoryTests.java | 16 ++++++++++++++++ .../data/RepositoryStateMachineModelFactory.java | 3 +++ 2 files changed, 19 insertions(+) diff --git a/spring-statemachine-data/jpa/src/test/java/org/springframework/statemachine/data/jpa/JpaRepositoryTests.java b/spring-statemachine-data/jpa/src/test/java/org/springframework/statemachine/data/jpa/JpaRepositoryTests.java index 7c00523d..03964b57 100644 --- a/spring-statemachine-data/jpa/src/test/java/org/springframework/statemachine/data/jpa/JpaRepositoryTests.java +++ b/spring-statemachine-data/jpa/src/test/java/org/springframework/statemachine/data/jpa/JpaRepositoryTests.java @@ -22,6 +22,7 @@ import static org.junit.Assert.assertThat; import java.util.Arrays; import java.util.HashSet; +import java.util.Iterator; import java.util.List; import java.util.Set; @@ -48,6 +49,8 @@ import org.springframework.statemachine.data.StateRepository; import org.springframework.statemachine.data.TransitionRepository; import org.springframework.statemachine.data.support.StateMachineJackson2RepositoryPopulatorFactoryBean; import org.springframework.statemachine.guard.Guard; +import org.springframework.statemachine.state.PseudoStateKind; +import org.springframework.statemachine.state.State; import org.springframework.statemachine.test.StateMachineTestPlan; import org.springframework.statemachine.test.StateMachineTestPlanBuilder; import org.springframework.statemachine.transition.TransitionKind; @@ -458,6 +461,19 @@ public class JpaRepositoryTests extends AbstractJpaRepositoryTests { .step().sendEvent("E1").expectStates("S2", "S21", "S31").and() .build(); plan.test(); + + State endState = null; + Iterator> iterator = stateMachine.getStates().iterator(); + while (iterator.hasNext()) { + State next = iterator.next(); + if (next.getId().equals("SF")) { + endState = next; + break; + } + } + assertThat(endState, notNullValue()); + assertThat(endState.getPseudoState(), notNullValue()); + assertThat(endState.getPseudoState().getKind(), is(PseudoStateKind.END)); } @SuppressWarnings("unchecked") diff --git a/spring-statemachine-data/src/main/java/org/springframework/statemachine/data/RepositoryStateMachineModelFactory.java b/spring-statemachine-data/src/main/java/org/springframework/statemachine/data/RepositoryStateMachineModelFactory.java index 407b5030..a8de94af 100644 --- a/spring-statemachine-data/src/main/java/org/springframework/statemachine/data/RepositoryStateMachineModelFactory.java +++ b/spring-statemachine-data/src/main/java/org/springframework/statemachine/data/RepositoryStateMachineModelFactory.java @@ -151,6 +151,9 @@ public class RepositoryStateMachineModelFactory extends AbstractStateMachineMode stateData.setExitActions(exitActions); if (s.getKind() != null) { stateData.setPseudoStateKind(s.getKind()); + if (s.getKind() == PseudoStateKind.END) { + stateData.setEnd(true); + } } stateDatas.add(stateData); }