You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2016/12/26 17:36:06 UTC
[2/2] mina git commit: o Added some missing Javadoc for STatemachine
module
o Added some missing Javadoc for STatemachine module
Project: http://git-wip-us.apache.org/repos/asf/mina/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina/commit/c6f68526
Tree: http://git-wip-us.apache.org/repos/asf/mina/tree/c6f68526
Diff: http://git-wip-us.apache.org/repos/asf/mina/diff/c6f68526
Branch: refs/heads/2.0
Commit: c6f68526e8dd8cd23d07145ffad0710476f7074e
Parents: 972449e
Author: Emmanuel L�charny <el...@symas.com>
Authored: Mon Dec 26 18:35:33 2016 +0100
Committer: Emmanuel L�charny <el...@symas.com>
Committed: Mon Dec 26 18:35:33 2016 +0100
----------------------------------------------------------------------
.../org/apache/mina/statemachine/State.java | 8 ++++++
.../transition/AbstractTransition.java | 30 ++++++++++++++++++++
.../statemachine/transition/Transition.java | 19 +++++++++++++
.../mina/statemachine/StateMachineTest.java | 10 +++++++
4 files changed, 67 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/mina/blob/c6f68526/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java
index 0ea35bb..6cb9f40 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/State.java
@@ -45,14 +45,18 @@ import org.apache.mina.statemachine.transition.Transition;
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public class State {
+ /** The state ID */
private final String id;
+ /** The paret state */
private final State parent;
private List<TransitionHolder> transitionHolders = new ArrayList<TransitionHolder>();
+ /** The list of transitions for this state */
private List<Transition> transitions = Collections.emptyList();
+ /** The list of transitions that */
private List<SelfTransition> onEntries = new ArrayList<SelfTransition>();
private List<SelfTransition> onExits = new ArrayList<SelfTransition>();
@@ -124,7 +128,9 @@ public class State {
if (onEntrySelfTransaction == null) {
throw new IllegalArgumentException("transition");
}
+
onEntries.add(onEntrySelfTransaction);
+
return this;
}
@@ -138,7 +144,9 @@ public class State {
if (onExitSelfTransaction == null) {
throw new IllegalArgumentException("transition");
}
+
onExits.add(onExitSelfTransaction);
+
return this;
}
http://git-wip-us.apache.org/repos/asf/mina/blob/c6f68526/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java
index e8645d8..3eb66f8 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/AbstractTransition.java
@@ -32,8 +32,10 @@ import org.apache.mina.statemachine.event.Event;
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
public abstract class AbstractTransition implements Transition {
+ /** The accepted event ID */
private final Object eventId;
+ /** The next state, if any */
private final State nextState;
/**
@@ -58,10 +60,38 @@ public abstract class AbstractTransition implements Transition {
this.nextState = nextState;
}
+ /**
+ * Creates a new instance with the specified {@link State} as next state
+ * and for the wild card {@link Event} id.
+ *
+ * @param nextState the next {@link State}.
+ */
+ public AbstractTransition(State nextState) {
+ this.eventId = Event.WILDCARD_EVENT_ID;
+ this.nextState = nextState;
+ }
+
+ /**
+ * Creates a new instance with a reflexive {@link State} as next state
+ * and for the wild card {@link Event} id.
+ */
+ public AbstractTransition() {
+ this.eventId = Event.WILDCARD_EVENT_ID;
+ this.nextState = null;
+ }
+
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public State getNextState() {
return nextState;
}
+ /**
+ * {@inheritDoc}
+ */
+ @Override
public boolean execute(Event event) {
if (!eventId.equals(Event.WILDCARD_EVENT_ID) && !eventId.equals(event.getId())) {
return false;
http://git-wip-us.apache.org/repos/asf/mina/blob/c6f68526/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java
index 7166602..c7f1abf 100644
--- a/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java
+++ b/mina-statemachine/src/main/java/org/apache/mina/statemachine/transition/Transition.java
@@ -26,6 +26,21 @@ import org.apache.mina.statemachine.event.Event;
/**
* The interface implemented by classes which need to react on transitions
* between states.
+ *
+ * A Transition must implement two methods
+ * <ul>
+ * <li>execute : a method called when we process the transition</li>
+ * <li>getNextState : a method that gives the next state for this transition</li>
+ * </ul>
+ *
+ * Each Transition accepts two parameters :
+ * <ul>
+ * <li>An event ID : this defines the event this transition will accept</li>
+ * <li>A next state</li>
+ * </ul>
+ *
+ * The event ID might be '*', which means the transition will accept any event.
+ * The next state can be null, which means teh next state is the current state.
*
* @author <a href="http://mina.apache.org">Apache MINA Project</a>
*/
@@ -35,6 +50,10 @@ public interface Transition {
* {@link Transition} to determine whether it actually applies for the
* specified {@link Event}. If this {@link Transition} doesn't apply
* nothing should be executed and <tt>false</tt> must be returned.
+ * The method will accept any {@link Event} if it is registered with the
+ * wild card event ID ('*'), and the event ID it is declared for (ie,
+ * the event ID that has been passed as a parameter to this transition
+ * constructor.)
*
* @param event the current {@link Event}.
* @return <tt>true</tt> if the {@link Transition} was executed,
http://git-wip-us.apache.org/repos/asf/mina/blob/c6f68526/mina-statemachine/src/test/java/org/apache/mina/statemachine/StateMachineTest.java
----------------------------------------------------------------------
diff --git a/mina-statemachine/src/test/java/org/apache/mina/statemachine/StateMachineTest.java b/mina-statemachine/src/test/java/org/apache/mina/statemachine/StateMachineTest.java
index 467a411..f9b154c 100644
--- a/mina-statemachine/src/test/java/org/apache/mina/statemachine/StateMachineTest.java
+++ b/mina-statemachine/src/test/java/org/apache/mina/statemachine/StateMachineTest.java
@@ -88,6 +88,7 @@ public class StateMachineTest {
@Override
protected boolean doExecute(Event event) {
event.getContext().setAttribute("success", true);
+
return true;
}
}
@@ -104,6 +105,7 @@ public class StateMachineTest {
@Override
protected boolean doExecute(Event event) {
StateControl.breakAndContinue();
+
return true;
}
}
@@ -121,9 +123,13 @@ public class StateMachineTest {
this.stateId = stateId;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected boolean doExecute(Event event) {
StateControl.breakAndGotoNow(stateId);
+
return true;
}
}
@@ -141,9 +147,13 @@ public class StateMachineTest {
this.stateId = stateId;
}
+ /**
+ * {@inheritDoc}
+ */
@Override
protected boolean doExecute(Event event) {
StateControl.breakAndGotoNext(stateId);
+
return true;
}
}