public class StateMachine<StateT>
extends java.lang.Object
Modifier and Type | Field and Description |
---|---|
protected java.lang.Object[] |
args |
protected java.util.Collection<StateChangeListener<StateT>> |
listeners |
protected java.util.concurrent.locks.ReentrantReadWriteLock |
lock |
protected org.slf4j.Logger |
logger |
protected StateT |
state |
Constructor and Description |
---|
StateMachine(StateT initialState) |
Modifier and Type | Method and Description |
---|---|
void |
addListener(StateChangeListener<StateT> listener) |
void |
changeState(StateT state,
java.lang.Object... args)
Change current status to
state . |
boolean |
changeState(StateT state,
StateCondition<StateT> condition,
java.lang.Object... args)
Change current state to
state if condition is true. |
void |
execute(java.util.concurrent.Callable<java.lang.Void> process,
StateT success,
StateT fail)
Execute and change state as the result.
|
protected void |
fireChangeEvent(StateT from,
StateT to,
java.lang.Object... args) |
java.lang.Object[] |
getArguments()
Get arguments.
|
java.util.concurrent.locks.ReadWriteLock |
getLock() |
StateT |
getState()
Return current state.
|
boolean |
isState(StateT... states)
Check if current state is one of
states . |
void |
removeListener(StateChangeListener<StateT> listener) |
java.lang.String |
toString() |
void |
waitState(StateT... states)
Wait that current state is one of
states . |
protected final org.slf4j.Logger logger
protected java.util.concurrent.locks.ReentrantReadWriteLock lock
protected java.util.Collection<StateChangeListener<StateT>> listeners
protected StateT state
protected java.lang.Object[] args
public StateMachine(StateT initialState)
public java.util.concurrent.locks.ReadWriteLock getLock()
public void addListener(StateChangeListener<StateT> listener)
public void removeListener(StateChangeListener<StateT> listener)
public boolean isState(StateT... states)
states
.states
- states to checkstates
public void waitState(StateT... states)
states
.states
- states to wait forpublic StateT getState()
public java.lang.Object[] getArguments()
public void changeState(StateT state, java.lang.Object... args)
state
.
Use lock for write.
state
- state to changeargs
- arguments which next state havepublic boolean changeState(StateT state, StateCondition<StateT> condition, java.lang.Object... args)
state
if condition is true.
Use lock for write
state
- state to changecondition
- condition to checkargs
- arguments which next state havepublic void execute(java.util.concurrent.Callable<java.lang.Void> process, StateT success, StateT fail)
process
- Callable
to executesuccess
- state to transit when succeedfail
- state to transit when failpublic java.lang.String toString()
toString
in class java.lang.Object