Author: rahul
Date: Thu Oct 5 12:48:12 2006
New Revision: 453336
URL: http://svn.apache.org/viewvc?view=rev&rev=453336
Log:
SCXMLExecutor instances are now Serializable. Various usecases have already
expressed the need for this.
As with the object model, many test cases in the Commons SCXML test suite have
now been altered to take a serialized snapshot of the executor at arbitrary
points in the test and read it back in before continuing the rest of the
(previously written) test.
SCXML-20
SCXML-29
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/NotificationRegistry.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCInstance.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCXMLExecutor.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Status.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleContext.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleDispatcher.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorHandler.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorReporter.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleSCXMLListener.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/Tracer.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jexl/JexlEvaluator.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/ELEvaluator.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/RootContext.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/TransitionTargetComparator.java
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLTestHelper.java
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WildcardTest.java
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WizardsTest.java
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/DatamodelTest.java
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/HistoryTest.java
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Builtin.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml;
+import java.io.Serializable;
import java.util.Iterator;
import java.util.Set;
@@ -36,7 +37,7 @@
* The current version of the specification defines one builtin
* predicate In()
*/
-public class Builtin {
+public class Builtin implements Serializable {
/**
* Implements the In() predicate for SCXML documents. The method
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/NotificationRegistry.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/NotificationRegistry.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/NotificationRegistry.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/NotificationRegistry.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml;
+import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Iterator;
@@ -36,7 +37,7 @@
* listeners of the events that interest them.
*
*/
-public final class NotificationRegistry {
+public final class NotificationRegistry implements Serializable {
/**
* The Map of all listeners keyed by Observable.
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCInstance.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCInstance.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCInstance.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCInstance.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml;
+import java.io.Serializable;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
@@ -33,7 +34,7 @@
* a particular execution of a state chart represented by a
* <code>SCXML</code> object.
*/
-public class SCInstance {
+public class SCInstance implements Serializable {
/**
* The notification registry.
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCXMLExecutor.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCXMLExecutor.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCXMLExecutor.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/SCXMLExecutor.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
@@ -45,7 +46,7 @@
*
* @see SCXMLSemantics
*/
-public class SCXMLExecutor {
+public class SCXMLExecutor implements Serializable {
/**
* The Logger for the SCXMLExecutor.
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Status.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Status.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Status.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/Status.java
Thu Oct 5 12:48:12 2006
@@ -17,11 +17,12 @@
*/
package org.apache.commons.scxml;
+import java.io.Serializable;
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
-import java.util.Collection;
import org.apache.commons.scxml.model.State;
@@ -29,7 +30,7 @@
* The encapsulation of the current state of a state machine.
*
*/
-public class Status {
+public class Status implements Serializable {
/**
* The states that are currently active.
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleContext.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleContext.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleContext.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleContext.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml.env;
+import java.io.Serializable;
import java.util.HashMap;
import java.util.Map;
@@ -28,7 +29,7 @@
* Simple Context wrapping a map of variables.
*
*/
-public class SimpleContext implements Context {
+public class SimpleContext implements Context, Serializable {
/** Implementation independent log category. */
private Log log = LogFactory.getLog(Context.class);
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleDispatcher.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleDispatcher.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleDispatcher.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleDispatcher.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml.env;
+import java.io.Serializable;
import java.util.List;
import java.util.Map;
@@ -29,7 +30,7 @@
* No remote eventing.
*
*/
-public final class SimpleDispatcher implements EventDispatcher {
+public final class SimpleDispatcher implements EventDispatcher, Serializable {
/** Implementation independent log category. */
private Log log = LogFactory.getLog(EventDispatcher.class);
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorHandler.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorHandler.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorHandler.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorHandler.java
Thu Oct 5 12:48:12 2006
@@ -17,9 +17,10 @@
*/
package org.apache.commons.scxml.env;
+import java.io.Serializable;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXParseException;
@@ -27,7 +28,7 @@
* Custom error handler that logs the parsing errors in the
* SCXML document.
*/
-public class SimpleErrorHandler implements ErrorHandler {
+public class SimpleErrorHandler implements ErrorHandler, Serializable {
/** Message prefix. */
private static final String MSG_PREFIX = "SCXML SAX Parsing: ";
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorReporter.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorReporter.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorReporter.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleErrorReporter.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml.env;
+import java.io.Serializable;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Map;
@@ -34,7 +35,7 @@
/**
* Custom error reporter that log execution errors.
*/
-public class SimpleErrorReporter implements ErrorReporter {
+public class SimpleErrorReporter implements ErrorReporter, Serializable {
/** Log. */
private Log log = LogFactory.getLog(getClass());
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleSCXMLListener.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleSCXMLListener.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleSCXMLListener.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/SimpleSCXMLListener.java
Thu Oct 5 12:48:12 2006
@@ -17,9 +17,10 @@
*/
package org.apache.commons.scxml.env;
+import java.io.Serializable;
+
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-
import org.apache.commons.scxml.SCXMLListener;
import org.apache.commons.scxml.model.Transition;
import org.apache.commons.scxml.model.TransitionTarget;
@@ -28,7 +29,7 @@
/**
* Simple SCXML Listener that logs execution.
*/
-public class SimpleSCXMLListener implements SCXMLListener {
+public class SimpleSCXMLListener implements SCXMLListener, Serializable {
/** Log. */
private Log log = LogFactory.getLog(getClass());
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/Tracer.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/Tracer.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/Tracer.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/Tracer.java
Thu Oct 5 12:48:12 2006
@@ -17,11 +17,12 @@
*/
package org.apache.commons.scxml.env;
+import java.io.Serializable;
+
import org.apache.commons.scxml.ErrorReporter;
import org.apache.commons.scxml.SCXMLListener;
import org.apache.commons.scxml.model.Transition;
import org.apache.commons.scxml.model.TransitionTarget;
-
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
@@ -30,7 +31,8 @@
* A simple tracer connected to Jakarta Commons Logging.
*
*/
-public class Tracer implements ErrorHandler, ErrorReporter, SCXMLListener {
+public class Tracer implements ErrorHandler, ErrorReporter,
+ SCXMLListener, Serializable {
/** ErrorHandler delegate. */
private ErrorHandler errHandler;
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jexl/JexlEvaluator.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jexl/JexlEvaluator.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jexl/JexlEvaluator.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jexl/JexlEvaluator.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml.env.jexl;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -35,7 +36,7 @@
* SCXML documents.
*
*/
-public class JexlEvaluator implements Evaluator {
+public class JexlEvaluator implements Evaluator, Serializable {
/** Error message if evaluation context is not a JexlContext. */
private static final String ERR_CTX_TYPE = "Error evaluating JEXL "
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/ELEvaluator.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/ELEvaluator.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/ELEvaluator.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/ELEvaluator.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml.env.jsp;
+import java.io.Serializable;
import java.lang.reflect.Method;
import java.util.Set;
import java.util.regex.Pattern;
@@ -40,7 +41,7 @@
* SCXML documents.
*
*/
-public class ELEvaluator implements Evaluator {
+public class ELEvaluator implements Evaluator, Serializable {
/** Implementation independent log category. */
private Log log = LogFactory.getLog(Evaluator.class);
@@ -55,7 +56,7 @@
private static Pattern dataFct = Pattern.compile("Data\\(");
/** The expression evaluator implementation for the JSP/EL environment. */
- private ExpressionEvaluator ee = null;
+ private transient ExpressionEvaluator ee = null;
/**
* Constructor.
@@ -98,7 +99,7 @@
try {
String evalExpr = inFct.matcher(expr).
replaceAll("In(_ALL_STATES, ");
- Object rslt = ee.evaluate(evalExpr, Object.class, vr,
+ Object rslt = getEvaluator().evaluate(evalExpr, Object.class, vr,
builtinFnMapper);
if (log.isTraceEnabled()) {
log.trace(expr + " = " + String.valueOf(rslt));
@@ -126,8 +127,8 @@
try {
String evalExpr = inFct.matcher(expr).
replaceAll("In(_ALL_STATES, ");
- Boolean rslt = (Boolean) ee.evaluate(evalExpr, Boolean.class,
- vr, builtinFnMapper);
+ Boolean rslt = (Boolean) getEvaluator().evaluate(evalExpr,
+ Boolean.class, vr, builtinFnMapper);
if (log.isDebugEnabled()) {
log.debug(expr + " = " + String.valueOf(rslt));
}
@@ -156,7 +157,7 @@
replaceAll("In(_ALL_STATES, ");
evalExpr = dataFct.matcher(evalExpr).
replaceFirst("LData(");
- Node rslt = (Node) ee.evaluate(evalExpr, Node.class,
+ Node rslt = (Node) getEvaluator().evaluate(evalExpr, Node.class,
vr, builtinFnMapper);
if (log.isDebugEnabled()) {
log.debug(expr + " = " + String.valueOf(rslt));
@@ -197,9 +198,21 @@
}
/**
+ * Get the <code>ExpressionEvaluator</code>, with lazy initialization.
+ *
+ * @return Log The log being used.
+ */
+ private ExpressionEvaluator getEvaluator() {
+ if (ee == null) {
+ ee = new ExpressionEvaluatorImpl();
+ }
+ return ee;
+ }
+
+ /**
* A Context wrapper that implements VariableResolver.
*/
- static class ContextWrapper implements VariableResolver {
+ static class ContextWrapper implements VariableResolver, Serializable {
/** Context to be wrapped. */
private Context ctx = null;
/** The log. */
@@ -224,7 +237,7 @@
/**
* A simple function mapper for SCXML defined functions.
*/
- class BuiltinFunctionMapper implements FunctionMapper {
+ class BuiltinFunctionMapper implements FunctionMapper, Serializable {
/** The log. */
private Log log = LogFactory.getLog(BuiltinFunctionMapper.class);
/**
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/RootContext.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/RootContext.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/RootContext.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/env/jsp/RootContext.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,11 @@
*/
package org.apache.commons.scxml.env.jsp;
+import java.io.IOException;
+import java.io.NotSerializableException;
+import java.io.ObjectInputStream;
+import java.io.ObjectOutputStream;
+
import javax.servlet.jsp.JspContext;
import javax.servlet.jsp.el.ELException;
import javax.servlet.jsp.el.VariableResolver;
@@ -108,6 +113,30 @@
*/
public void setVariableResolver(final VariableResolver variableResolver) {
this.variableResolver = variableResolver;
+ }
+
+ //--------------------------------------------------- Truth in advertising
+
+ /**
+ * Instances of this class are not serializable.
+ *
+ * @param out The object output stream.
+ * @throws IOException Guaranteed to throw a NotSerializableException
+ */
+ private void writeObject(final ObjectOutputStream out)
+ throws IOException {
+ throw new NotSerializableException();
+ }
+
+ /**
+ * Instances of this class are not serializable.
+ *
+ * @param in The object input stream.
+ * @throws IOException Guaranteed to throw a NotSerializableException
+ */
+ private void readObject(final ObjectInputStream in)
+ throws IOException {
+ throw new NotSerializableException();
}
}
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml.semantics;
+import java.io.Serializable;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
@@ -68,7 +69,7 @@
*
* <p>Specific semantics can be created by subclassing this class.</p>
*/
-public class SCXMLSemanticsImpl implements SCXMLSemantics {
+public class SCXMLSemanticsImpl implements SCXMLSemantics, Serializable {
/**
* SCXML Logger for the application.
Modified:
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/TransitionTargetComparator.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/TransitionTargetComparator.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/TransitionTargetComparator.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/main/java/org/apache/commons/scxml/semantics/TransitionTargetComparator.java
Thu Oct 5 12:48:12 2006
@@ -17,6 +17,7 @@
*/
package org.apache.commons.scxml.semantics;
+import java.io.Serializable;
import java.util.Comparator;
import org.apache.commons.scxml.SCXMLHelper;
@@ -27,7 +28,7 @@
* A comparator for TransitionTarget instances.
*
*/
-final class TransitionTargetComparator implements Comparator {
+final class TransitionTargetComparator implements Comparator, Serializable {
/**
* Constructor.
Modified:
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLExecutorTest.java
Thu Oct 5 12:48:12 2006
@@ -133,6 +133,7 @@
assertEquals(1, currentStates.size());
assertEquals("ten", ((State)currentStates.iterator().
next()).getId());
+ exec = SCXMLTestHelper.testExecutorSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "ten.self");
assertEquals(1, currentStates.size());
assertEquals("ten", ((State)currentStates.iterator().
Modified:
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLTestHelper.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLTestHelper.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLTestHelper.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/SCXMLTestHelper.java
Thu Oct 5 12:48:12 2006
@@ -249,6 +249,31 @@
return roundtrip;
}
+ public static SCXMLExecutor testExecutorSerializability(final
SCXMLExecutor exec) {
+ File fileDir = new File(SERIALIZATION_DIR);
+ if (!fileDir.exists() && !fileDir.mkdir()) {
+ return null;
+ }
+ String filename = SERIALIZATION_FILE_PREFIX
+ + System.currentTimeMillis() + SERIALIZATION_FILE_SUFFIX;
+ SCXMLExecutor roundtrip = null;
+ try {
+ ObjectOutputStream out =
+ new ObjectOutputStream(new FileOutputStream(filename));
+ out.writeObject(exec);
+ out.close();
+ ObjectInputStream in =
+ new ObjectInputStream(new FileInputStream(filename));
+ roundtrip = (SCXMLExecutor) in.readObject();
+ in.close();
+ } catch(IOException ex) {
+ ex.printStackTrace();
+ } catch(ClassNotFoundException ex) {
+ ex.printStackTrace();
+ }
+ return roundtrip;
+ }
+
/**
* Discourage instantiation.
*/
Modified:
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WildcardTest.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WildcardTest.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WildcardTest.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WildcardTest.java
Thu Oct 5 12:48:12 2006
@@ -73,6 +73,7 @@
assertEquals(1, currentStates.size());
assertEquals("state1", ((State)currentStates.iterator().
next()).getId());
+ exec = SCXMLTestHelper.testExecutorSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "*");
assertEquals(1, currentStates.size());
assertEquals("state4", ((State)currentStates.iterator().
Modified:
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WizardsTest.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WizardsTest.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WizardsTest.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/WizardsTest.java
Thu Oct 5 12:48:12 2006
@@ -15,6 +15,7 @@
*/
package org.apache.commons.scxml;
+import java.io.Serializable;
import java.net.URL;
import java.util.List;
import java.util.Map;
@@ -80,6 +81,7 @@
assertEquals(1, currentStates.size());
assertEquals("state1", ((State)currentStates.iterator().
next()).getId());
+ exec = SCXMLTestHelper.testExecutorSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "event2");
assertEquals(1, currentStates.size());
assertEquals("state2", ((State)currentStates.iterator().
@@ -92,6 +94,7 @@
assertEquals(1, currentStates.size());
assertEquals("state3", ((State)currentStates.iterator().
next()).getId());
+ exec = SCXMLTestHelper.testExecutorSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "event3"); //
ensure we stay put
assertEquals(1, currentStates.size());
assertEquals("state3", ((State)currentStates.iterator().
@@ -114,6 +117,7 @@
assertEquals(1, currentStates.size());
assertEquals("state2", ((State)currentStates.iterator().
next()).getId());
+ exec = SCXMLTestHelper.testExecutorSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "event4");
assertEquals(1, currentStates.size());
assertEquals("state4", ((State)currentStates.iterator().
@@ -123,7 +127,7 @@
}
}
- class TestEventDispatcher implements EventDispatcher {
+ static class TestEventDispatcher implements EventDispatcher, Serializable {
// If you change this, you must also change testWizard02Sample()
int callback = 0;
public void send(String sendId, String target, String targetType,
Modified:
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/DatamodelTest.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/DatamodelTest.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/DatamodelTest.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/DatamodelTest.java
Thu Oct 5 12:48:12 2006
@@ -102,6 +102,7 @@
assertEquals(1, currentStates.size());
assertEquals("ten", ((State)currentStates.iterator().
next()).getId());
+ exec01 = SCXMLTestHelper.testExecutorSerializability(exec01);
currentStates = fireEvent("ten.done", exec01);
assertEquals(1, currentStates.size());
assertEquals("twenty", ((State)currentStates.iterator().
@@ -116,11 +117,13 @@
assertEquals(1, currentStates.size());
assertEquals("thirty", ((State)currentStates.iterator().
next()).getId());
+ exec01 = SCXMLTestHelper.testExecutorSerializability(exec01);
// exec02
currentStates = fireEvent("ten.done", exec02);
assertEquals(1, currentStates.size());
assertEquals("twenty", ((State)currentStates.iterator().
next()).getId());
+ exec02 = SCXMLTestHelper.testExecutorSerializability(exec02);
currentStates = fireEvent("twenty.done", exec02);
assertEquals(1, currentStates.size());
assertEquals("thirty", ((State)currentStates.iterator().
Modified:
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/HistoryTest.java
URL:
http://svn.apache.org/viewvc/jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/HistoryTest.java?view=diff&rev=453336&r1=453335&r2=453336
==============================================================================
---
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/HistoryTest.java
(original)
+++
jakarta/commons/proper/scxml/trunk/src/test/java/org/apache/commons/scxml/model/HistoryTest.java
Thu Oct 5 12:48:12 2006
@@ -139,8 +139,10 @@
assertEquals(1, currentStates.size());
assertEquals("interrupted", ((State)currentStates.iterator().
next()).getId());
+ exec = SCXMLTestHelper.testExecutorSerializability(exec);
currentStates = SCXMLTestHelper.fireEvent(exec, "flow.resume");
assertEquals(1, currentStates.size());
+ exec = SCXMLTestHelper.testExecutorSerializability(exec);
return ((State)currentStates.iterator().next()).getId();
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]