Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/fsm/FiniteStateMachine.java')
-rw-r--r--plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/fsm/FiniteStateMachine.java27
1 files changed, 25 insertions, 2 deletions
diff --git a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/fsm/FiniteStateMachine.java b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/fsm/FiniteStateMachine.java
index 22be9ae8ba..dd74d41b4e 100644
--- a/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/fsm/FiniteStateMachine.java
+++ b/plugins/org.eclipse.net4j.util/src/org/eclipse/net4j/util/fsm/FiniteStateMachine.java
@@ -20,14 +20,25 @@ import org.eclipse.net4j.util.om.trace.ContextTracer;
import java.text.MessageFormat;
/**
+ * A <a href="http://en.wikipedia.org/wiki/Finite-state_machine">finite state machine</a> that is based on a matrix of
+ * {@link ITransition transitions}.
+ * <p>
+ * Fires the following events:
+ * <ul>
+ * <li> {@link StateChangedEvent} after state changes of a <i>subject</i>.
+ * </ul>
+ *
* @author Eike Stepper
+ * @apiviz.landmark
+ * @apiviz.owns ITransition - - matrix
+ * @apiviz.uses FiniteStateMachine.StateChangedEvent - - fires
*/
public abstract class FiniteStateMachine<STATE extends Enum<?>, EVENT extends Enum<?>, SUBJECT> extends Lifecycle
{
- @SuppressWarnings("rawtypes")
+ @SuppressWarnings({ "rawtypes", "deprecation" })
public static final ITransition IGNORE = new IgnoreTransition();
- @SuppressWarnings("rawtypes")
+ @SuppressWarnings({ "rawtypes", "deprecation" })
public static final ITransition FAIL = new FailTransition();
private static final ContextTracer TRACER = new ContextTracer(OM.DEBUG, FiniteStateMachine.class);
@@ -224,8 +235,13 @@ public abstract class FiniteStateMachine<STATE extends Enum<?>, EVENT extends En
}
/**
+ * A {@link ITransition transition} that does nothing.
+ *
* @author Eike Stepper
+ * @deprecated Use {@link FiniteStateMachine#IGNORE}
+ * @apiviz.exclude
*/
+ @Deprecated
public static class IgnoreTransition implements ITransition<Enum<?>, Enum<?>, Object, Object>
{
public void execute(Object subject, Enum<?> state, Enum<?> event, Object data)
@@ -241,8 +257,13 @@ public abstract class FiniteStateMachine<STATE extends Enum<?>, EVENT extends En
}
/**
+ * A {@link ITransition transition} that throws an {@link IllegalStateException}.
+ *
* @author Eike Stepper
+ * @deprecated Use {@link FiniteStateMachine#FAIL}
+ * @apiviz.exclude
*/
+ @Deprecated
public static class FailTransition implements ITransition<Enum<?>, Enum<?>, Object, Object>
{
public void execute(Object subject, Enum<?> state, Enum<?> event, Object data)
@@ -258,6 +279,8 @@ public abstract class FiniteStateMachine<STATE extends Enum<?>, EVENT extends En
}
/**
+ * A {@link ITransition transition} that changes the {@link #getTargetState() state} of a <i>subject</i>.
+ *
* @author Eike Stepper
*/
public class ChangeStateTransition implements ITransition<STATE, EVENT, SUBJECT, Object>

Back to the top