[prev in list] [next in list] [prev in thread] [next in thread]
List: jakarta-commons-dev
Subject: svn commit: r1583086 [2/3] - in /commons/proper/scxml/trunk/src: main/java/org/apache/commons/scxml2
From: ate () apache ! org
Date: 2014-03-30 0:18:41
Message-ID: 20140330001842.CB63D23888E2 () eris ! apache ! org
[Download RAW message or body]
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Foreach.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Foreach.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Foreach.java \
(original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Foreach.java \
Sun Mar 30 00:18:40 2014 @@ -18,17 +18,12 @@ package org.apache.commons.scxml2.model;
import java.lang.reflect.Array;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
-import org.apache.commons.logging.Log;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.Context;
-import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.Evaluator;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
import org.apache.commons.scxml2.SCXMLExpressionException;
-import org.apache.commons.scxml2.TriggerEvent;
/**
* The class in this SCXML object model that corresponds to the
@@ -102,12 +97,9 @@ public class Foreach extends Action impl
* {@inheritDoc}
*/
@Override
- public void execute(final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance,
- final Log appLog, final Collection<TriggerEvent> \
derivedEvents)
- throws ModelException, SCXMLExpressionException {
- Context ctx = scInstance.getContext(getParentEnterableState());
- Evaluator eval = scInstance.getEvaluator();
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException { + Context ctx = \
exctx.getScInstance().getContext(getParentEnterableState()); + Evaluator eval \
= exctx.getEvaluator(); ctx.setLocal(getNamespacesKey(), getNamespaces());
try {
Object arrayObject = eval.eval(ctx,array);
@@ -118,7 +110,7 @@ public class Foreach extends Action impl
ctx.setLocal(index, currentIndex);
// The "foreach" statement is a "container"
for (Action aa : actions) {
- aa.execute(evtDispatcher, errRep, scInstance, appLog, \
derivedEvents); + aa.execute(exctx);
}
}
}
@@ -139,7 +131,7 @@ public class Foreach extends Action impl
}
// The "foreach" statement is a "container"
for (Action aa : actions) {
- aa.execute(evtDispatcher, errRep, scInstance, appLog, \
derivedEvents); + aa.execute(exctx);
}
currentIndex++;
}
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/If.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/If.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/If.java \
(original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/If.java \
Sun Mar 30 00:18:40 2014 @@ -17,17 +17,12 @@
package org.apache.commons.scxml2.model;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
-import org.apache.commons.logging.Log;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.Context;
-import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.Evaluator;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
import org.apache.commons.scxml2.SCXMLExpressionException;
-import org.apache.commons.scxml2.TriggerEvent;
import org.apache.commons.scxml2.semantics.ErrorConstants;
/**
@@ -119,26 +114,25 @@ public class If extends Action implement
* {@inheritDoc}
*/
@Override
- public void execute(final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance,
- final Log appLog, final Collection<TriggerEvent> derivedEvents)
- throws ModelException, SCXMLExpressionException {
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException { EnterableState parentState = getParentEnterableState();
- Context ctx = scInstance.getContext(parentState);
- Evaluator eval = scInstance.getEvaluator();
+ Context ctx = exctx.getScInstance().getContext(parentState);
+ Evaluator eval = exctx.getEvaluator();
ctx.setLocal(getNamespacesKey(), getNamespaces());
Boolean rslt;
try {
rslt = eval.evalCond(ctx, cond);
if (rslt == null) {
- if (appLog.isDebugEnabled()) {
- appLog.debug("Treating as false because the cond expression was \
evaluated as null: '" + cond + "'"); + if \
(exctx.getAppLog().isDebugEnabled()) { + \
exctx.getAppLog().debug("Treating as false because the cond expression was evaluated \
as null: '" + + cond + "'");
}
rslt = Boolean.FALSE;
}
} catch (SCXMLExpressionException e) {
rslt = Boolean.FALSE;
- errRep.onError(ErrorConstants.EXPRESSION_ERROR, "Treating as false due \
to error: " + e.getMessage(), this); + \
exctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, "Treating as false \
due to error: " + + e.getMessage(), this);
// TODO: place the error 'error.execution' in the internal event queue. \
(section "3.12.2 Errors") }
execute = rslt;
@@ -146,7 +140,7 @@ public class If extends Action implement
// The "if" statement is a "container"
for (Action aa : actions) {
if (execute && !(aa instanceof ElseIf)) {
- aa.execute(evtDispatcher, errRep, scInstance, appLog, \
derivedEvents); + aa.execute(exctx);
} else if (execute && aa instanceof ElseIf) {
break;
} else if (aa instanceof Else) {
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Log.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Log.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Log.java \
(original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Log.java \
Sun Mar 30 00:18:40 2014 @@ -16,15 +16,10 @@
*/
package org.apache.commons.scxml2.model;
-import java.util.Collection;
-
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.Context;
-import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.Evaluator;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
import org.apache.commons.scxml2.SCXMLExpressionException;
-import org.apache.commons.scxml2.TriggerEvent;
/**
* The class in this SCXML object model that corresponds to the
@@ -96,15 +91,11 @@ public class Log extends Action {
* {@inheritDoc}
*/
@Override
- public void execute(final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance,
- final org.apache.commons.logging.Log appLog,
- final Collection<TriggerEvent> derivedEvents)
- throws ModelException, SCXMLExpressionException {
- Context ctx = scInstance.getContext(getParentEnterableState());
- Evaluator eval = scInstance.getEvaluator();
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException { + Context ctx = \
exctx.getScInstance().getContext(getParentEnterableState()); + Evaluator eval \
= exctx.getEvaluator(); ctx.setLocal(getNamespacesKey(), getNamespaces());
- appLog.info(label + ": " + String.valueOf(eval.eval(ctx, expr)));
+ exctx.getAppLog().info(label + ": " + String.valueOf(eval.eval(ctx, expr)));
ctx.setLocal(getNamespacesKey(), null);
}
}
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Raise.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Raise.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Raise.java \
(original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Raise.java \
Sun Mar 30 00:18:40 2014 @@ -16,12 +16,7 @@
*/
package org.apache.commons.scxml2.model;
-import java.util.Collection;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.scxml2.ErrorReporter;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.SCXMLExpressionException;
import org.apache.commons.scxml2.TriggerEvent;
@@ -72,17 +67,13 @@ public class Raise extends Action {
* {@inheritDoc}
*/
@Override
- public void execute(final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance,
- final Log appLog, final Collection<TriggerEvent> derivedEvents)
- throws ModelException, SCXMLExpressionException {
-
- if (appLog.isDebugEnabled()) {
- appLog.debug("<raise>: Adding event '" + event
- + "' to list of derived events.");
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException { +
+ if (exctx.getAppLog().isDebugEnabled()) {
+ exctx.getAppLog().debug("<raise>: Adding event '" + event + "' to list \
of derived events."); }
TriggerEvent ev = new TriggerEvent(event, TriggerEvent.SIGNAL_EVENT);
- derivedEvents.add(ev);
+ exctx.addInternalEvent(ev);
}
}
\ No newline at end of file
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Script.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Script.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Script.java \
(original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Script.java \
Sun Mar 30 00:18:40 2014 @@ -16,16 +16,10 @@
*/
package org.apache.commons.scxml2.model;
-import java.util.Collection;
-
-import org.apache.commons.logging.Log;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.Context;
-import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.Evaluator;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
import org.apache.commons.scxml2.SCXMLExpressionException;
-import org.apache.commons.scxml2.TriggerEvent;
/**
* The class in this SCXML object model that corresponds to the
@@ -81,14 +75,11 @@ public class Script extends Action imple
* {@inheritDoc}
*/
@Override
- public void execute(final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance,
- final Log appLog, final Collection<TriggerEvent> derivedEvents)
- throws ModelException, SCXMLExpressionException {
- Context ctx = isGlobalScript() ? scInstance.getGlobalScriptContext() :
- scInstance.getContext(getParentEnterableState());
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException { + Context ctx = isGlobalScript() ? \
exctx.getScInstance().getGlobalScriptContext() : + \
exctx.getScInstance().getContext(getParentEnterableState()); \
ctx.setLocal(getNamespacesKey(), getNamespaces());
- Evaluator eval = scInstance.getEvaluator();
+ Evaluator eval = exctx.getEvaluator();
eval.evalScript(ctx, getScript());
ctx.setLocal(getNamespacesKey(), null);
}
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Send.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Send.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Send.java \
(original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Send.java \
Sun Mar 30 00:18:40 2014 @@ -17,18 +17,15 @@
package org.apache.commons.scxml2.model;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.StringTokenizer;
import org.apache.commons.logging.Log;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.Context;
-import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.Evaluator;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
import org.apache.commons.scxml2.SCXMLExpressionException;
import org.apache.commons.scxml2.SCXMLHelper;
import org.apache.commons.scxml2.TriggerEvent;
@@ -59,6 +56,21 @@ public class Send extends Action impleme
private static final String EVENT_ERR_SEND_TARGETUNAVAILABLE =
"error.send.targetunavailable";
+ /** The suffix in the delay string for milliseconds. */
+ private static final String MILLIS = "ms";
+
+ /** The suffix in the delay string for seconds. */
+ private static final String SECONDS = "s";
+
+ /** The suffix in the delay string for minutes. */
+ private static final String MINUTES = "m";
+
+ /** The number of milliseconds in a second. */
+ private static final long MILLIS_IN_A_SECOND = 1000L;
+
+ /** The number of milliseconds in a minute. */
+ private static final long MILLIS_IN_A_MINUTE = 60000L;
+
/**
* The ID of the send message.
*/
@@ -248,15 +260,12 @@ public class Send extends Action impleme
* {@inheritDoc}
*/
@Override
- public void execute(final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance,
- final Log appLog, final Collection<TriggerEvent> derivedEvents)
- throws ModelException, SCXMLExpressionException {
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException { // Send attributes evaluation
EnterableState parentState = getParentEnterableState();
- Context ctx = scInstance.getContext(parentState);
+ Context ctx = exctx.getScInstance().getContext(parentState);
ctx.setLocal(getNamespacesKey(), getNamespaces());
- Evaluator eval = scInstance.getEvaluator();
+ Evaluator eval = exctx.getEvaluator();
// Most attributes of <send> are expressions so need to be
// evaluated before the EventDispatcher callback
Object hintsValue = null;
@@ -267,8 +276,8 @@ public class Send extends Action impleme
if (!SCXMLHelper.isStringEmpty(target)) {
targetValue = (String) eval.eval(ctx, target);
if (SCXMLHelper.isStringEmpty(targetValue)
- && appLog.isWarnEnabled()) {
- appLog.warn("<send>: target expression \"" + target
+ && exctx.getAppLog().isWarnEnabled()) {
+ exctx.getAppLog().warn("<send>: target expression \"" + target
+ "\" evaluated to null or empty String");
}
}
@@ -276,8 +285,8 @@ public class Send extends Action impleme
if (!SCXMLHelper.isStringEmpty(type)) {
typeValue = (String) eval.eval(ctx, type);
if (SCXMLHelper.isStringEmpty(typeValue)
- && appLog.isWarnEnabled()) {
- appLog.warn("<send>: type expression \"" + type
+ && exctx.getAppLog().isWarnEnabled()) {
+ exctx.getAppLog().warn("<send>: type expression \"" + type
+ "\" evaluated to null or empty String");
}
} else {
@@ -293,7 +302,7 @@ public class Send extends Action impleme
Object varObj = ctx.get(varName);
if (varObj == null) {
//considered as a warning here
- errRep.onError(ErrorConstants.UNDEFINED_VARIABLE,
+ \
exctx.getErrorReporter().onError(ErrorConstants.UNDEFINED_VARIABLE, varName + " = \
null", parentState); }
params.put(varName, varObj);
@@ -304,15 +313,15 @@ public class Send extends Action impleme
Object delayValue = eval.eval(ctx, delay);
if (delayValue != null) {
String delayString = delayValue.toString();
- wait = parseDelay(delayString, appLog);
+ wait = parseDelay(delayString, exctx.getAppLog());
}
}
String eventValue = event;
if (!SCXMLHelper.isStringEmpty(event)) {
eventValue = (String) eval.eval(ctx, event);
if (SCXMLHelper.isStringEmpty(eventValue)
- && appLog.isWarnEnabled()) {
- appLog.warn("<send>: event expression \"" + event
+ && exctx.getAppLog().isWarnEnabled()) {
+ exctx.getAppLog().warn("<send>: event expression \"" + event
+ "\" evaluated to null or empty String");
}
}
@@ -322,21 +331,21 @@ public class Send extends Action impleme
if (SCXMLHelper.isStringEmpty(targetValue)) {
// TODO: Remove both short-circuit passes in v1.0
if (wait == 0L) {
- if (appLog.isDebugEnabled()) {
- appLog.debug("<send>: Enqueued event '" + eventValue
+ if (exctx.getAppLog().isDebugEnabled()) {
+ exctx.getAppLog().debug("<send>: Enqueued event '" + \
eventValue + "' with no delay");
}
- derivedEvents.add(new TriggerEvent(eventValue,
+ exctx.addInternalEvent(new TriggerEvent(eventValue,
TriggerEvent.SIGNAL_EVENT, params));
return;
}
} else {
// We know of no other
- if (appLog.isWarnEnabled()) {
- appLog.warn("<send>: Unavailable target - "
+ if (exctx.getAppLog().isWarnEnabled()) {
+ exctx.getAppLog().warn("<send>: Unavailable target - "
+ targetValue);
}
- derivedEvents.add(new TriggerEvent(
+ exctx.addInternalEvent(new TriggerEvent(
EVENT_ERR_SEND_TARGETUNAVAILABLE,
TriggerEvent.ERROR_EVENT));
// short-circuit the EventDispatcher
@@ -344,14 +353,14 @@ public class Send extends Action impleme
}
}
ctx.setLocal(getNamespacesKey(), null);
- if (appLog.isDebugEnabled()) {
- appLog.debug("<send>: Dispatching event '" + eventValue
+ if (exctx.getAppLog().isDebugEnabled()) {
+ exctx.getAppLog().debug("<send>: Dispatching event '" + eventValue
+ "' to target '" + targetValue + "' of target type '"
+ typeValue + "' with suggested delay of " + wait
+ "ms");
}
// Else, let the EventDispatcher take care of it
- evtDispatcher.send(sendid, targetValue, typeValue, eventValue,
+ exctx.getEventDispatcher().send(sendid, targetValue, typeValue, eventValue,
params, hintsValue, wait, externalNodes);
}
@@ -392,24 +401,7 @@ public class Send extends Action impleme
wait *= multiplier;
}
-
return wait;
}
-
- /** The suffix in the delay string for milliseconds. */
- private static final String MILLIS = "ms";
-
- /** The suffix in the delay string for seconds. */
- private static final String SECONDS = "s";
-
- /** The suffix in the delay string for minutes. */
- private static final String MINUTES = "m";
-
- /** The number of milliseconds in a second. */
- private static final long MILLIS_IN_A_SECOND = 1000L;
-
- /** The number of milliseconds in a minute. */
- private static final long MILLIS_IN_A_MINUTE = 60000L;
-
}
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Var.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Var.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Var.java \
(original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/model/Var.java \
Sun Mar 30 00:18:40 2014 @@ -16,14 +16,9 @@
*/
package org.apache.commons.scxml2.model;
-import java.util.Collection;
-
-import org.apache.commons.logging.Log;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.Context;
-import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.Evaluator;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
import org.apache.commons.scxml2.SCXMLExpressionException;
import org.apache.commons.scxml2.TriggerEvent;
@@ -98,23 +93,19 @@ public class Var extends Action {
* {@inheritDoc}
*/
@Override
- public void execute(final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance,
- final Log appLog, final Collection<TriggerEvent> derivedEvents)
- throws ModelException, SCXMLExpressionException {
- Context ctx = scInstance.getContext(getParentEnterableState());
- Evaluator eval = scInstance.getEvaluator();
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException { + Context ctx = \
exctx.getScInstance().getContext(getParentEnterableState()); + Evaluator eval \
= exctx.getEvaluator(); ctx.setLocal(getNamespacesKey(), getNamespaces());
Object varObj = eval.eval(ctx, expr);
ctx.setLocal(getNamespacesKey(), null);
ctx.setLocal(name, varObj);
- if (appLog.isDebugEnabled()) {
- appLog.debug("<var>: Defined variable '" + name
+ if (exctx.getAppLog().isDebugEnabled()) {
+ exctx.getAppLog().debug("<var>: Defined variable '" + name
+ "' with initial value '" + String.valueOf(varObj) + "'");
}
- TriggerEvent ev = new TriggerEvent(name + ".change",
- TriggerEvent.CHANGE_EVENT);
- derivedEvents.add(ev);
+ TriggerEvent ev = new TriggerEvent(name + ".change", \
TriggerEvent.CHANGE_EVENT); + exctx.addInternalEvent(ev);
}
}
Modified: commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/main/java/org/apache/ \
commons/scxml2/semantics/SCXMLSemanticsImpl.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java \
(original)
+++ commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java \
Sun Mar 30 00:18:40 2014 @@ -16,9 +16,6 @@
*/
package org.apache.commons.scxml2.semantics;
-import java.io.Serializable;
-import java.util.Arrays;
-import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
@@ -33,10 +30,11 @@ import org.apache.commons.logging.LogFac
import org.apache.commons.scxml2.Context;
import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.Evaluator;
-import org.apache.commons.scxml2.EventDispatcher;
import org.apache.commons.scxml2.NotificationRegistry;
import org.apache.commons.scxml2.PathResolver;
import org.apache.commons.scxml2.SCInstance;
+import org.apache.commons.scxml2.SCXMLExecutionContext;
+import org.apache.commons.scxml2.SCXMLExecutor;
import org.apache.commons.scxml2.SCXMLExpressionException;
import org.apache.commons.scxml2.SCXMLHelper;
import org.apache.commons.scxml2.SCXMLSemantics;
@@ -53,14 +51,15 @@ import org.apache.commons.scxml2.model.F
import org.apache.commons.scxml2.model.History;
import org.apache.commons.scxml2.model.Initial;
import org.apache.commons.scxml2.model.Invoke;
-import org.apache.commons.scxml2.model.SimpleTransition;
-import org.apache.commons.scxml2.model.TransitionalState;
-import org.apache.commons.scxml2.model.ModelException;
import org.apache.commons.scxml2.model.OnEntry;
import org.apache.commons.scxml2.model.OnExit;
-import org.apache.commons.scxml2.model.Parallel;
import org.apache.commons.scxml2.model.Param;
import org.apache.commons.scxml2.model.Path;
+import org.apache.commons.scxml2.model.Script;
+import org.apache.commons.scxml2.model.SimpleTransition;
+import org.apache.commons.scxml2.model.TransitionalState;
+import org.apache.commons.scxml2.model.ModelException;
+import org.apache.commons.scxml2.model.Parallel;
import org.apache.commons.scxml2.model.SCXML;
import org.apache.commons.scxml2.model.State;
import org.apache.commons.scxml2.model.Transition;
@@ -74,7 +73,7 @@ import org.apache.commons.scxml2.model.T
* <p>Custom semantics can be created by subclassing this class.</p>
*/
@SuppressWarnings("unused") // TODO: remove when done refactoring
-public class SCXMLSemanticsImpl implements SCXMLSemantics, Serializable {
+public class SCXMLSemanticsImpl implements SCXMLSemantics {
/**
* Serial version UID.
@@ -118,37 +117,35 @@ public class SCXMLSemanticsImpl implemen
/**
* Implements prefix match, that is, if, for example,
- * "mouse.click" is a member of eventOccurrences and a
+ * "mouse.click" is the event and a
* transition is triggered by "mouse", the method returns true.
*
* @param transEvent
* a trigger event of a transition
- * @param eventOccurrences
- * current events
+ * @param event
+ * current event
* @return true/false
*/
protected boolean eventMatch(final String transEvent,
- final Set<TriggerEvent> eventOccurrences) {
+ final TriggerEvent event) {
if (SCXMLHelper.isStringEmpty(transEvent)) { // Eventless transition
return true;
} else {
String trimTransEvent = transEvent.trim();
- for (TriggerEvent te : eventOccurrences) {
- String event = te.getName();
- if (event == null) {
- continue; // Unnamed events
- }
- String trimEvent = event.trim();
- if (trimEvent.equals(trimTransEvent)) {
- return true; // Match
- } else if (te.getType() != TriggerEvent.CHANGE_EVENT
- && trimTransEvent.equals("*")) {
- return true; // Wildcard, skip gen'ed ones like .done etc.
- } else if (trimTransEvent.endsWith(".*")
- && trimEvent.startsWith(trimTransEvent.substring(0,
- trimTransEvent.length() - 1))) {
- return true; // Prefixed wildcard
- }
+ String name = event.getName();
+ if (name == null) {
+ return false;
+ }
+ String trimName = name.trim();
+ if (trimName.equals(trimTransEvent)) {
+ return true; // Match
+ } else if (event.getType() != TriggerEvent.CHANGE_EVENT
+ && trimTransEvent.equals("*")) {
+ return true; // Wildcard, skip gen'ed ones like .done etc.
+ } else if (trimTransEvent.endsWith(".*")
+ && trimName.startsWith(trimTransEvent.substring(0,
+ trimTransEvent.length() - 1))) {
+ return true; // Prefixed wildcard
}
return false;
}
@@ -160,127 +157,104 @@ public class SCXMLSemanticsImpl implemen
* @param parentStateId
* the ID of the parent state of the <invoke> holding
* the <finalize>
- * @param eventOccurrences
- * current events
+ * @param event
+ * current event
* @return true/false
*/
protected boolean finalizeMatch(final String parentStateId,
- final Set<TriggerEvent> eventOccurrences) {
+ final TriggerEvent event) {
String prefix = parentStateId + ".invoke."; // invoke prefix
- for (TriggerEvent te : eventOccurrences) {
- String evt = te.getName();
- if (evt != null && evt.trim().startsWith(prefix)) {
- return true;
- }
+ String name = event.getName();
+ if (name != null && name.trim().startsWith(prefix)) {
+ return true;
}
return false;
}
- protected void executeContent(Executable exec, final EventDispatcher \
evtDispatcher, final ErrorReporter errRep,
- final SCInstance scInstance, final \
Collection<TriggerEvent> internalEvents) + protected void \
executeContent(SCXMLExecutionContext ctx, Executable exec) throws ModelException {
try {
for (Action action : exec.getActions()) {
- action.execute(evtDispatcher, errRep, scInstance, appLog, \
internalEvents); + action.execute(ctx.getActionExecutionContext());
}
} catch (SCXMLExpressionException e) {
- errRep.onError(ErrorConstants.EXPRESSION_ERROR, e.getMessage(), exec);
+ ctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, \
e.getMessage(), exec); }
}
/**
- * @param input
- * SCXML state machine
+ * Optional post processing immediately following SCXMLReader. May be used
+ * for removing pseudo-states etc.
+ *
+ * @param input SCXML state machine
+ * @param errRep ErrorReporter callback
* @return normalized SCXML state machine, pseudo states are removed, etc.
- * @param errRep
- * ErrorReporter callback
*/
- public SCXML normalizeStateMachine(final SCXML input,
- final ErrorReporter errRep) {
+ public SCXML normalizeStateMachine(final SCXML input, final ErrorReporter \
errRep) { //it is a no-op for now
return input;
}
- public void executeGlobalScript(final Step step, final SCXML stateMachine, final \
EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance \
scInstance) throws ModelException {
- if (stateMachine.getGlobalScript() != null) {
+ public void executeGlobalScript(final SCXMLExecutionContext ctx, final Step \
step) throws ModelException { + Script globalScript = \
ctx.getStatemachine().getGlobalScript(); + if ( globalScript != null) {
try {
- stateMachine.getGlobalScript().execute(evtDispatcher, errRep, \
scInstance, appLog,
- step.getAfterStatus().getEvents());
+ globalScript.execute(ctx.getActionExecutionContext());
} catch (SCXMLExpressionException e) {
- errRep.onError(ErrorConstants.EXPRESSION_ERROR, e.getMessage(), \
stateMachine); + \
ctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, e.getMessage(), \
ctx.getStatemachine()); }
}
}
- public void exitStates(final Step step, final SCXML stateMachine, final \
EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance) \
throws ModelException {
- NotificationRegistry nr = scInstance.getNotificationRegistry();
- Collection<TriggerEvent> internalEvents = step.getAfterStatus().getEvents();
+ public void exitStates(final SCXMLExecutionContext ctx, final Step step) throws \
ModelException { + NotificationRegistry nr = ctx.getNotificationRegistry();
// ExecutePhaseActions / OnExit
for (EnterableState es : step.getExitList()) {
OnExit oe = es.getOnExit();
- executeContent(oe, evtDispatcher, errRep, scInstance, internalEvents);
+ executeContent(ctx, oe);
if (es instanceof TransitionalState) {
// check if invokers are active in this state
for (Invoke inv : ((TransitionalState)es).getInvokes()) {
- Invoker toCancel = scInstance.getInvoker(inv);
- if (toCancel != null) {
- try {
- toCancel.cancel();
- } catch (InvokerException ie) {
- TriggerEvent te = new TriggerEvent(es.getId()
- + ".invoke.cancel.failed", \
TriggerEvent.ERROR_EVENT);
- internalEvents.add(te);
- }
- // done here, don't wait for cancel response
- scInstance.removeInvoker(inv);
- }
+ ctx.cancelInvoker(inv);
}
}
nr.fireOnExit(es, es);
- nr.fireOnExit(stateMachine, es);
- TriggerEvent te = new TriggerEvent(es.getId() + ".exit",
- TriggerEvent.CHANGE_EVENT);
- internalEvents.add(te);
+ nr.fireOnExit(ctx.getStatemachine(), es);
+ TriggerEvent te = new TriggerEvent(es.getId() + ".exit", \
TriggerEvent.CHANGE_EVENT); + ctx.addInternalEvent(te);
}
}
- public void executeTransitionContent(final Step step, final SCXML stateMachine, \
final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final \
SCInstance scInstance) throws ModelException {
- NotificationRegistry nr = scInstance.getNotificationRegistry();
- Collection<TriggerEvent> internalEvents = step.getAfterStatus().getEvents();
+ public void executeTransitionContent(final SCXMLExecutionContext ctx, final Step \
step) throws ModelException { + NotificationRegistry nr = \
ctx.getNotificationRegistry(); for (SimpleTransition st : step.getTransitList()) {
- executeContent(st, evtDispatcher, errRep, scInstance, internalEvents);
+ executeContent(ctx, st);
if (st instanceof Transition) {
Transition t = (Transition)st;
for (TransitionTarget tt : st.getRuntimeTargets()) {
nr.fireOnTransition(st, st.getParent(), tt, t);
- nr.fireOnTransition(stateMachine, t.getParent(), tt, t);
+ nr.fireOnTransition(ctx.getStatemachine(), t.getParent(), tt, \
t); }
}
}
}
- public void enterStates(final Step step, final SCXML stateMachine, final \
EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance) \
throws ModelException {
- NotificationRegistry nr = scInstance.getNotificationRegistry();
- Collection<TriggerEvent> internalEvents = step.getAfterStatus().getEvents();
+ public void enterStates(final SCXMLExecutionContext ctx, final Step step) throws \
ModelException { + NotificationRegistry nr = ctx.getNotificationRegistry();
for (EnterableState es : step.getEntryList()) {
OnEntry oe = es.getOnEntry();
- executeContent(oe, evtDispatcher, errRep, scInstance, internalEvents);
+ executeContent(ctx, oe);
nr.fireOnEntry(es, es);
- nr.fireOnEntry(stateMachine, es);
- TriggerEvent te = new TriggerEvent(es.getId() + ".entry",
- TriggerEvent.CHANGE_EVENT);
- internalEvents.add(te);
+ nr.fireOnEntry(ctx.getStatemachine(), es);
+ TriggerEvent te = new TriggerEvent(es.getId() + ".entry", \
TriggerEvent.CHANGE_EVENT); + ctx.addInternalEvent(te);
// actions in initial transition (if any) and .done events
if (es instanceof State) {
State ts = (State) es;
Initial ini = ts.getInitial();
if (ts.isComposite() && ini != null) { // TODO: use \
step.getDefaultEntrySet().contains(tt) instead
- executeContent(ini.getTransition(), evtDispatcher, errRep, \
scInstance, internalEvents); + executeContent(ctx, \
ini.getTransition()); }
}
else if (es instanceof Final) {
@@ -289,11 +263,9 @@ public class SCXMLSemanticsImpl implemen
if (parent != null) {
prefix = parent.getId();
}
- te = new TriggerEvent(prefix + ".done",
- TriggerEvent.CHANGE_EVENT);
- internalEvents.add(te);
+ ctx.addInternalEvent(new TriggerEvent(prefix + \
".done",TriggerEvent.CHANGE_EVENT)); if (parent != null) {
- scInstance.setDone(parent, true);
+ ctx.getScInstance().setDone(parent, true);
}
if (parent != null && parent.isRegion()) {
//3.4 we got a region, which is finalized
@@ -303,15 +275,13 @@ public class SCXMLSemanticsImpl implemen
int pCount = p.getChildren().size();
for (TransitionTarget ttreg : p.getChildren()) {
State reg = (State) ttreg;
- if (scInstance.isDone(reg)) {
+ if (ctx.getScInstance().isDone(reg)) {
finCount++;
}
}
if (finCount == pCount) {
- te = new TriggerEvent(p.getId() + ".done",
- TriggerEvent.CHANGE_EVENT);
- internalEvents.add(te);
- scInstance.setDone(p, true);
+ ctx.addInternalEvent(new TriggerEvent(p.getId() + \
".done",TriggerEvent.CHANGE_EVENT)); + \
ctx.getScInstance().setDone(p, true); }
}
}
@@ -319,27 +289,21 @@ public class SCXMLSemanticsImpl implemen
}
/**
- * @param step
- * provides target states and entry list to fill in [out]
- * @param stateMachine
- * SCXML state machine [in]
- * @param errRep
- * ErrorReporter callback [inout]
- * @param scInstance
- * The state chart instance [in]
- * @throws org.apache.commons.scxml2.model.ModelException
- * in case there is a fatal SCXML object model problem.
+ * Determining the initial state(s) for this state machine.
+ *
+ * @param ctx provides the execution context
+ * @param step provides target states and entry list to fill in [out]
+ *
+ * @throws org.apache.commons.scxml2.model.ModelException in case there is a \
fatal SCXML object model problem.
*/
- public void determineInitialStates(final Step step, final SCXML stateMachine, \
final ErrorReporter errRep,
- final SCInstance scInstance)
- throws ModelException {
- SimpleTransition t = stateMachine.getInitialTransition();
+ public void determineInitialStates(final SCXMLExecutionContext ctx, final Step \
step) throws ModelException { + SimpleTransition t = \
ctx.getStatemachine().getInitialTransition(); if (t == null) {
- errRep.onError(ErrorConstants.NO_INITIAL,
- "SCXML initialstate is missing!", stateMachine);
+ ctx.getErrorReporter().onError(ErrorConstants.NO_INITIAL,
+ "SCXML initialstate is missing!", ctx.getStatemachine());
} else {
Set<EnterableState> states = step.getAfterStatus().getStates();
- states.addAll(determineTargetStates(new \
HashSet<TransitionTarget>(t.getTargets()), errRep, scInstance)); + \
states.addAll(determineTargetStates(ctx, new \
HashSet<TransitionTarget>(t.getTargets())));
//set of ALL entered states (even if initialState is a jump-over)
Set<EnterableState> onEntry = SCXMLHelper.getAncestorClosure(states, \
null); step.getEntryList().addAll(onEntry);
@@ -351,40 +315,24 @@ public class SCXMLSemanticsImpl implemen
/**
* Executes all OnExit/Transition/OnEntry transitional actions.
*
- * @param step
- * provides EntryList, TransitList, ExitList gets
- * updated its AfterStatus/Events
- * @param stateMachine
- * state machine - SCXML instance
- * @param evtDispatcher
- * the event dispatcher - EventDispatcher instance
- * @param errRep
- * error reporter
- * @param scInstance
- * The state chart instance
- * @throws ModelException
- * in case there is a fatal SCXML object model problem.
- */
- public void executeActions(final Step step, final SCXML stateMachine,
- final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance \
scInstance)
- throws ModelException {
- exitStates(step, stateMachine, evtDispatcher, errRep, scInstance);
- executeTransitionContent(step, stateMachine, evtDispatcher, errRep, \
scInstance);
- enterStates(step, stateMachine, evtDispatcher, errRep, scInstance);
+ * @param ctx provides the execution context
+ * @param step provides EntryList, TransitList, ExitList gets updated its \
AfterStatus/Events + *
+ * @throws org.apache.commons.scxml2.model.ModelException in case there is a \
fatal SCXML object model problem. + */
+ public void executeActions(final SCXMLExecutionContext ctx, final Step step) \
throws ModelException { + exitStates(ctx, step);
+ executeTransitionContent(ctx, step);
+ enterStates(ctx, step);
}
/**
- * @param stateMachine
- * a SM to traverse [in]
- * @param step
- * with current status and list of transitions to populate
- * [inout]
- * @param errRep
- * ErrorReporter callback [inout]
+ * Enumerate all the reachable transitions.
+ *
+ * @param ctx provides the execution context
+ * @param step with current status and list of transitions to populate
*/
- public void enumerateReachableTransitions(final SCXML stateMachine,
- final Step step, final ErrorReporter errRep) {
+ public void enumerateReachableTransitions(final SCXMLExecutionContext ctx, final \
Step step) { // prevents adding the same transition multiple times
Set<Transition> transSet = new HashSet<Transition>();
// prevents visiting the same state multiple times
@@ -413,38 +361,27 @@ public class SCXMLSemanticsImpl implemen
}
/**
- * @param step
- * [inout]
- * @param evtDispatcher
- * The {@link EventDispatcher} [in]
- * @param errRep
- * ErrorReporter callback [inout]
- * @param scInstance
- * The state chart instance [in]
- * @throws ModelException
- * in case there is a fatal SCXML object model problem.
- */
- public void filterTransitionsSet(final Step step,
- final EventDispatcher evtDispatcher,
- final ErrorReporter errRep, final SCInstance scInstance)
- throws ModelException {
+ * Filter the transitions set, eliminate those whose guard conditions
+ * are not satisfied.
+ *
+ * @param ctx provides the execution context
+ * @param step with current status
+ *
+ * @throws org.apache.commons.scxml2.model.ModelException in case there is a \
fatal SCXML object model problem. + */
+ public void filterTransitionsSet(final SCXMLExecutionContext ctx, final Step \
step) throws ModelException { /*
- * - filter transition set by applying events
- * (step/beforeStatus/events + step/externalEvents) (local check)
+ * - filter transition set by applying step.event
* - evaluating guard conditions for
* each transition (local check) - transition precedence (bottom-up)
* as defined by SCXML specs
*/
- Set<TriggerEvent> allEvents = new \
HashSet<TriggerEvent>(step.getBeforeStatus().getEvents().size()
- + step.getExternalEvents().size());
- allEvents.addAll(step.getBeforeStatus().getEvents());
- allEvents.addAll(step.getExternalEvents());
// Finalize invokes, if applicable
- for (Map.Entry<Invoke, String> entry : scInstance.getInvokeIds().entrySet()) \
{
- if (finalizeMatch(entry.getValue(), allEvents)) {
+ for (Map.Entry<Invoke, String> entry : ctx.getInvokeIds().entrySet()) {
+ if (finalizeMatch(entry.getValue(), step.getEvent())) {
Finalize fn = entry.getKey().getFinalize();
if (fn != null) {
- executeContent(fn, evtDispatcher, errRep, scInstance, \
step.getAfterStatus().getEvents()); + executeContent(ctx, fn);
}
}
}
@@ -453,7 +390,7 @@ public class SCXMLSemanticsImpl implemen
//iterate over non-filtered transition set
for (SimpleTransition st : step.getTransitList()) {
Transition t;
- if (st instanceof SimpleTransition) {
+ if (st instanceof Transition) {
t = (Transition)st;
}
else {
@@ -461,7 +398,7 @@ public class SCXMLSemanticsImpl implemen
}
// event check
String event = t.getEvent();
- if (!eventMatch(event, allEvents)) {
+ if (!eventMatch(event, step.getEvent())) {
// t has a non-empty event which is not triggered
removeList.add(t);
continue; //makes no sense to eval guard cond.
@@ -475,20 +412,22 @@ public class SCXMLSemanticsImpl implemen
// Note: a History Transition may NOT have a cond or event \
specified, so here we are ensured that // only EnterableState Transitions are \
evaluated try {
- Context ctx = \
scInstance.getContext((EnterableState)t.getParent());
- ctx.setLocal(NAMESPACES_KEY, t.getNamespaces());
- rslt = scInstance.getEvaluator().evalCond(ctx,
- t.getCond());
+ Context context = \
ctx.getScInstance().getContext((EnterableState)t.getParent()); + \
context.setLocal(NAMESPACES_KEY, t.getNamespaces()); + rslt = \
ctx.getEvaluator().evalCond(context, + t.getCond());
if (rslt == null) {
if (appLog.isDebugEnabled()) {
- appLog.debug("Treating as false because the cond \
expression was evaluated as null: '" + t.getCond() + "'"); + \
appLog.debug("Treating as false because the cond expression was evaluated as null: '" \
+ + t.getCond() + "'");
}
rslt = Boolean.FALSE;
}
- ctx.setLocal(NAMESPACES_KEY, null);
+ context.setLocal(NAMESPACES_KEY, null);
} catch (SCXMLExpressionException e) {
rslt = Boolean.FALSE;
- errRep.onError(ErrorConstants.EXPRESSION_ERROR, "Treating as \
false due to error: " + e.getMessage(), t); + \
ctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, "Treating as false \
due to error: " + + e.getMessage(), t);
// TODO: place the error 'error.execution' in the internal event \
queue. (section "3.12.2 Errors") }
}
@@ -500,7 +439,6 @@ public class SCXMLSemanticsImpl implemen
// apply event + guard condition filter
step.getTransitList().removeAll(removeList);
// cleanup temporary structures
- allEvents.clear();
removeList.clear();
// optimization - global precedence potentially applies
// only if there are multiple enabled transitions
@@ -593,18 +531,13 @@ public class SCXMLSemanticsImpl implemen
}
/**
- * @param targets
- * a set seeded in previous step [inout]
- * @param errRep
- * ErrorReporter callback [inout]
- * @param scInstance
- * The state chart instance [in]
- * @throws ModelException On illegal configuration
- * @see #seedTargetSet(Set, List, ErrorReporter)
- */
- public Set<EnterableState> determineTargetStates(final Set<TransitionTarget> \
targets,
- final ErrorReporter errRep, final SCInstance scInstance)
- throws ModelException {
+ * @param ctx provides the execution context
+ * @param targets a set seeded in previous step [inout]
+ * @throws org.apache.commons.scxml2.model.ModelException On illegal \
configuration + * @see #seedTargetSet(java.util.Set, java.util.List, \
org.apache.commons.scxml2.ErrorReporter) + */
+ public Set<EnterableState> determineTargetStates(SCXMLExecutionContext ctx, \
final Set<TransitionTarget> targets) + throws ModelException {
LinkedList<TransitionTarget> wrkSet = new \
LinkedList<TransitionTarget>(targets); Set<EnterableState> states = new \
HashSet<EnterableState>(); while (!wrkSet.isEmpty()) {
@@ -618,8 +551,7 @@ public class SCXMLSemanticsImpl implemen
states.add(st); //leaf
} else {
// composite state
- List<TransitionTarget> initialStates = \
st.getInitial().getTransition().
- getTargets();
+ List<TransitionTarget> initialStates = \
st.getInitial().getTransition().getTargets(); wrkSet.addAll(initialStates);
}
} else if (tt instanceof Parallel) {
@@ -630,10 +562,10 @@ public class SCXMLSemanticsImpl implemen
}
} else if (tt instanceof History) {
History h = (History) tt;
- if (scInstance.isEmpty(h)) {
+ if (ctx.getScInstance().isEmpty(h)) {
wrkSet.addAll(h.getTransition().getRuntimeTargets());
} else {
- wrkSet.addAll(scInstance.getLastConfiguration(h));
+ wrkSet.addAll(ctx.getScInstance().getLastConfiguration(h));
}
} else {
throw new ModelException("Unknown TransitionTarget subclass:"
@@ -647,15 +579,10 @@ public class SCXMLSemanticsImpl implemen
* Go over the exit list and update history information for
* relevant states.
*
- * @param step
- * [inout]
- * @param errRep
- * ErrorReporter callback [inout]
- * @param scInstance
- * The state chart instance [inout]
+ * @param ctx provides the execution context
+ * @param step The current Step
*/
- public void updateHistoryStates(final Step step,
- final ErrorReporter errRep, final SCInstance scInstance) {
+ public void updateHistoryStates(SCXMLExecutionContext ctx, final Step step) {
Set<EnterableState> oldStates = step.getBeforeStatus().getStates();
for (EnterableState es : step.getExitList()) {
if (es instanceof TransitionalState) {
@@ -674,14 +601,14 @@ public class SCXMLSemanticsImpl implemen
}
}
}
- scInstance.setLastConfiguration(h, deep);
+ ctx.getScInstance().setLastConfiguration(h, deep);
} else {
if (shallow == null) {
//calculate shallow history for a given state once
shallow = new \
HashSet<EnterableState>(ts.getChildren());
\
shallow.retainAll(SCXMLHelper.getAncestorClosure(oldStates, null)); }
- scInstance.setLastConfiguration(h, shallow);
+ ctx.getScInstance().setLastConfiguration(h, shallow);
}
}
}
@@ -693,16 +620,12 @@ public class SCXMLSemanticsImpl implemen
* Follow the candidate transitions for this execution Step, and update the
* lists of entered and exited states accordingly.
*
+ * @param ctx provides the execution context
* @param step The current Step
- * @param errorReporter The ErrorReporter for the current environment
- * @param scInstance The state chart instance
*
- * @throws ModelException
- * in case there is a fatal SCXML object model problem.
+ * @throws org.apache.commons.scxml2.model.ModelException in case there is a \
fatal SCXML object model problem.
*/
- public void followTransitions(final Step step,
- final ErrorReporter errorReporter, final SCInstance scInstance)
- throws ModelException {
+ public void followTransitions(final SCXMLExecutionContext ctx, final Step step) \
throws ModelException {
Set<EnterableState> currentStates = step.getBeforeStatus().getStates();
List<SimpleTransition> transitions = step.getTransitList();
// DetermineExitedStates (currentStates, transitList) -> exitedStates
@@ -716,10 +639,10 @@ public class SCXMLSemanticsImpl implemen
Set<EnterableState> residual = new HashSet<EnterableState>(currentStates);
residual.removeAll(exitedStates);
// SeedTargetSet (residual, transitList) -> seedSet
- Set<TransitionTarget> seedSet = seedTargetSet(residual, transitions, \
errorReporter); + Set<TransitionTarget> seedSet = seedTargetSet(residual, \
transitions, ctx.getErrorReporter()); // DetermineTargetStates (initialTargetSet) -> \
targetSet
Set<EnterableState> targetSet = step.getAfterStatus().getStates();
- targetSet.addAll(determineTargetStates(seedSet, errorReporter, scInstance));
+ targetSet.addAll(determineTargetStates(ctx, seedSet));
// BuildOnEntryList (targetSet, seedSet) -> entryList
Set<EnterableState> entered = SCXMLHelper.getAncestorClosure(targetSet, \
seedSet); seedSet.clear();
@@ -736,45 +659,38 @@ public class SCXMLSemanticsImpl implemen
// Check whether the computed state config is legal
targetSet.addAll(residual);
residual.clear();
- if (!SCXMLHelper.isLegalConfig(targetSet, errorReporter)) {
+ if (!SCXMLHelper.isLegalConfig(targetSet, ctx.getErrorReporter())) {
throw new ModelException("Illegal state machine configuration!");
}
// sort onEntry and onExit according state hierarchy
for (TransitionTarget tt : exitedStates) {
step.getExitList().add((EnterableState)tt);
}
- Collections.sort(step.getExitList(),DocumentOrder.documentOrderComparator);
+ Collections.sort(step.getExitList(),DocumentOrder.reverseDocumentOrderComparator);
step.getEntryList().addAll(entered);
- Collections.sort(step.getEntryList(), \
DocumentOrder.reverseDocumentOrderComparator); + \
Collections.sort(step.getEntryList(), DocumentOrder.documentOrderComparator); for \
(EnterableState es : step.getEntryList()) { if (es instanceof State) {
- scInstance.setDone(es, false);
+ ctx.getScInstance().setDone(es, false);
}
}
}
+
/**
- * Process any existing invokes, includes forwarding external events,
- * and executing any finalize handlers.
+ * Forward events to invoked activities, execute finalize handlers.
*
- * @param events
- * The events to be forwarded
- * @param errRep
- * ErrorReporter callback
- * @param scInstance
- * The state chart instance
- * @throws ModelException
- * in case there is a fatal SCXML object model problem.
- */
- public void processInvokes(final TriggerEvent[] events,
- final ErrorReporter errRep, final SCInstance scInstance)
- throws ModelException {
+ * @param ctx provides the execution context
+ * @param event The events to be forwarded
+ *
+ * @throws org.apache.commons.scxml2.model.ModelException in case there is a \
fatal SCXML object model problem. + */
+ public void processInvokes(final SCXMLExecutionContext ctx, final TriggerEvent \
event) throws ModelException { Set<TriggerEvent> allEvents = new \
HashSet<TriggerEvent>();
- allEvents.addAll(Arrays.asList(events));
- for (Map.Entry<Invoke, String> entry : scInstance.getInvokeIds().entrySet()) \
{
- if (!finalizeMatch(entry.getValue(), allEvents)) { // prevent cycles
- Invoker inv = scInstance.getInvoker(entry.getKey());
+ for (Map.Entry<Invoke, String> entry : ctx.getInvokeIds().entrySet()) {
+ if (!finalizeMatch(entry.getValue(), event)) { // prevent cycles
+ Invoker inv = ctx.getInvoker(entry.getKey());
try {
- inv.parentEvents(events);
+ inv.parentEvents(new TriggerEvent[]{event});
} catch (InvokerException ie) {
appLog.error(ie.getMessage(), ie);
throw new ModelException(ie.getMessage(), ie.getCause());
@@ -784,37 +700,31 @@ public class SCXMLSemanticsImpl implemen
}
/**
- * Initiate any new invokes.
+ * Initiate any new invoked activities.
*
- * @param step
- * The current Step
- * @param errRep
- * ErrorReporter callback
- * @param scInstance
- * The state chart instance
- */
- public void initiateInvokes(final Step step, final ErrorReporter errRep,
- final SCInstance scInstance) {
- Evaluator eval = scInstance.getEvaluator();
- Collection<TriggerEvent> internalEvents = step.getAfterStatus().getEvents();
+ * @param ctx provides the execution context
+ * @param step The current Step
+ */
+ public void initiateInvokes(final SCXMLExecutor executor, final \
SCXMLExecutionContext ctx, final Step step) { + SCInstance scInstance = \
ctx.getScInstance(); + Evaluator eval = ctx.getEvaluator();
for (EnterableState es : step.getAfterStatus().getStates()) {
if (es instanceof TransitionalState) {
TransitionalState ts = (TransitionalState) es;
- Context ctx = scInstance.getContext(ts);
+ Context context = scInstance.getContext(ts);
for (Invoke i : ts.getInvokes()) {
- if (i != null && scInstance.getInvoker(i) == null) {
+ if (i != null && ctx.getInvoker(i) == null) {
String src = i.getSrc();
if (src == null) {
String srcexpr = i.getSrcexpr();
Object srcObj;
try {
- ctx.setLocal(NAMESPACES_KEY, i.getNamespaces());
- srcObj = eval.eval(ctx, srcexpr);
- ctx.setLocal(NAMESPACES_KEY, null);
+ context.setLocal(NAMESPACES_KEY, i.getNamespaces());
+ srcObj = eval.eval(context, srcexpr);
+ context.setLocal(NAMESPACES_KEY, null);
src = String.valueOf(srcObj);
} catch (SCXMLExpressionException see) {
- errRep.onError(ErrorConstants.EXPRESSION_ERROR,
- see.getMessage(), i);
+ \
ctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, see.getMessage(), i); \
} }
String source = src;
@@ -822,14 +732,11 @@ public class SCXMLSemanticsImpl implemen
if (pr != null) {
source = i.getPathResolver().resolvePath(src);
}
- String type = i.getType();
Invoker inv;
try {
- inv = scInstance.newInvoker(type);
+ inv = ctx.newInvoker(i.getType());
} catch (InvokerException ie) {
- TriggerEvent te = new TriggerEvent(ts.getId()
- + ".invoke.failed", TriggerEvent.ERROR_EVENT);
- internalEvents.add(te);
+ ctx.addInternalEvent(new TriggerEvent(ts.getId()+ \
".invoke.failed", TriggerEvent.ERROR_EVENT)); continue;
}
List<Param> params = i.params();
@@ -837,46 +744,39 @@ public class SCXMLSemanticsImpl implemen
for (Param p : params) {
String argExpr = p.getExpr();
Object argValue = null;
- ctx.setLocal(NAMESPACES_KEY, p.getNamespaces());
+ context.setLocal(NAMESPACES_KEY, p.getNamespaces());
// Do we have an "expr" attribute?
if (argExpr != null && argExpr.trim().length() > 0) {
try {
- argValue = eval.eval(ctx, argExpr);
+ argValue = eval.eval(context, argExpr);
} catch (SCXMLExpressionException see) {
- errRep.onError(ErrorConstants.EXPRESSION_ERROR,
- see.getMessage(), i);
+ \
ctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, see.getMessage(), i); \
} } else {
// No. Does value of "name" attribute refer to a \
valid // location in the data model?
try {
- argValue = eval.evalLocation(ctx, p.getName());
+ argValue = eval.evalLocation(context, \
p.getName()); if (argValue == null) {
- // Generate error, 4.3.1 in WD-scxml-20080516
- TriggerEvent te = new \
TriggerEvent(ts.getId()
- + ERR_ILLEGAL_ALLOC,
- TriggerEvent.ERROR_EVENT);
- internalEvents.add(te);
+ // Generate error, 4.3.1 in \
WD-scxml-20080516 + ctx.addInternalEvent(new \
TriggerEvent(ts.getId()+ ERR_ILLEGAL_ALLOC,TriggerEvent.ERROR_EVENT)); }
} catch (SCXMLExpressionException see) {
- errRep.onError(ErrorConstants.EXPRESSION_ERROR,
- see.getMessage(), i);
+ \
ctx.getErrorReporter().onError(ErrorConstants.EXPRESSION_ERROR, see.getMessage(), i); \
} }
- ctx.setLocal(NAMESPACES_KEY, null);
+ context.setLocal(NAMESPACES_KEY, null);
args.put(p.getName(), argValue);
}
- String invokeId = scInstance.setInvoker(i, inv);
+ String invokeId = ctx.setInvoker(i, inv);
// TODO: API should reflect this isn't the parent state ID \
anymore but the invokeId inv.setParentStateId(invokeId);
- inv.setSCInstance(scInstance);
+ inv.setParentExecutor(executor);
try {
inv.invoke(source, args);
} catch (InvokerException ie) {
- TriggerEvent te = new TriggerEvent(ts.getId()
- + ".invoke.failed", TriggerEvent.ERROR_EVENT);
- internalEvents.add(te);
- scInstance.removeInvoker(i);
+ ctx.addInternalEvent(new TriggerEvent(ts.getId()+ \
".invoke.failed", TriggerEvent.ERROR_EVENT)); + \
ctx.removeInvoker(i); continue;
}
}
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/NamespacePrefixedXPathsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/ \
commons/scxml2/NamespacePrefixedXPathsTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/NamespacePrefixedXPathsTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/NamespacePrefixedXPathsTest.java \
Sun Mar 30 00:18:40 2014 @@ -82,7 +82,7 @@ public class NamespacePrefixedXPathsTest
currentStates = SCXMLTestHelper.fireEvent(exec, "twenty.done");
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("thirty", currentStates.iterator().next().getId());
- exec = SCXMLTestHelper.testExecutorSerializability(exec);
+ exec = SCXMLTestHelper.testInstanceSerializability(exec);
// Tests XPath on SCXML actions, set while exiting "twenty"
String retvalstr = (String) exec.getRootContext().get("retval");
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCInstanceTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCInstanceTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCInstanceTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCInstanceTest.java \
Sun Mar 30 00:18:40 2014 @@ -25,18 +25,19 @@ import org.apache.commons.scxml2.env.jex
import org.apache.commons.scxml2.model.EnterableState;
import org.apache.commons.scxml2.model.History;
import org.apache.commons.scxml2.model.State;
-import org.apache.commons.scxml2.model.TransitionTarget;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class SCInstanceTest {
+ private SCXMLExecutor executor;
private SCInstance instance;
@Before
public void setUp() {
- instance = new SCInstance(null);
+ executor = new SCXMLExecutor();
+ instance = executor.getSCInstance();
}
@Test
@@ -56,9 +57,9 @@ public class SCInstanceTest {
@Test
public void testGetRootContextEvaluator() {
Evaluator evaluator = new JexlEvaluator();
-
- instance.setEvaluator(evaluator);
-
+
+ executor.setEvaluator(evaluator);
+
Assert.assertTrue(instance.getRootContext() instanceof JexlContext);
}
@@ -85,7 +86,7 @@ public class SCInstanceTest {
instance.setRootContext(context);
Evaluator evaluator = new JexlEvaluator();
- instance.setEvaluator(evaluator);
+ executor.setEvaluator(evaluator);
Assert.assertEquals("value", instance.getContext(target).get("name"));
Assert.assertEquals("value", instance.lookupContext(target).get("name"));
@@ -106,7 +107,7 @@ public class SCInstanceTest {
instance.setRootContext(context);
Evaluator evaluator = new JexlEvaluator();
- instance.setEvaluator(evaluator);
+ executor.setEvaluator(evaluator);
Assert.assertEquals("value", instance.getContext(target).get("name"));
Assert.assertEquals("value", instance.lookupContext(target).get("name"));
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCXMLExecutorTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/ \
commons/scxml2/SCXMLExecutorTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff \
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCXMLExecutorTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCXMLExecutorTest.java \
Sun Mar 30 00:18:40 2014 @@ -221,7 +221,7 @@ public class SCXMLExecutorTest {
Set<EnterableState> currentStates = SCXMLTestHelper.fireEvent(exec, \
"ten.stay"); Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("ten", currentStates.iterator().next().getId());
- exec = SCXMLTestHelper.testExecutorSerializability(exec);
+ exec = SCXMLTestHelper.testInstanceSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "ten.self");
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("ten", currentStates.iterator().next().getId());
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCXMLTestHelper.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCXMLTestHelper.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCXMLTestHelper.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/SCXMLTestHelper.java \
Sun Mar 30 00:18:40 2014 @@ -294,23 +294,22 @@ public class SCXMLTestHelper {
return roundtrip;
}
- public static SCXMLExecutor testExecutorSerializability(final SCXMLExecutor \
exec) throws Exception { + public static SCXMLExecutor \
testInstanceSerializability(final SCXMLExecutor exec) throws Exception { File \
fileDir = new File(SERIALIZATION_DIR); if (!fileDir.exists()) {
fileDir.mkdirs();
}
String filename = SERIALIZATION_FILE_PREFIX
+ getSequenceNumber() + SERIALIZATION_FILE_SUFFIX;
- SCXMLExecutor roundtrip = null;
ObjectOutputStream out =
new ObjectOutputStream(new FileOutputStream(filename));
- out.writeObject(exec);
+ out.writeObject(exec.detachInstance());
out.close();
ObjectInputStream in =
new ObjectInputStream(new FileInputStream(filename));
- roundtrip = (SCXMLExecutor) in.readObject();
+ exec.attachInstance((SCInstance) in.readObject());
in.close();
- return roundtrip;
+ return exec;
}
/**
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/StatusTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/StatusTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/StatusTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/StatusTest.java \
Sun Mar 30 00:18:40 2014 @@ -51,16 +51,6 @@ public class StatusTest {
}
@Test
- public void testIsFinalStateHasEvent() {
- Final state = new Final();
-
- status.getStates().add(state);
- status.getEvents().add(new TriggerEvent("name", TriggerEvent.CALL_EVENT));
-
- Assert.assertFalse(status.isFinal());
- }
-
- @Test
public void testIsFinalState() {
Final state = new Final();
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/WildcardTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/WildcardTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/WildcardTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/WildcardTest.java \
Sun Mar 30 00:18:40 2014 @@ -63,7 +63,7 @@ public class WildcardTest {
Set<EnterableState> currentStates = exec.getCurrentStatus().getStates();
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state1", currentStates.iterator().next().getId());
- exec = SCXMLTestHelper.testExecutorSerializability(exec);
+ exec = SCXMLTestHelper.testInstanceSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "foo.bar.baz");
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state4", currentStates.iterator().next().getId());
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/WizardsTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/WizardsTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/WizardsTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/WizardsTest.java \
Sun Mar 30 00:18:40 2014 @@ -71,7 +71,7 @@ public class WizardsTest {
Set<EnterableState> currentStates = exec.getCurrentStatus().getStates();
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state1", currentStates.iterator().next().getId());
- exec = SCXMLTestHelper.testExecutorSerializability(exec);
+ exec = SCXMLTestHelper.testInstanceSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "event2");
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state2", currentStates.iterator().next().getId());
@@ -81,7 +81,7 @@ public class WizardsTest {
currentStates = SCXMLTestHelper.fireEvent(exec, "event3");
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state3", currentStates.iterator().next().getId());
- exec = SCXMLTestHelper.testExecutorSerializability(exec);
+ exec = SCXMLTestHelper.testInstanceSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "event3"); // ensure we stay \
put Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state3", currentStates.iterator().next().getId());
@@ -99,7 +99,7 @@ public class WizardsTest {
Set<EnterableState> currentStates = exec.getCurrentStatus().getStates();
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state2", currentStates.iterator().next().getId());
- exec = SCXMLTestHelper.testExecutorSerializability(exec);
+ exec = SCXMLTestHelper.testInstanceSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "event4");
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state4", currentStates.iterator().next().getId());
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/env/groovy/SerializableInitialBaseScriptTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/ \
commons/scxml2/env/groovy/SerializableInitialBaseScriptTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/env/groovy/SerializableInitialBaseScriptTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/env/groovy/SerializableInitialBaseScriptTest.java \
Sun Mar 30 00:18:40 2014 @@ -64,7 +64,7 @@ public class SerializableInitialBaseScri
Set<EnterableState> currentStates = exec.getCurrentStatus().getStates();
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state1", currentStates.iterator().next().getId());
- exec = SCXMLTestHelper.testExecutorSerializability(exec);
+ exec = SCXMLTestHelper.testInstanceSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "foo.bar.baz");
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("state4", currentStates.iterator().next().getId());
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/env/javascript/JSExampleTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/ \
commons/scxml2/env/javascript/JSExampleTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/env/javascript/JSExampleTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/env/javascript/JSExampleTest.java \
Sun Mar 30 00:18:40 2014 @@ -19,26 +19,21 @@ package org.apache.commons.scxml2.env.ja
import java.net.URL;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.List;
import java.util.Set;
-import org.apache.commons.logging.Log;
import org.apache.commons.scxml2.Context;
-import org.apache.commons.scxml2.ErrorReporter;
import org.apache.commons.scxml2.Evaluator;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
import org.apache.commons.scxml2.SCXMLExecutor;
import org.apache.commons.scxml2.SCXMLExpressionException;
import org.apache.commons.scxml2.SCXMLTestHelper;
import org.apache.commons.scxml2.TriggerEvent;
import org.apache.commons.scxml2.model.Action;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.model.CustomAction;
import org.apache.commons.scxml2.model.EnterableState;
import org.apache.commons.scxml2.model.ModelException;
import org.apache.commons.scxml2.model.SCXML;
-import org.apache.commons.scxml2.model.State;
import org.junit.After;
import org.junit.Assert;
@@ -97,10 +92,8 @@ public class JSExampleTest {
private static final long serialVersionUID = 1L;
@Override
- public void execute(EventDispatcher dispatcher, ErrorReporter reporter,
- SCInstance instance, Log log, Collection<TriggerEvent> events)
- throws ModelException,SCXMLExpressionException {
- events.add(new TriggerEvent("ok",TriggerEvent.SIGNAL_EVENT,"and its ok \
with me to")); + public void execute(ActionExecutionContext exctx) throws \
ModelException, SCXMLExpressionException { + exctx.addInternalEvent(new \
TriggerEvent("ok",TriggerEvent.SIGNAL_EVENT,"and its ok with me to")); }
}
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/invoke/InvokeParamNameTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/ \
commons/scxml2/invoke/InvokeParamNameTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/invoke/InvokeParamNameTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/invoke/InvokeParamNameTest.java \
Sun Mar 30 00:18:40 2014 @@ -90,9 +90,11 @@ public class InvokeParamNameTest {
@Test
public void testWrongNameLocation() throws Exception {
trigger(); trigger(); trigger();
+ /* TODO: restore or drop test
Assert.assertEquals(1, exec.getCurrentStatus().getEvents().size());
final TriggerEvent evt = \
exec.getCurrentStatus().getEvents().iterator().next(); \
Assert.assertTrue(evt.getName().endsWith("error.illegalalloc")); + */
}
public static class DummyInvoker implements Invoker {
@@ -123,7 +125,7 @@ public class InvokeParamNameTest {
// Not needed
}
- public void setSCInstance(SCInstance scInstance) {
+ public void setParentExecutor(SCXMLExecutor parentExecutor) {
// Not needed
}
}
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/io/SCXMLReaderTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/ \
commons/scxml2/io/SCXMLReaderTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff \
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/io/SCXMLReaderTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/io/SCXMLReaderTest.java \
Sun Mar 30 00:18:40 2014 @@ -20,7 +20,6 @@ import java.io.IOException;
import java.io.StringReader;
import java.net.URL;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
@@ -31,12 +30,9 @@ import org.apache.commons.logging.LogCon
import org.apache.commons.logging.LogFactory;
import org.apache.commons.logging.impl.LogFactoryImpl;
import org.apache.commons.logging.impl.SimpleLog;
-import org.apache.commons.scxml2.ErrorReporter;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.SCXMLExpressionException;
import org.apache.commons.scxml2.SCXMLTestHelper;
-import org.apache.commons.scxml2.TriggerEvent;
import org.apache.commons.scxml2.io.SCXMLReader.Configuration;
import org.apache.commons.scxml2.model.Action;
import org.apache.commons.scxml2.model.CustomAction;
@@ -338,10 +334,7 @@ public class SCXMLReaderTest {
private List<Node> nodes = new ArrayList<Node>();
@Override
- public void execute(EventDispatcher evtDispatcher,
- ErrorReporter errRep, SCInstance scInstance, Log appLog,
- Collection<TriggerEvent> derivedEvents)
- throws ModelException, SCXMLExpressionException {
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException { // Not relevant to test
}
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/issues/Issue112Test.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/ \
commons/scxml2/issues/Issue112Test.java?rev=1583086&r1=1583085&r2=1583086&view=diff \
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/issues/Issue112Test.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/issues/Issue112Test.java \
Sun Mar 30 00:18:40 2014 @@ -18,19 +18,14 @@ package org.apache.commons.scxml2.issues
import java.net.URL;
import java.util.ArrayList;
-import java.util.Collection;
import java.util.LinkedList;
import java.util.List;
import java.util.Queue;
-import org.apache.commons.logging.Log;
-import org.apache.commons.scxml2.ErrorReporter;
-import org.apache.commons.scxml2.EventDispatcher;
-import org.apache.commons.scxml2.SCInstance;
+import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.SCXMLExecutor;
import org.apache.commons.scxml2.SCXMLExpressionException;
import org.apache.commons.scxml2.SCXMLTestHelper;
-import org.apache.commons.scxml2.TriggerEvent;
import org.apache.commons.scxml2.model.Action;
import org.apache.commons.scxml2.model.CustomAction;
import org.apache.commons.scxml2.model.ModelException;
@@ -125,10 +120,7 @@ public class Issue112Test {
}
@Override
- public void execute(EventDispatcher evtDispatcher,
- ErrorReporter errRep, SCInstance scInstance, Log appLog,
- Collection<TriggerEvent> derivedEvents)
- throws ModelException, SCXMLExpressionException {
+ public void execute(ActionExecutionContext exctx) throws ModelException, \
SCXMLExpressionException {
Application.QUEUE.add(event);
Modified: commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/model/DatamodelTest.java
URL: http://svn.apache.org/viewvc/commons/proper/scxml/trunk/src/test/java/org/apache/ \
commons/scxml2/model/DatamodelTest.java?rev=1583086&r1=1583085&r2=1583086&view=diff \
==============================================================================
--- commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/model/DatamodelTest.java \
(original)
+++ commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml2/model/DatamodelTest.java \
Sun Mar 30 00:18:40 2014 @@ -124,7 +124,7 @@ public class DatamodelTest {
Set<EnterableState> currentStates = exec01.getCurrentStatus().getStates();
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("ten", currentStates.iterator().next().getId());
- exec01 = SCXMLTestHelper.testExecutorSerializability(exec01);
+ exec01 = SCXMLTestHelper.testInstanceSerializability(exec01);
currentStates = fireEvent("ten.done", exec01);
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("twenty", currentStates.iterator().next().getId());
@@ -136,12 +136,12 @@ public class DatamodelTest {
currentStates = fireEvent("twenty.done", exec01);
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("thirty", currentStates.iterator().next().getId());
- exec01 = SCXMLTestHelper.testExecutorSerializability(exec01);
+ exec01 = SCXMLTestHelper.testInstanceSerializability(exec01);
// exec02
currentStates = fireEvent("ten.done", exec02);
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("twenty", currentStates.iterator().next().getId());
- exec02 = SCXMLTestHelper.testExecutorSerializability(exec02);
+ exec02 = SCXMLTestHelper.testInstanceSerializability(exec02);
currentStates = fireEvent("twenty.done", exec02);
Assert.assertEquals(1, currentStates.size());
Assert.assertEquals("thirty", currentStates.iterator().next().getId());
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic