Groovy Documentation

org.linkedin.groovy.util.state
[Groovy] Class StateMachineImpl

java.lang.Object
  org.linkedin.groovy.util.state.StateMachineImpl

class StateMachineImpl

Represents the state machine (states, transitions and action to take on each) Here is an example of a state machine transitions


 def static DEFAULT_TRANSITIONS =
 [
   NONE: [[to: 'installed', action: 'install']],
   installed: [[to: 'stopped', action: 'configure'], [to: NONE, action: 'uninstall']],
   stopped: [[to: 'running', action: 'start'], [to: 'stopped', action: 'configure'], [to: NONE, action: 'uninstall']],
   running: [[to: 'stopped', action: 'stop']]
 ]
 
Authors:
ypujante@linkedin.com


Field Summary
static java.lang.String MODULE

static Logger log

 
Property Summary
Clock clock

java.lang.Object lock

 
Constructor Summary
StateMachineImpl(java.lang.Object args)

 
Method Summary
java.lang.Object clearError()

java.lang.Object executeAction(java.lang.Object action, java.lang.Object closure)

Execute the action: sets the state machine in transition state, execute the closure and then move to the final state.

java.lang.Object findEndState(java.lang.Object action)

Returns the end state that the state machine would be if the action were to be executed.

java.lang.Object findPaths(java.lang.Object toState)

{@inheritdoc}

java.lang.Object findPaths(java.lang.Object fromState, java.lang.Object toState)

{@inheritdoc}

java.lang.Object findShortestPath(java.lang.Object toState)

java.lang.Object findShortestPath(java.lang.Object fromState, java.lang.Object toState)

void forceChangeState(java.lang.Object currentState, java.lang.Object error)

This method is used to change the state and should be used carefully.

java.lang.Object getAvailableActions()

Returns all available actions

java.lang.Object getAvailableStates()

returns all available states

java.lang.Object getAvailableTransitions()

java.lang.Object getCurrentState()

int getDepth()

int getDepth(java.lang.Object state)

int getDistance(java.lang.Object fromState, java.lang.Object toState)

java.lang.Object getEndState(java.lang.Object action)

Returns the end state associated to a specific action in the state machine.

java.lang.Object getError()

java.lang.Object getState()

java.lang.Object getTransitionAction()

java.lang.Object getTransitionState()

java.lang.Object getTransitions()

void setCurrentState(java.lang.Object currentState)

This method should be used to restore the state only

void setError(java.lang.Object error)

This method should be used to restore the state only

void setStateChangeListener(StateChangeListener stateChangeListener)

java.lang.String toString()

java.lang.Object waitForState(java.lang.Object state, java.lang.Object timeout)

Wait for the state machine to be in the provided state.

 
Methods inherited from class java.lang.Object
java.lang.Object#wait(), java.lang.Object#wait(long), java.lang.Object#wait(long, int), java.lang.Object#equals(java.lang.Object), java.lang.Object#toString(), java.lang.Object#hashCode(), java.lang.Object#getClass(), java.lang.Object#notify(), java.lang.Object#notifyAll()
 

Field Detail

MODULE

public static final java.lang.String MODULE


log

public static final Logger log


 
Property Detail

clock

@Initializable
Clock clock


lock

java.lang.Object lock


 
Constructor Detail

StateMachineImpl

StateMachineImpl(java.lang.Object args)


 
Method Detail

clearError

java.lang.Object clearError()


executeAction

java.lang.Object executeAction(java.lang.Object action, java.lang.Object closure)
Execute the action: sets the state machine in transition state, execute the closure and then move to the final state. All this provided that the state transition and current state is authorizing the action. This call is a blocking call!


findEndState

java.lang.Object findEndState(java.lang.Object action)
Returns the end state that the state machine would be if the action were to be executed.
throws:
IllegalStateException if it is not possible to execute the action because the state does not allow it


findPaths

java.lang.Object findPaths(java.lang.Object toState)
{@inheritdoc}


findPaths

java.lang.Object findPaths(java.lang.Object fromState, java.lang.Object toState)
{@inheritdoc}


findShortestPath

java.lang.Object findShortestPath(java.lang.Object toState)


findShortestPath

java.lang.Object findShortestPath(java.lang.Object fromState, java.lang.Object toState)


forceChangeState

void forceChangeState(java.lang.Object currentState, java.lang.Object error)
This method is used to change the state and should be used carefully. This method cannot be used when in transition state
Parameters:
currentState - the new current state (can be null in which case we keep the current one)
error - the new error state


getAvailableActions

java.lang.Object getAvailableActions()
Returns all available actions


getAvailableStates

java.lang.Object getAvailableStates()
returns all available states


getAvailableTransitions

java.lang.Object getAvailableTransitions()


getCurrentState

java.lang.Object getCurrentState()


getDepth

@Override
int getDepth()


getDepth

@Override
int getDepth(java.lang.Object state)


getDistance

@Override
int getDistance(java.lang.Object fromState, java.lang.Object toState)


getEndState

java.lang.Object getEndState(java.lang.Object action)
Returns the end state associated to a specific action in the state machine. No action is actually performed. It returns null if the given action was not found.


getError

java.lang.Object getError()


getState

java.lang.Object getState()


getTransitionAction

java.lang.Object getTransitionAction()


getTransitionState

java.lang.Object getTransitionState()


getTransitions

java.lang.Object getTransitions()


setCurrentState

void setCurrentState(java.lang.Object currentState)
This method should be used to restore the state only


setError

void setError(java.lang.Object error)
This method should be used to restore the state only


setStateChangeListener

void setStateChangeListener(StateChangeListener stateChangeListener)


toString

java.lang.String toString()


waitForState

java.lang.Object waitForState(java.lang.Object state, java.lang.Object timeout)
Wait for the state machine to be in the provided state. Does not wait longer than the timeout.
Parameters:
timeout - may be null for unlimited waiting
Returns:
true if the state was reached during the timeout, false otherwise


 

Groovy Documentation