From f09cbbea74c7b006d8265cb3d4289b9322f12555 Mon Sep 17 00:00:00 2001 From: ferdaws Date: Tue, 10 Jan 2017 15:29:50 +0100 Subject: [PATCH] Added method to set current state --- .../foundation/fsm/StateMachine.java | 2 ++ .../foundation/fsm/impl/AbstractStateMachine.java | 11 +++++++++++ 2 files changed, 13 insertions(+) diff --git a/squirrel-foundation/src/main/java/org/squirrelframework/foundation/fsm/StateMachine.java b/squirrel-foundation/src/main/java/org/squirrelframework/foundation/fsm/StateMachine.java index 9d9072ad..761e915e 100644 --- a/squirrel-foundation/src/main/java/org/squirrelframework/foundation/fsm/StateMachine.java +++ b/squirrel-foundation/src/main/java/org/squirrelframework/foundation/fsm/StateMachine.java @@ -148,6 +148,8 @@ public interface StateMachine, S, E, C> exten Collection getAllStates(); Collection> getAllRawStates(); + + void setCurrentState(S currentState); /** * Dump current state machine data. This operation can only be done when state machine status is diff --git a/squirrel-foundation/src/main/java/org/squirrelframework/foundation/fsm/impl/AbstractStateMachine.java b/squirrel-foundation/src/main/java/org/squirrelframework/foundation/fsm/impl/AbstractStateMachine.java index 318a7b81..ef4eb0e8 100644 --- a/squirrel-foundation/src/main/java/org/squirrelframework/foundation/fsm/impl/AbstractStateMachine.java +++ b/squirrel-foundation/src/main/java/org/squirrelframework/foundation/fsm/impl/AbstractStateMachine.java @@ -515,6 +515,17 @@ public S getInitialState() { } } + @Override + public void setCurrentState(S currentState){ + writeLock.lock(); + try { + data.write().initialState(currentState); + data.write().currentState(null); + } finally { + writeLock.unlock(); + } + } + private void entryAll(ImmutableState origin, StateContext stateContext) { Stack> stack = new Stack>();