Package org.eclipse.net4j.util.fsm
Class FiniteStateMachine<STATE extends Enum<?>,EVENT extends 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 Enum<?>,EVENT extends Enum<?>,SUBJECT>
extends Lifecycle
A finite state machine that is based on a matrix of
transitions.
A finite state machine can fire the following events:
-
FiniteStateMachine<STATE extends Enum<?>,after state changes of a subject.EVENT extends Enum<?>, SUBJECT>.StateChangedEvent
- Author:
- Eike Stepper
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionclassAtransitionthat changes thestateof a subject.static classDeprecated.static classDeprecated.UseIGNOREclassNested classes/interfaces inherited from interface org.eclipse.net4j.util.lifecycle.ILifecycle
ILifecycle.DeferrableActivationNested classes/interfaces inherited from interface org.eclipse.net4j.util.event.INotifier
INotifier.INotifier2 -
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionFiniteStateMachine(Class<STATE> stateEnum, Class<EVENT> eventEnum) FiniteStateMachine(Class<STATE> stateEnum, Class<EVENT> eventEnum, ITransition<STATE, EVENT, SUBJECT, ?> defaultTransition) -
Method Summary
Modifier and TypeMethodDescriptionprotected 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 StringformatFailMessage(SUBJECT subject, STATE state, EVENT event, Object data) protected StringformatIgnoreMessage(SUBJECT subject, STATE state, EVENT event, Object data) protected StringformatProcessMessage(SUBJECT subject, STATE state, EVENT event, Object data) final EVENT[]protected abstract STATEfinal STATE[]final ITransition<STATE,EVENT, SUBJECT, ?> getTransition(STATE state, EVENT event) final voidfinal voidfinal voidinitAll(ITransition<STATE, EVENT, SUBJECT, ?> transition) final voidfinal voidinitEvents(STATE state, ITransition<STATE, EVENT, SUBJECT, ?> transition) final voidinitEvents(STATE state, STATE targetState) final voidinitStates(EVENT event, ITransition<STATE, EVENT, SUBJECT, ?> transition) final voidinitStates(EVENT event, STATE targetState) final <DATA> voidprotected abstract voidMethods 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, toStringMethods inherited from class org.eclipse.net4j.util.event.Notifier
addListener, addUniqueListener, fireEvent, fireEvent, fireEvent, fireThrowable, firstListenerAdded, getListeners, getNotificationService, hasListener, hasListeners, lastListenerRemoved, listenerAdded, listenerRemoved, removeListenerMethods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, waitMethods inherited from interface org.eclipse.net4j.util.event.INotifier
addListener, getListeners, hasListeners, removeListener
-
Field Details
-
IGNORE
-
FAIL
-
-
Constructor Details
-
FiniteStateMachine
-
FiniteStateMachine
-
-
Method Details
-
getStates
-
getEvents
-
getTransition
-
init
-
init
-
initEvents
-
initEvents
-
initStates
-
initStates
-
initAll
-
initAll
-
process
-
createIgnoreTransition
-
createFailTransition
-
formatProcessMessage
-
formatIgnoreMessage
-
formatFailMessage
-
getState
-
setState
-
changeState
- Since:
- 3.0
-
FAIL