Return-Path: X-Original-To: apmail-commons-commits-archive@minotaur.apache.org Delivered-To: apmail-commons-commits-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6133B18A53 for ; Sat, 2 Jan 2016 14:45:09 +0000 (UTC) Received: (qmail 29466 invoked by uid 500); 2 Jan 2016 14:45:09 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 29395 invoked by uid 500); 2 Jan 2016 14:45:08 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 29386 invoked by uid 99); 2 Jan 2016 14:45:08 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Sat, 02 Jan 2016 14:45:08 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id B1DC9DFF93; Sat, 2 Jan 2016 14:45:08 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: ate@apache.org To: commits@commons.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: commons-scxml git commit: SCXML-246: Javascript engine requires global context execution - See: https://issues.apache.org/jira/browse/SCXML-246 Date: Sat, 2 Jan 2016 14:45:08 +0000 (UTC) Repository: commons-scxml Updated Branches: refs/heads/master 7d68a7487 -> a5d7dd51e SCXML-246: Javascript engine requires global context execution - See: https://issues.apache.org/jira/browse/SCXML-246 Project: http://git-wip-us.apache.org/repos/asf/commons-scxml/repo Commit: http://git-wip-us.apache.org/repos/asf/commons-scxml/commit/a5d7dd51 Tree: http://git-wip-us.apache.org/repos/asf/commons-scxml/tree/a5d7dd51 Diff: http://git-wip-us.apache.org/repos/asf/commons-scxml/diff/a5d7dd51 Branch: refs/heads/master Commit: a5d7dd51ec0942096afc8dae17abaaec09e93366 Parents: 7d68a74 Author: Ate Douma Authored: Sat Jan 2 15:44:55 2016 +0100 Committer: Ate Douma Committed: Sat Jan 2 15:44:55 2016 +0100 ---------------------------------------------------------------------- src/main/java/org/apache/commons/scxml2/Evaluator.java | 6 ++++++ src/main/java/org/apache/commons/scxml2/SCInstance.java | 3 +++ .../commons/scxml2/env/groovy/GroovyEvaluator.java | 5 +++++ .../commons/scxml2/env/javascript/JSEvaluator.java | 11 ++++++++++- .../apache/commons/scxml2/env/jexl/JexlEvaluator.java | 5 +++++ .../commons/scxml2/env/minimal/MinimalEvaluator.java | 5 +++++ 6 files changed, 34 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/a5d7dd51/src/main/java/org/apache/commons/scxml2/Evaluator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/scxml2/Evaluator.java b/src/main/java/org/apache/commons/scxml2/Evaluator.java index 9878d0a..d6ddd77 100644 --- a/src/main/java/org/apache/commons/scxml2/Evaluator.java +++ b/src/main/java/org/apache/commons/scxml2/Evaluator.java @@ -73,6 +73,12 @@ public interface Evaluator { String getSupportedDatamodel(); /** + * If this Evaluator only supports a global context. + * @return true if this Evaluator only support a global context + */ + boolean requiresGlobalContext(); + + /** * @param data data to be cloned * @return A deep clone of the data */ http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/a5d7dd51/src/main/java/org/apache/commons/scxml2/SCInstance.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/scxml2/SCInstance.java b/src/main/java/org/apache/commons/scxml2/SCInstance.java index 39f2e11..73051ab 100644 --- a/src/main/java/org/apache/commons/scxml2/SCInstance.java +++ b/src/main/java/org/apache/commons/scxml2/SCInstance.java @@ -155,6 +155,9 @@ public class SCInstance implements Serializable { if (evaluator == null) { evaluator = EvaluatorFactory.getEvaluator(stateMachine); } + if (evaluator.requiresGlobalContext()) { + singleContext = true; + } if (stateMachine.getDatamodelName() != null && !stateMachine.getDatamodelName().equals(evaluator.getSupportedDatamodel())) { throw new ModelException("Incompatible SCXML document datamodel \""+stateMachine.getDatamodelName()+"\"" + " for evaluator "+evaluator.getClass().getName()+" supported datamodel \""+evaluator.getSupportedDatamodel()+"\""); http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/a5d7dd51/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java index 451ac42..4f2a8af 100644 --- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java +++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyEvaluator.java @@ -163,6 +163,11 @@ public class GroovyEvaluator extends AbstractBaseEvaluator { return SUPPORTED_DATA_MODEL; } + @Override + public boolean requiresGlobalContext() { + return false; + } + /** * Evaluate an expression. * http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/a5d7dd51/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java index 92e6c64..2f9641d 100644 --- a/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java +++ b/src/main/java/org/apache/commons/scxml2/env/javascript/JSEvaluator.java @@ -68,7 +68,7 @@ public class JSEvaluator extends AbstractBaseEvaluator { /** Error message if evaluation context is not a JexlContext. */ private static final String ERR_CTX_TYPE = "Error evaluating JavaScript " - + "expression, Context must be a org.apache.commons.scxml2.env.javascript.JSContext"; + + "expression, Context must be a org.apache.commons.scxml2.env.javascript.JSContext"; /** Pattern for recognizing the SCXML In() special predicate. */ private static final Pattern IN_FN = Pattern.compile("In\\("); @@ -101,6 +101,15 @@ public class JSEvaluator extends AbstractBaseEvaluator { } /** + * Javascript engine semantics, using a retained global state, requires global SCXML context execution + * @return true + */ + @Override + public boolean requiresGlobalContext() { + return true; + } + + /** * Creates a child context. * * @return Returns a new child JSContext. http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/a5d7dd51/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java index af02a0b..d306ca2 100644 --- a/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java +++ b/src/main/java/org/apache/commons/scxml2/env/jexl/JexlEvaluator.java @@ -142,6 +142,11 @@ public class JexlEvaluator extends AbstractBaseEvaluator { return SUPPORTED_DATA_MODEL; } + @Override + public boolean requiresGlobalContext() { + return false; + } + /** * Evaluate an expression. * http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/a5d7dd51/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java ---------------------------------------------------------------------- diff --git a/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java index 0afefec..0bad641 100644 --- a/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java +++ b/src/main/java/org/apache/commons/scxml2/env/minimal/MinimalEvaluator.java @@ -62,6 +62,11 @@ public class MinimalEvaluator implements Evaluator, Serializable { } @Override + public boolean requiresGlobalContext() { + return true; + } + + @Override public Object cloneData(final Object data) { return data; }