Package org.eclipse.net4j.util.fsm
Class FiniteStateMachine<STATE extends java.lang.Enum<?>,EVENT extends java.lang.Enum<?>,SUBJECT>
- java.lang.Object
-
- org.eclipse.net4j.util.event.Notifier
-
- org.eclipse.net4j.util.lifecycle.Lifecycle
-
- org.eclipse.net4j.util.fsm.FiniteStateMachine<STATE,EVENT,SUBJECT>
-
- All Implemented Interfaces:
INotifier,INotifier.INotifier2,IDeactivateable,ILifecycle,ILifecycle.DeferrableActivation
- Direct Known Subclasses:
Negotiator
public abstract class FiniteStateMachine<STATE extends java.lang.Enum<?>,EVENT extends java.lang.Enum<?>,SUBJECT> extends Lifecycle
A finite state machine that is based on a matrix oftransitions.A finite state machine can fire the following events:
-
FiniteStateMachine.StateChangedEventafter state changes of a subject.
- Author:
- Eike Stepper
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description classFiniteStateMachine.ChangeStateTransitionAtransitionthat changes thestateof a subject.static classFiniteStateMachine.FailTransitionDeprecated.UseFAILstatic classFiniteStateMachine.IgnoreTransitionDeprecated.UseIGNOREclassFiniteStateMachine.StateChangedEvent-
Nested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle
ILifecycle.DeferrableActivation
-
Nested classes/interfaces inherited from interface org.eclipse.net4j.util.event.INotifier
INotifier.INotifier2
-
-
Field Summary
Fields Modifier and Type Field Description static ITransitionFAILstatic ITransitionIGNORE
-
Constructor Summary
Constructors Constructor Description FiniteStateMachine(java.lang.Class<STATE> stateEnum, java.lang.Class<EVENT> eventEnum)FiniteStateMachine(java.lang.Class<STATE> stateEnum, java.lang.Class<EVENT> eventEnum, ITransition<STATE,EVENT,SUBJECT,?> defaultTransition)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description protected STATEchangeState(SUBJECT subject, STATE state)protected ITransition<STATE,EVENT,SUBJECT,?>createFailTransition(STATE state, EVENT event)protected ITransition<STATE,EVENT,SUBJECT,?>createIgnoreTransition(STATE state, EVENT event)protected java.lang.StringformatFailMessage(SUBJECT subject, STATE state, EVENT event, java.lang.Object data)protected java.lang.StringformatIgnoreMessage(SUBJECT subject, STATE state, EVENT event, java.lang.Object data)protected java.lang.StringformatProcessMessage(SUBJECT subject, STATE state, EVENT event, java.lang.Object data)EVENT[]getEvents()protected abstract STATEgetState(SUBJECT subject)STATE[]getStates()ITransition<STATE,EVENT,SUBJECT,?>getTransition(STATE state, EVENT event)voidinit(STATE state, EVENT event, ITransition<STATE,EVENT,SUBJECT,?> transition)voidinit(STATE state, EVENT event, STATE targetState)voidinitAll(ITransition<STATE,EVENT,SUBJECT,?> transition)voidinitAll(STATE targetState)voidinitEvents(STATE state, ITransition<STATE,EVENT,SUBJECT,?> transition)voidinitEvents(STATE state, STATE targetState)voidinitStates(EVENT event, ITransition<STATE,EVENT,SUBJECT,?> transition)voidinitStates(EVENT event, STATE targetState)<DATA> voidprocess(SUBJECT subject, EVENT event, DATA data)protected abstract voidsetState(SUBJECT subject, STATE state)-
Methods inherited from class org.eclipse.net4j.util.lifecycle.Lifecycle
activate, checkActive, checkArg, checkArg, checkInactive, checkNull, checkState, checkState, deactivate, deferredActivate, doActivate, doAfterActivate, doBeforeActivate, doBeforeDeactivate, doDeactivate, dump, getLifecycleState, isActive, isDeferredActivation, toString
-
Methods inherited from class org.eclipse.net4j.util.event.Notifier
addListener, addUniqueListener, fireEvent, fireEvent, fireEvent, fireThrowable, firstListenerAdded, getListeners, getNotificationService, hasListener, hasListeners, lastListenerRemoved, listenerAdded, listenerRemoved, removeListener
-
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
-
Methods inherited from interface org.eclipse.net4j.util.event.INotifier
addListener, getListeners, hasListeners, removeListener
-
-
-
-
Field Detail
-
IGNORE
public static final ITransition IGNORE
-
FAIL
public static final ITransition FAIL
-
-
Method Detail
-
getStates
public final STATE[] getStates()
-
getEvents
public final EVENT[] getEvents()
-
getTransition
public final ITransition<STATE,EVENT,SUBJECT,?> getTransition(STATE state, EVENT event)
-
init
public final void init(STATE state, EVENT event, ITransition<STATE,EVENT,SUBJECT,?> transition)
-
initEvents
public final void initEvents(STATE state, ITransition<STATE,EVENT,SUBJECT,?> transition)
-
initStates
public final void initStates(EVENT event, ITransition<STATE,EVENT,SUBJECT,?> transition)
-
initAll
public final void initAll(STATE targetState)
-
initAll
public final void initAll(ITransition<STATE,EVENT,SUBJECT,?> transition)
-
createIgnoreTransition
protected ITransition<STATE,EVENT,SUBJECT,?> createIgnoreTransition(STATE state, EVENT event)
-
createFailTransition
protected ITransition<STATE,EVENT,SUBJECT,?> createFailTransition(STATE state, EVENT event)
-
formatProcessMessage
protected java.lang.String formatProcessMessage(SUBJECT subject, STATE state, EVENT event, java.lang.Object data)
-
formatIgnoreMessage
protected java.lang.String formatIgnoreMessage(SUBJECT subject, STATE state, EVENT event, java.lang.Object data)
-
formatFailMessage
protected java.lang.String formatFailMessage(SUBJECT subject, STATE state, EVENT event, java.lang.Object data)
-
-