You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by at...@apache.org on 2018/01/07 15:34:34 UTC
[2/2] commons-scxml git commit: SCXML-278 Code cleanup and Java8
alignment
SCXML-278 Code cleanup and Java8 alignment
- remove obsolete code, unused imports
- remove duplicate code, move repeated code up to parent class
- cleanup exception handling
- align with Java8, remove unnessesary type casting, make use of lamba's where useful
- fixup references to current/final SCXML spec urls
- apply protected, private, static, and/or final scoping of fields and methods where possible
Project: http://git-wip-us.apache.org/repos/asf/commons-scxml/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-scxml/commit/05e94b82
Tree: http://git-wip-us.apache.org/repos/asf/commons-scxml/tree/05e94b82
Diff: http://git-wip-us.apache.org/repos/asf/commons-scxml/diff/05e94b82
Branch: refs/heads/master
Commit: 05e94b8229535800e57c82a04dea764714cd4ef0
Parents: 9fb7a63
Author: Ate Douma <at...@apache.org>
Authored: Sun Jan 7 16:26:10 2018 +0100
Committer: Ate Douma <at...@apache.org>
Committed: Sun Jan 7 16:34:06 2018 +0100
----------------------------------------------------------------------
src/changes/changes.xml | 6 +-
.../apache/commons/scxml2/EvaluatorFactory.java | 2 +-
.../scxml2/ExternalSCXMLIOProcessor.java | 2 +-
.../commons/scxml2/NotificationRegistry.java | 8 +-
.../org/apache/commons/scxml2/SCInstance.java | 2 +-
.../commons/scxml2/SCXMLExecutionContext.java | 35 +++----
.../apache/commons/scxml2/SCXMLExecutor.java | 10 +-
.../scxml2/SCXMLExpressionException.java | 1 -
.../apache/commons/scxml2/SCXMLSemantics.java | 4 +-
.../commons/scxml2/SCXMLSystemContext.java | 5 +-
.../commons/scxml2/StateConfiguration.java | 4 +-
.../scxml2/env/AbstractBaseEvaluator.java | 28 +++++-
.../scxml2/env/AbstractStateMachine.java | 21 +----
.../org/apache/commons/scxml2/env/LogUtils.java | 12 +--
.../commons/scxml2/env/SimpleContext.java | 17 +---
.../commons/scxml2/env/SimpleDispatcher.java | 39 +++-----
.../commons/scxml2/env/SimpleErrorHandler.java | 2 +-
.../commons/scxml2/env/SimpleErrorReporter.java | 12 +--
.../commons/scxml2/env/SimpleSCXMLListener.java | 2 +-
.../commons/scxml2/env/SimpleXMLReporter.java | 2 +-
.../org/apache/commons/scxml2/env/Tracer.java | 8 +-
.../apache/commons/scxml2/env/URLResolver.java | 2 +-
.../scxml2/env/groovy/GroovyContextBinding.java | 2 +-
.../scxml2/env/groovy/GroovyEvaluator.java | 25 -----
.../env/groovy/GroovyExtendableScriptCache.java | 30 ++----
.../scxml2/env/groovy/GroovySCXMLScript.java | 6 +-
.../scxml2/env/javascript/JSBindings.java | 4 +-
.../scxml2/env/javascript/JSEvaluator.java | 24 -----
.../scxml2/env/javascript/init_global.js | 2 +-
.../commons/scxml2/env/jexl/JexlEvaluator.java | 28 +-----
.../commons/scxml2/invoke/InvokerException.java | 7 --
.../scxml2/invoke/SimpleSCXMLInvoker.java | 12 +--
.../apache/commons/scxml2/io/ContentParser.java | 8 +-
.../apache/commons/scxml2/io/ModelUpdater.java | 43 ++++-----
.../apache/commons/scxml2/io/SCXMLReader.java | 27 +++---
.../apache/commons/scxml2/io/SCXMLWriter.java | 97 +++++++++-----------
.../org/apache/commons/scxml2/model/Action.java | 11 +--
.../apache/commons/scxml2/model/Datamodel.java | 4 +-
.../commons/scxml2/model/DocumentOrder.java | 14 +--
.../commons/scxml2/model/EnterableState.java | 9 +-
.../apache/commons/scxml2/model/Executable.java | 5 +-
.../org/apache/commons/scxml2/model/Final.java | 2 +-
.../apache/commons/scxml2/model/Foreach.java | 3 +-
.../org/apache/commons/scxml2/model/If.java | 4 +-
.../commons/scxml2/model/NodeTextValue.java | 2 +-
.../org/apache/commons/scxml2/model/Param.java | 1 -
.../commons/scxml2/model/PayloadBuilder.java | 10 +-
.../commons/scxml2/model/PayloadProvider.java | 84 -----------------
.../org/apache/commons/scxml2/model/SCXML.java | 32 +------
.../org/apache/commons/scxml2/model/Send.java | 2 +-
.../commons/scxml2/model/SimpleTransition.java | 9 +-
.../apache/commons/scxml2/model/Transition.java | 2 +-
.../commons/scxml2/model/TransitionType.java | 4 +-
.../commons/scxml2/model/TransitionalState.java | 19 ++--
.../org/apache/commons/scxml2/model/Var.java | 7 --
.../scxml2/semantics/SCXMLSemanticsImpl.java | 75 +++++++--------
.../apache/commons/scxml2/semantics/Step.java | 26 +++---
.../commons/scxml2/test/StandaloneUtils.java | 6 +-
.../apache/commons/scxml2/EventDataTest.java | 10 +-
.../apache/commons/scxml2/SCInstanceTest.java | 6 +-
.../commons/scxml2/SCXMLExecutorTest.java | 10 +-
.../apache/commons/scxml2/SCXMLTestHelper.java | 14 ++-
.../org/apache/commons/scxml2/WizardsTest.java | 3 +-
.../scxml2/env/AbstractStateMachineTest.java | 8 +-
.../apache/commons/scxml2/env/StopWatch.java | 4 +-
.../commons/scxml2/env/StopWatchDisplay.java | 7 +-
.../scxml2/env/groovy/GroovyContextTest.java | 2 +-
.../scxml2/env/javascript/JSEvaluatorTest.java | 39 ++++----
.../scxml2/env/javascript/JSExampleTest.java | 4 +-
.../scxml2/env/jexl/JexlContextTest.java | 13 +--
.../scxml2/env/jexl/JexlEvaluatorTest.java | 6 +-
.../scxml2/invoke/InvokeParamNameTest.java | 4 +-
.../commons/scxml2/io/ContentParserTest.java | 2 +-
.../commons/scxml2/io/SCXMLReaderTest.java | 33 +++----
.../scxml2/io/SCXMLRequiredAttributesTest.java | 2 +-
.../commons/scxml2/io/SCXMLWriterTest.java | 4 +-
.../commons/scxml2/issues/Issue112Test.java | 9 +-
.../commons/scxml2/model/ActionsTest.java | 2 +-
.../commons/scxml2/model/CustomActionTest.java | 8 +-
.../org/apache/commons/scxml2/model/Hello.java | 2 -
.../apache/commons/scxml2/model/SendTest.java | 4 +-
.../semantics/SCXMLSemanticsImplTest.java | 8 +-
.../org/apache/commons/scxml2/w3c/W3CTests.java | 38 ++++----
83 files changed, 392 insertions(+), 720 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6645a8b..cadc1ba 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -35,6 +35,10 @@
<release version="2.0" date="In Git master"
description="Latest unreleased code">
+ <action dev="ate" type="add" issue="SCXML-278">
+ [07-01-2018] Code cleanup and Java8 alignment
+ </action>
+
<action dev="ate" type="add" issue="SCXML-271">
[12-11-2017] Support Groovy for running the SCXML IRP tests
</action>
@@ -60,7 +64,7 @@
</action>
<action dev="ate" type="add" issue="SCXML-264">
- [12-10-2017] Support <invoke> with inline (<content> body) SCXML statemachine definition
+ [12-10-2017] Support <invoke> with inline (<content> body) SCXML statemachine definition
</action>
<action dev="ate" type="fix" issue="SCXML-263">
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java b/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java
index 784affa..0024d4c 100644
--- a/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java
+++ b/src/main/java/org/apache/commons/scxml2/EvaluatorFactory.java
@@ -54,7 +54,7 @@ import static org.apache.commons.scxml2.Evaluator.DEFAULT_DATA_MODEL;
*/
public class EvaluatorFactory {
- private static EvaluatorFactory INSTANCE = new EvaluatorFactory();
+ private static final EvaluatorFactory INSTANCE = new EvaluatorFactory();
private final Map<String, EvaluatorProvider> providers = new ConcurrentHashMap<>();
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/ExternalSCXMLIOProcessor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/ExternalSCXMLIOProcessor.java b/src/main/java/org/apache/commons/scxml2/ExternalSCXMLIOProcessor.java
index be14a3d..a68fb55 100644
--- a/src/main/java/org/apache/commons/scxml2/ExternalSCXMLIOProcessor.java
+++ b/src/main/java/org/apache/commons/scxml2/ExternalSCXMLIOProcessor.java
@@ -25,7 +25,7 @@ package org.apache.commons.scxml2;
*/
public class ExternalSCXMLIOProcessor implements SCXMLIOProcessor {
- private SCXMLIOProcessor processor;
+ private final SCXMLIOProcessor processor;
public ExternalSCXMLIOProcessor(final SCXMLIOProcessor processor) {
this.processor = processor;
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java b/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java
index 6db5836..34291ea 100644
--- a/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java
+++ b/src/main/java/org/apache/commons/scxml2/NotificationRegistry.java
@@ -46,7 +46,7 @@ public final class NotificationRegistry {
* Constructor.
*/
public NotificationRegistry() {
- this.regs = new HashMap<Integer, Set<SCXMLListener>>();
+ this.regs = new HashMap<>();
}
/**
@@ -57,11 +57,7 @@ public final class NotificationRegistry {
*/
synchronized void addListener(final Observable source, final SCXMLListener lst) {
if (source != null && source.getObservableId() != null) {
- Set<SCXMLListener> entries = regs.get(source.getObservableId());
- if (entries == null) {
- entries = new LinkedHashSet<SCXMLListener>();
- regs.put(source.getObservableId(), entries);
- }
+ Set<SCXMLListener> entries = regs.computeIfAbsent(source.getObservableId(), k -> new LinkedHashSet<>());
entries.add(lst);
}
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/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 c293afa..baa35e3 100644
--- a/src/main/java/org/apache/commons/scxml2/SCInstance.java
+++ b/src/main/java/org/apache/commons/scxml2/SCInstance.java
@@ -419,7 +419,7 @@ public class SCInstance implements Serializable {
* @throws IllegalStateException Exception thrown if trying to start the state machine when in a Final state
*/
public void start() throws IllegalStateException {
- if (!this.running && running && currentStatus.isFinal()) {
+ if (!this.running && currentStatus.isFinal()) {
throw new IllegalStateException("The state machine is in a Final state and cannot be set running again");
}
this.running = true;
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java b/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
index ec4dcea..6f827f1 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
@@ -52,7 +52,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
/**
* SCXML Execution Logger for the application.
*/
- private Log appLog = LogFactory.getLog(SCXMLExecutionContext.class);
+ private static final Log appLog = LogFactory.getLog(SCXMLExecutionContext.class);
/**
* The action execution context instance, providing restricted access to this execution context
@@ -77,7 +77,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
/**
* The external IOProcessor for Invokers to communicate back on
*/
- private SCXMLIOProcessor externalIOProcessor;
+ private final SCXMLIOProcessor externalIOProcessor;
/**
* The event dispatcher to interface with external documents etc.
@@ -92,32 +92,32 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
/**
* The notification registry.
*/
- private NotificationRegistry notificationRegistry;
+ private final NotificationRegistry notificationRegistry;
/**
* The internal event queue
*/
- private final Queue<TriggerEvent> internalEventQueue = new LinkedList<TriggerEvent>();
+ private final Queue<TriggerEvent> internalEventQueue = new LinkedList<>();
/**
* The Invoker classes map, keyed by invoke target types (specified using "type" attribute).
*/
- private final Map<String, Class<? extends Invoker>> invokerClasses = new HashMap<String, Class<? extends Invoker>>();
+ private final Map<String, Class<? extends Invoker>> invokerClasses = new HashMap<>();
/**
* The map storing the unique invokeId for an Invoke with an active Invoker
*/
- private final Map<Invoke, String> invokeIds = new HashMap<Invoke, String>();
+ private final Map<Invoke, String> invokeIds = new HashMap<>();
/**
* The Map of active Invoker, keyed by their unique invokeId.
*/
- private final Map<String, Invoker> invokers = new HashMap<String, Invoker>();
+ private final Map<String, Invoker> invokers = new HashMap<>();
/**
* The Map of the current ioProcessors
*/
- private final Map<String, SCXMLIOProcessor> ioProcessors = new HashMap<String, SCXMLIOProcessor>();
+ private final Map<String, SCXMLIOProcessor> ioProcessors = new HashMap<>();
/**
* Flag indicating if the SCXML configuration should be checked before execution (default = true)
@@ -211,10 +211,8 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
}
/**
* (re)start the state machine.
- *
- * @throws ModelException if the state machine instance failed to initialize.
*/
- public void start() throws ModelException {
+ public void start() {
if (scInstance.isRunning()) {
throw new IllegalStateException("The state machine has already started.");
} else if (scInstance.getGlobalContext() == null) {
@@ -268,15 +266,6 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
}
/**
- * The SCXML specification section "C.1.1 _ioprocessors Value" states that the SCXMLEventProcessor <em>must</em>
- * maintain a 'location' field inside its entry in the _ioprocessors environment variable.
- * @return the 'location' of the SCXMLEventProcessor
- */
- public String getLocation() {
- return null;
- }
-
- /**
* @return Returns the SCInstance
*/
public SCInstance getScInstance() {
@@ -419,7 +408,7 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
* @param uri
* @return
*/
- private final String stripTrailingSlash(final String uri) {
+ private String stripTrailingSlash(final String uri) {
return uri.endsWith("/") ? uri.substring(0, uri.length()-1) : uri;
}
@@ -458,10 +447,8 @@ public class SCXMLExecutionContext implements SCXMLIOProcessor {
}
try {
return invokerClass.newInstance();
- } catch (InstantiationException ie) {
+ } catch (InstantiationException | IllegalAccessException ie) {
throw new InvokerException(ie.getMessage(), ie.getCause());
- } catch (IllegalAccessException iae) {
- throw new InvokerException(iae.getMessage(), iae.getCause());
}
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java b/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
index 3be0c7f..5e6ad90 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
@@ -51,7 +51,7 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
/**
* The Logger for the SCXMLExecutor.
*/
- private Log log = LogFactory.getLog(SCXMLExecutor.class);
+ private static final Log log = LogFactory.getLog(SCXMLExecutor.class);
/**
* Parent SCXMLIOProcessor
@@ -61,17 +61,17 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
/**
* Interpretation semantics.
*/
- private SCXMLSemantics semantics;
+ private final SCXMLSemantics semantics;
/**
* The state machine execution context
*/
- private SCXMLExecutionContext exctx;
+ private final SCXMLExecutionContext exctx;
/**
* The external event queue
*/
- private final Queue<TriggerEvent> externalEventQueue = new ConcurrentLinkedQueue<TriggerEvent>();
+ private final Queue<TriggerEvent> externalEventQueue = new ConcurrentLinkedQueue<>();
/**
* Convenience constructor.
@@ -468,7 +468,7 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
while (exctx.isRunning()) {
triggerEvents();
}
- } catch (ModelException e) {
+ } catch (ModelException ignored) {
}
});
t.start();
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/SCXMLExpressionException.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLExpressionException.java b/src/main/java/org/apache/commons/scxml2/SCXMLExpressionException.java
index 8e3ace2..b05b54b 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLExpressionException.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLExpressionException.java
@@ -32,7 +32,6 @@ public class SCXMLExpressionException extends Exception {
* @see java.lang.Exception#Exception()
*/
public SCXMLExpressionException() {
- super();
}
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/SCXMLSemantics.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLSemantics.java b/src/main/java/org/apache/commons/scxml2/SCXMLSemantics.java
index 9daca8c..15c254d 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLSemantics.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLSemantics.java
@@ -25,7 +25,7 @@ import org.apache.commons.scxml2.model.SCXML;
/**
* <p>The purpose of this interface is to separate the the
- * <a href="http://www.w3.org/TR/2014/CR-scxml-20140313/#AlgorithmforSCXMLInterpretation">
+ * <a href="https://www.w3.org/TR/2015/REC-scxml-20150901/#AlgorithmforSCXMLInterpretation">
* W3C SCXML Algorithm for SCXML Interpretation</a>
* from the <code>SCXMLExecutor</code> and therefore make it pluggable.</p>
* <p>
@@ -180,5 +180,5 @@ public interface SCXMLSemantics {
* @param errRep ErrorReporter to report detailed error info if needed
* @return true if a given state configuration is legal, false otherwise
*/
- public boolean isLegalConfiguration(final Set<EnterableState> states, final ErrorReporter errRep);
+ boolean isLegalConfiguration(final Set<EnterableState> states, final ErrorReporter errRep);
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java b/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java
index acbcc8e..e865d9f 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLSystemContext.java
@@ -59,9 +59,8 @@ public class SCXMLSystemContext implements Context, Serializable {
/**
* The set of protected system variables names
*/
- private static final Set<String> PROTECTED_NAMES = new HashSet<String>(Arrays.asList(
- new String[] {EVENT_KEY, SESSIONID_KEY, SCXML_NAME_KEY, IOPROCESSORS_KEY, X_KEY}
- ));
+ private static final Set<String> PROTECTED_NAMES = new HashSet<>(Arrays.asList(
+ EVENT_KEY, SESSIONID_KEY, SCXML_NAME_KEY, IOPROCESSORS_KEY, X_KEY));
/**
* The wrapped system context
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/StateConfiguration.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/StateConfiguration.java b/src/main/java/org/apache/commons/scxml2/StateConfiguration.java
index 1a7ce23..f8f1322 100644
--- a/src/main/java/org/apache/commons/scxml2/StateConfiguration.java
+++ b/src/main/java/org/apache/commons/scxml2/StateConfiguration.java
@@ -35,13 +35,13 @@ public class StateConfiguration implements Serializable {
/**
* The states that are currently active.
*/
- private final Set<EnterableState> activeStates = new HashSet<EnterableState>();
+ private final Set<EnterableState> activeStates = new HashSet<>();
private final Set<EnterableState> activeStatesSet = Collections.unmodifiableSet(activeStates);
/**
* The atomic states that are currently active.
*/
- private final Set<EnterableState> atomicStates = new HashSet<EnterableState>();
+ private final Set<EnterableState> atomicStates = new HashSet<>();
private final Set<EnterableState> atomicStatesSet = Collections.unmodifiableSet(atomicStates);
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java b/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
index abd96a4..44239c7 100644
--- a/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
+++ b/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
@@ -22,8 +22,11 @@ import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
+import java.util.UUID;
+import org.apache.commons.scxml2.Context;
import org.apache.commons.scxml2.Evaluator;
+import org.apache.commons.scxml2.SCXMLExpressionException;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
@@ -32,6 +35,29 @@ import org.w3c.dom.NodeList;
*/
public abstract class AbstractBaseEvaluator implements Evaluator, Serializable {
+ /**
+ * Unique context variable name used for temporary reference to assign data (thus must be a valid variable name)
+ */
+ private static final String ASSIGN_VARIABLE_NAME = "a"+ UUID.randomUUID().toString().replace('-','x');
+
+ /**
+ * @see Evaluator#evalAssign(Context, String, Object)
+ */
+ public void evalAssign(final Context ctx, final String location, final Object data) throws SCXMLExpressionException {
+ StringBuilder sb = new StringBuilder(location).append("=").append(ASSIGN_VARIABLE_NAME);
+ try {
+ ctx.getVars().put(ASSIGN_VARIABLE_NAME, data);
+ eval(ctx, sb.toString());
+ } catch (SCXMLExpressionException e) {
+ if (e.getCause() != null && e.getCause() != null && e.getCause().getMessage() != null) {
+ throw new SCXMLExpressionException("Error evaluating assign to location=\"" + location + "\": " + e.getCause().getMessage());
+ }
+ throw e;
+ } finally {
+ ctx.getVars().remove(ASSIGN_VARIABLE_NAME);
+ }
+ }
+
@Override
public Object cloneData(final Object data) {
if (data != null) {
@@ -68,7 +94,7 @@ public abstract class AbstractBaseEvaluator implements Evaluator, Serializable {
return cloneUnknownDataType(data);
}
}
- return data;
+ return null;
}
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java b/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java
index d72ec77..eae5822 100644
--- a/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java
+++ b/src/main/java/org/apache/commons/scxml2/env/AbstractStateMachine.java
@@ -124,12 +124,8 @@ public abstract class AbstractStateMachine {
log = LogFactory.getLog(this.getClass());
try {
stateMachine = SCXMLReader.read(scxmlDocument);
- } catch (IOException ioe) {
+ } catch (IOException | XMLStreamException | ModelException ioe) {
logError(ioe);
- } catch (XMLStreamException xse) {
- logError(xse);
- } catch (ModelException me) {
- logError(me);
}
initialize(stateMachine, rootCtx, evaluator);
}
@@ -246,21 +242,10 @@ public abstract class AbstractStateMachine {
try {
Method method = clas.getDeclaredMethod(methodName, SIGNATURE);
method.invoke(this, PARAMETERS);
- } catch (SecurityException se) {
+ } catch (SecurityException | NoSuchMethodException | IllegalAccessException | IllegalArgumentException |
+ InvocationTargetException se) {
logError(se);
return false;
- } catch (NoSuchMethodException nsme) {
- logError(nsme);
- return false;
- } catch (IllegalArgumentException iae) {
- logError(iae);
- return false;
- } catch (IllegalAccessException iae) {
- logError(iae);
- return false;
- } catch (InvocationTargetException ite) {
- logError(ite);
- return false;
}
return true;
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/LogUtils.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/LogUtils.java b/src/main/java/org/apache/commons/scxml2/env/LogUtils.java
index bf27a43..0faf929 100644
--- a/src/main/java/org/apache/commons/scxml2/env/LogUtils.java
+++ b/src/main/java/org/apache/commons/scxml2/env/LogUtils.java
@@ -36,13 +36,11 @@ public final class LogUtils {
*/
public static String transToString(final TransitionTarget from,
final TransitionTarget to, final Transition transition, String event) {
- StringBuffer buf = new StringBuffer("(");
- buf.append("event = ").append(event);
- buf.append(", cond = ").append(transition.getCond());
- buf.append(", from = ").append(getTTPath(from));
- buf.append(", to = ").append(getTTPath(to));
- buf.append(')');
- return buf.toString();
+ return "(" + "event = " + event +
+ ", cond = " + transition.getCond() +
+ ", from = " + getTTPath(from) +
+ ", to = " + getTTPath(to) +
+ ')';
}
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java b/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
index 50b650a..7d155d1 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
@@ -34,10 +34,9 @@ public class SimpleContext implements Context, Serializable {
/** Serial version UID. */
private static final long serialVersionUID = 1L;
/** Implementation independent log category. */
- private static final Log DEFAULT_LOG = LogFactory.getLog(Context.class);
- private Log log = DEFAULT_LOG;
+ private static final Log log = LogFactory.getLog(Context.class);
/** The parent Context to this Context. */
- private Context parent;
+ private final Context parent;
/** The Map of variables and their values in this Context. */
private Map<String, Object> vars;
@@ -71,7 +70,7 @@ public class SimpleContext implements Context, Serializable {
this.systemContext = parent instanceof SCXMLSystemContext ?
(SCXMLSystemContext) parent : parent != null ? parent.getSystemContext() : null;
if (initialVars == null) {
- setVars(new HashMap<String, Object>());
+ setVars(new HashMap<>());
} else {
setVars(this.vars = initialVars);
}
@@ -199,15 +198,6 @@ public class SimpleContext implements Context, Serializable {
}
/**
- * Set the log used by this <code>Context</code> instance.
- *
- * @param log The new log.
- */
- protected void setLog(final Log log) {
- this.log = log;
- }
-
- /**
* Get the log used by this <code>Context</code> instance.
*
* @return Log The log being used.
@@ -215,6 +205,5 @@ public class SimpleContext implements Context, Serializable {
protected Log getLog() {
return log;
}
-
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java b/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
index 60ae51f..eec3f17 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
@@ -58,17 +58,17 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
/**
* The ID of the <send> element.
*/
- private String id;
+ private final String id;
/**
* The event
*/
- private TriggerEvent event;
+ private final TriggerEvent event;
/**
* The target io processor
*/
- private SCXMLIOProcessor target;
+ private final SCXMLIOProcessor target;
/**
* Constructor for events with payload.
@@ -99,13 +99,13 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
}
/** Implementation independent log category. */
- private Log log = LogFactory.getLog(EventDispatcher.class);
+ private static final Log log = LogFactory.getLog(EventDispatcher.class);
/**
* The <code>Map</code> of active <code>Timer</code>s, keyed by
* <send> element <code>id</code>s.
*/
- private Map<String, Timer> timers = Collections.synchronizedMap(new HashMap<String, Timer>());
+ private final Map<String, Timer> timers = Collections.synchronizedMap(new HashMap<String, Timer>());
/**
* Get the log instance.
@@ -117,15 +117,6 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
}
/**
- * Sets the log instance
- *
- * @param log the new log instance
- */
- protected void setLog(Log log) {
- this.log = log;
- }
-
- /**
* Get the current timers.
*
* @return The currently scheduled timers
@@ -167,16 +158,16 @@ public class SimpleDispatcher implements EventDispatcher, Serializable {
public void send(final Map<String, SCXMLIOProcessor> ioProcessors, final String id, final String target,
final String type, final String event, final Object data, final Object hints, final long delay) {
if (log.isInfoEnabled()) {
- StringBuilder buf = new StringBuilder();
- buf.append("send ( id: ").append(id);
- buf.append(", target: ").append(target);
- buf.append(", type: ").append(type);
- buf.append(", event: ").append(event);
- buf.append(", data: ").append(String.valueOf(data));
- buf.append(", hints: ").append(String.valueOf(hints));
- buf.append(", delay: ").append(delay);
- buf.append(')');
- log.info(buf.toString());
+ final String buf =
+ "send ( id: " + id +
+ ", target: " + target +
+ ", type: " + type +
+ ", event: " + event +
+ ", data: " + String.valueOf(data) +
+ ", hints: " + String.valueOf(hints) +
+ ", delay: " + delay +
+ ')';
+ log.info(buf);
}
// We only handle the "scxml" type (which is the default too) and optionally the #_internal target
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/SimpleErrorHandler.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleErrorHandler.java b/src/main/java/org/apache/commons/scxml2/env/SimpleErrorHandler.java
index 59fa254..90ff955 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleErrorHandler.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleErrorHandler.java
@@ -37,7 +37,7 @@ public class SimpleErrorHandler implements ErrorHandler, Serializable {
private static final String MSG_POSTFIX = " Correct the SCXML document.";
/** Log. */
- private Log log = LogFactory.getLog(getClass());
+ private static final Log log = LogFactory.getLog(SimpleErrorHandler.class);
/**
* Constructor.
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java b/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java
index aa39d47..f51a279 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleErrorReporter.java
@@ -40,7 +40,7 @@ public class SimpleErrorReporter implements ErrorReporter, Serializable {
/** Serial version UID. */
private static final long serialVersionUID = 1L;
/** Log. */
- private Log log = LogFactory.getLog(getClass());
+ private static final Log log = LogFactory.getLog(SimpleErrorReporter.class);
/**
* Constructor.
@@ -68,11 +68,11 @@ public class SimpleErrorReporter implements ErrorReporter, Serializable {
} else if (errCtx instanceof State) {
//determineInitialStates
//determineTargetStates
- msg.append("State " + LogUtils.getTTPath((State) errCtx));
+ msg.append("State ").append(LogUtils.getTTPath((State) errCtx));
}
} else if (errCode == ErrorConstants.UNKNOWN_ACTION) {
//executeActionList
- msg.append("Action: " + errCtx.getClass().getName());
+ msg.append("Action: ").append(errCtx.getClass().getName());
} else if (errCode == ErrorConstants.ILLEGAL_CONFIG) {
//isLegalConfig
if (errCtx instanceof Map.Entry) { //unchecked cast below
@@ -80,7 +80,7 @@ public class SimpleErrorReporter implements ErrorReporter, Serializable {
(Map.Entry<EnterableState, Set<EnterableState>>) errCtx;
EnterableState es = badConfigMap.getKey();
Set<EnterableState> vals = badConfigMap.getValue();
- msg.append(LogUtils.getTTPath(es) + " : [");
+ msg.append(LogUtils.getTTPath(es)).append(" : [");
for (Iterator<EnterableState> i = vals.iterator(); i.hasNext();) {
EnterableState ex = i.next();
msg.append(LogUtils.getTTPath(ex));
@@ -104,11 +104,11 @@ public class SimpleErrorReporter implements ErrorReporter, Serializable {
} else if (errCode == ErrorConstants.EXPRESSION_ERROR) {
if (errCtx instanceof Executable) {
TransitionTarget parent = ((Executable) errCtx).getParent();
- msg.append("Expression error inside " + LogUtils.getTTPath(parent));
+ msg.append("Expression error inside ").append(LogUtils.getTTPath(parent));
}
else if (errCtx instanceof Data) {
// Data expression error
- msg.append("Expression error for data element with id "+((Data)errCtx).getId());
+ msg.append("Expression error for data element with id ").append(((Data) errCtx).getId());
}
else if (errCtx instanceof SCXML) {
// Global Script
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java b/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java
index 451bfab..4ad7730 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleSCXMLListener.java
@@ -34,7 +34,7 @@ public class SimpleSCXMLListener implements SCXMLListener, Serializable {
/** Serial version UID. */
private static final long serialVersionUID = 1L;
/** Log. */
- private Log log = LogFactory.getLog(getClass());
+ private static final Log log = LogFactory.getLog(SimpleSCXMLListener.class);
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/SimpleXMLReporter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/SimpleXMLReporter.java b/src/main/java/org/apache/commons/scxml2/env/SimpleXMLReporter.java
index e12ad02..e293c00 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleXMLReporter.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleXMLReporter.java
@@ -37,7 +37,7 @@ public class SimpleXMLReporter implements XMLReporter, Serializable {
private static final long serialVersionUID = 1L;
/** Log. */
- private Log log = LogFactory.getLog(getClass());
+ private static final Log log = LogFactory.getLog(SimpleXMLReporter.class);
/**
* Constructor.
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/Tracer.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/Tracer.java b/src/main/java/org/apache/commons/scxml2/env/Tracer.java
index 631550b..d8955f1 100644
--- a/src/main/java/org/apache/commons/scxml2/env/Tracer.java
+++ b/src/main/java/org/apache/commons/scxml2/env/Tracer.java
@@ -41,13 +41,13 @@ public class Tracer implements ErrorHandler, ErrorReporter,
/** Serial version UID. */
private static final long serialVersionUID = 1L;
/** ErrorHandler delegate. */
- private ErrorHandler errHandler;
+ private final ErrorHandler errHandler;
/** ErrorReporter delegate. */
- private ErrorReporter errReporter;
+ private final ErrorReporter errReporter;
/** SCXMLListener delegate. */
- private SCXMLListener scxmlListener;
+ private final SCXMLListener scxmlListener;
/** XMLReporter delegate. */
- private XMLReporter xmlReporter;
+ private final XMLReporter xmlReporter;
/**
* Constructor.
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/URLResolver.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/URLResolver.java b/src/main/java/org/apache/commons/scxml2/env/URLResolver.java
index ba7dc47..6e2447b 100644
--- a/src/main/java/org/apache/commons/scxml2/env/URLResolver.java
+++ b/src/main/java/org/apache/commons/scxml2/env/URLResolver.java
@@ -35,7 +35,7 @@ public class URLResolver implements PathResolver, Serializable {
private static final long serialVersionUID = 1L;
/** Implementation independent log category. */
- private Log log = LogFactory.getLog(PathResolver.class);
+ private static final Log log = LogFactory.getLog(PathResolver.class);
/** The base URL to resolve against. */
private URL baseURL = null;
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java
index d3ea5db..e1bf007 100644
--- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java
+++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyContextBinding.java
@@ -68,7 +68,7 @@ public class GroovyContextBinding extends Binding implements Serializable {
@Override
public Map<String, Object> getVariables() {
- return new LinkedHashMap<String, Object>(context.getVars());
+ return new LinkedHashMap<>(context.getVars());
}
@Override
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/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 111ce0c..e26aaaf 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
@@ -21,7 +21,6 @@ import groovy.lang.Script;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
-import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -45,11 +44,6 @@ public class GroovyEvaluator extends AbstractBaseEvaluator {
/** Serial version UID. */
private static final long serialVersionUID = 1L;
- /**
- * Unique context variable name used for temporary reference to assign data (thus must be a valid variable name)
- */
- private static final String ASSIGN_VARIABLE_NAME = "a"+UUID.randomUUID().toString().replace('-','x');
-
public static final String SUPPORTED_DATA_MODEL = "groovy";
public static class GroovyEvaluatorProvider implements EvaluatorProvider {
@@ -241,25 +235,6 @@ public class GroovyEvaluator extends AbstractBaseEvaluator {
}
/**
- * @see Evaluator#evalAssign(Context, String, Object)
- */
- public void evalAssign(final Context ctx, final String location, final Object data) throws SCXMLExpressionException {
- final StringBuilder sb = new StringBuilder(location).append("=").append(ASSIGN_VARIABLE_NAME);
- try {
- ctx.getVars().put(ASSIGN_VARIABLE_NAME, data);
- eval(ctx, sb.toString());
- } catch (SCXMLExpressionException e) {
- if (e.getCause() != null && e.getCause() != null && e.getCause().getMessage() != null) {
- throw new SCXMLExpressionException("Error evaluating assign to location=\"" + location + "\": " + e.getCause().getMessage());
- }
- throw e;
- }
- finally {
- ctx.getVars().remove(ASSIGN_VARIABLE_NAME);
- }
- }
-
- /**
* @see Evaluator#evalScript(Context, String)
*/
@Override
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java
index e9424e0..2c8764d 100644
--- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java
+++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovyExtendableScriptCache.java
@@ -96,18 +96,12 @@ public class GroovyExtendableScriptCache implements Serializable {
public static final String DEFAULT_SCRIPT_CODE_BASE = "/groovy/scxml/script";
/** Default factory for the Groovy parent ClassLoader, returning this class its ClassLoader */
- public static final ParentClassLoaderFactory DEFAULT_PARENT_CLASS_LOADER_FACTORY = new ParentClassLoaderFactory() {
- public ClassLoader getClassLoader() {
- return GroovyExtendableScriptCache.class.getClassLoader();
- }
- };
+ public static final ParentClassLoaderFactory DEFAULT_PARENT_CLASS_LOADER_FACTORY =
+ (ParentClassLoaderFactory) GroovyExtendableScriptCache.class::getClassLoader;
/** Default factory for the Groovy CompilerConfiguration, returning a new and unmodified CompilerConfiguration instance */
- public static final CompilerConfigurationFactory DEFAULT_COMPILER_CONFIGURATION_FACTORY = new CompilerConfigurationFactory() {
- public CompilerConfiguration getCompilerConfiguration() {
- return new CompilerConfiguration();
- }
- };
+ public static final CompilerConfigurationFactory DEFAULT_COMPILER_CONFIGURATION_FACTORY =
+ (CompilerConfigurationFactory) CompilerConfiguration::new;
protected static class ScriptCacheElement implements Serializable {
private static final long serialVersionUID = 1L;
@@ -170,7 +164,7 @@ public class GroovyExtendableScriptCache implements Serializable {
}
}
- private final LinkedHashMap<ScriptCacheElement, ScriptCacheElement> scriptCache = new LinkedHashMap<ScriptCacheElement, ScriptCacheElement>();
+ private final LinkedHashMap<ScriptCacheElement, ScriptCacheElement> scriptCache = new LinkedHashMap<>();
private String scriptCodeBase = DEFAULT_SCRIPT_CODE_BASE;
private String scriptBaseClass;
@@ -239,11 +233,8 @@ public class GroovyExtendableScriptCache implements Serializable {
compilerConfiguration.setScriptBaseClass(getScriptBaseClass());
}
- groovyClassLoader = AccessController.doPrivileged(new PrivilegedAction<GroovyClassLoader>() {
- public GroovyClassLoader run() {
- return new GroovyClassLoader(getParentClassLoaderFactory().getClassLoader(), compilerConfiguration);
- }
- });
+ groovyClassLoader = AccessController.doPrivileged((PrivilegedAction<GroovyClassLoader>)
+ () -> new GroovyClassLoader(getParentClassLoaderFactory().getClassLoader(), compilerConfiguration));
if (!scriptCache.isEmpty()) {
// de-serialized: need to re-generate all previously compiled scripts (this can cause a hick-up...):
for (ScriptCacheElement element : scriptCache.keySet()) {
@@ -257,11 +248,8 @@ public class GroovyExtendableScriptCache implements Serializable {
protected Class<Script> compileScript(final String scriptBaseClass, String scriptSource, final String scriptName) {
final String script = preProcessScript(scriptSource);
- GroovyCodeSource codeSource = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
- public GroovyCodeSource run() {
- return new GroovyCodeSource(script, scriptName, getScriptCodeBase());
- }
- });
+ GroovyCodeSource codeSource = AccessController.doPrivileged((PrivilegedAction<GroovyCodeSource>)
+ () -> new GroovyCodeSource(script, scriptName, getScriptCodeBase()));
String currentScriptBaseClass = compilerConfiguration.getScriptBaseClass();
try {
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java
index 5980211..cdd1dcb 100644
--- a/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java
+++ b/src/main/java/org/apache/commons/scxml2/env/groovy/GroovySCXMLScript.java
@@ -32,8 +32,7 @@ import org.apache.commons.scxml2.Builtin;
*/
public abstract class GroovySCXMLScript extends Script {
- GroovyContext context;
- GroovyContextBinding binding;
+ private GroovyContext context;
protected GroovySCXMLScript() {
super(null);
@@ -42,8 +41,7 @@ public abstract class GroovySCXMLScript extends Script {
@Override
public void setBinding(final Binding binding) {
super.setBinding(binding);
- this.binding = (GroovyContextBinding)binding;
- this.context = this.binding.getContext();
+ this.context = ((GroovyContextBinding) binding).getContext();
}
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java b/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java
index dc9ab7c..0132142 100644
--- a/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java
+++ b/src/main/java/org/apache/commons/scxml2/env/javascript/JSBindings.java
@@ -147,8 +147,8 @@ public class JSBindings implements Bindings {
* @param toMerge the map of variables to merge
*/
@Override
- public void putAll(Map<? extends String, ? extends Object> toMerge) {
- for (Map.Entry<? extends String, ? extends Object> entry : toMerge.entrySet()) {
+ public void putAll(Map<? extends String, ?> toMerge) {
+ for (Map.Entry<? extends String, ?> entry : toMerge.entrySet()) {
put(entry.getKey(), entry.getValue());
}
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/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 91ec4a8..1ec2d58 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
@@ -19,7 +19,6 @@ package org.apache.commons.scxml2.env.javascript;
import java.io.IOException;
import java.util.List;
-import java.util.UUID;
import javax.script.Bindings;
import javax.script.ScriptContext;
@@ -55,11 +54,6 @@ import org.apache.commons.scxml2.model.SCXML;
*/
public class JSEvaluator extends AbstractBaseEvaluator {
- /**
- * Unique context variable name used for temporary reference to assign data (thus must be a valid variable name)
- */
- private static final String ASSIGN_VARIABLE_NAME = "a"+UUID.randomUUID().toString().replace('-','x');
-
public static final String SUPPORTED_DATA_MODEL = Evaluator.ECMASCRIPT_DATA_MODEL;
public static class JSEvaluatorProvider implements EvaluatorProvider {
@@ -265,24 +259,6 @@ public class JSEvaluator extends AbstractBaseEvaluator {
}
/**
- * @see Evaluator#evalAssign(Context, String, Object)
- */
- public void evalAssign(final Context ctx, final String location, final Object data) throws SCXMLExpressionException {
- StringBuilder sb = new StringBuilder(location).append("=").append(ASSIGN_VARIABLE_NAME);
- try {
- ctx.getVars().put(ASSIGN_VARIABLE_NAME, data);
- eval(ctx, sb.toString());
- } catch (SCXMLExpressionException e) {
- if (e.getCause() != null && e.getCause() != null && e.getCause().getMessage() != null) {
- throw new SCXMLExpressionException("Error evaluating assign to location=\"" + location + "\": " + e.getCause().getMessage());
- }
- throw e;
- } finally {
- ctx.getVars().remove(ASSIGN_VARIABLE_NAME);
- }
- }
-
- /**
* Executes the Javascript script using the <code>eval()</code> method
*
* @param ctx SCXML context.
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/env/javascript/init_global.js
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/env/javascript/init_global.js b/src/main/java/org/apache/commons/scxml2/env/javascript/init_global.js
index fccb6cb..cbaa1f0 100644
--- a/src/main/java/org/apache/commons/scxml2/env/javascript/init_global.js
+++ b/src/main/java/org/apache/commons/scxml2/env/javascript/init_global.js
@@ -105,7 +105,7 @@ Object.defineProperties(this, {
},
writable : false,
configurable : false,
- enumeratable : false,
+ enumeratable : false
},
"_event":
{
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/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 5ff6440..ea7f5a8 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
@@ -18,7 +18,6 @@ package org.apache.commons.scxml2.env.jexl;
import java.util.HashMap;
import java.util.Map;
-import java.util.UUID;
import org.apache.commons.jexl3.JexlBuilder;
import org.apache.commons.jexl3.JexlExpression;
@@ -45,11 +44,6 @@ public class JexlEvaluator extends AbstractBaseEvaluator {
/** Serial version UID. */
private static final long serialVersionUID = 1L;
- /**
- * Unique context variable name used for temporary reference to assign data (thus must be a valid variable name)
- */
- private static final String ASSIGN_VARIABLE_NAME = "a"+UUID.randomUUID().toString().replace('-','x');
-
public static final String SUPPORTED_DATA_MODEL = "jexl";
public static class JexlEvaluatorProvider implements EvaluatorProvider {
@@ -90,7 +84,7 @@ public class JexlEvaluator extends AbstractBaseEvaluator {
private transient volatile JexlEngine jexlEngine;
/** The current JexlEngine silent mode, stored locally to be reapplied after deserialization of the engine */
- private boolean jexlEngineSilent;
+ private final boolean jexlEngineSilent;
/** The current JexlEngine strict mode, stored locally to be reapplied after deserialization of the engine */
private boolean jexlEngineStrict;
@@ -100,7 +94,6 @@ public class JexlEvaluator extends AbstractBaseEvaluator {
}
public JexlEvaluator(final boolean strict) {
- super();
jexlEngineStrict = strict;
// create the internal JexlEngine initially
jexlEngine = getJexlEngine();
@@ -181,25 +174,6 @@ public class JexlEvaluator extends AbstractBaseEvaluator {
}
/**
- * @see Evaluator#evalAssign(Context, String, Object)
- */
- public void evalAssign(final Context ctx, final String location, final Object data) throws SCXMLExpressionException {
- StringBuilder sb = new StringBuilder(location).append("=").append(ASSIGN_VARIABLE_NAME);
- try {
- ctx.getVars().put(ASSIGN_VARIABLE_NAME, data);
- eval(ctx, sb.toString());
- } catch (SCXMLExpressionException e) {
- if (e.getCause() != null && e.getCause() != null && e.getCause().getMessage() != null) {
- throw new SCXMLExpressionException("Error evaluating assign to location=\"" + location + "\": " + e.getCause().getMessage());
- }
- throw e;
- }
- finally {
- ctx.getVars().remove(ASSIGN_VARIABLE_NAME);
- }
- }
-
- /**
* @see Evaluator#evalScript(Context, String)
*/
public Object evalScript(final Context ctx, final String script)
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/invoke/InvokerException.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/invoke/InvokerException.java b/src/main/java/org/apache/commons/scxml2/invoke/InvokerException.java
index bb25161..937e67f 100644
--- a/src/main/java/org/apache/commons/scxml2/invoke/InvokerException.java
+++ b/src/main/java/org/apache/commons/scxml2/invoke/InvokerException.java
@@ -29,13 +29,6 @@ public class InvokerException extends Exception {
private static final long serialVersionUID = 1L;
/**
- * @see java.lang.Exception#Exception()
- */
- public InvokerException() {
- super();
- }
-
- /**
* @see java.lang.Exception#Exception(java.lang.String)
* @param message The error message
*/
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java b/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java
index 9277e0a..5cdcb63 100644
--- a/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java
+++ b/src/main/java/org/apache/commons/scxml2/invoke/SimpleSCXMLInvoker.java
@@ -94,12 +94,8 @@ public class SimpleSCXMLInvoker implements Invoker, Serializable {
SCXML scxml;
try {
scxml = SCXMLReader.read(new URL(url));
- } catch (ModelException me) {
+ } catch (ModelException | IOException | XMLStreamException me) {
throw new InvokerException(me.getMessage(), me.getCause());
- } catch (IOException ioe) {
- throw new InvokerException(ioe.getMessage(), ioe.getCause());
- } catch (XMLStreamException xse) {
- throw new InvokerException(xse.getMessage(), xse.getCause());
}
execute(scxml, params);
}
@@ -113,12 +109,8 @@ public class SimpleSCXMLInvoker implements Invoker, Serializable {
SCXML scxml;
try {
scxml = SCXMLReader.read(new StringReader(content));
- } catch (ModelException me) {
+ } catch (ModelException | IOException | XMLStreamException me) {
throw new InvokerException(me.getMessage(), me.getCause());
- } catch (IOException ioe) {
- throw new InvokerException(ioe.getMessage(), ioe.getCause());
- } catch (XMLStreamException xse) {
- throw new InvokerException(xse.getMessage(), xse.getCause());
}
execute(scxml, params);
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/io/ContentParser.java b/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
index a4b07ad..800d082 100644
--- a/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
+++ b/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
@@ -53,7 +53,7 @@ public class ContentParser {
/**
* Jackson JSON ObjectMapper
*/
- private ObjectMapper jsonObjectMapper;
+ private final ObjectMapper jsonObjectMapper;
/**
* Default constructor initializing a Jackson ObjectMapper allowing embedded comments, including YAML style
@@ -183,12 +183,10 @@ public class ContentParser {
* @throws IOException
*/
public Node parseXml(final String xmlString) throws IOException {
- Document doc = null;
+ Document doc;
try {
doc = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(xmlString);
- } catch (SAXException e) {
- throw new IOException(e);
- } catch (ParserConfigurationException e) {
+ } catch (SAXException | ParserConfigurationException e) {
throw new IOException(e);
}
return doc != null ? doc.getDocumentElement() : null;
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java b/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java
index 770cdaf..fc9a451 100644
--- a/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java
+++ b/src/main/java/org/apache/commons/scxml2/io/ModelUpdater.java
@@ -158,13 +158,7 @@ final class ModelUpdater {
scxml.setInitialTransition(initialTransition);
Map<String, TransitionTarget> targets = scxml.getTargets();
- for (EnterableState es : scxml.getChildren()) {
- if (es instanceof State) {
- updateState((State) es, targets);
- } else if (es instanceof Parallel) {
- updateParallel((Parallel) es, targets);
- }
- }
+ updateEnterableStates(scxml.getChildren(), targets);
scxml.getInitialTransition().setObservableId(1);
initObservables(scxml.getChildren(), 2);
@@ -281,13 +275,7 @@ final class ModelUpdater {
}
}
- for (EnterableState es : children) {
- if (es instanceof State) {
- updateState((State) es, targets);
- } else if (es instanceof Parallel) {
- updateParallel((Parallel) es, targets);
- }
- }
+ updateEnterableStates(children, targets);
}
/**
@@ -299,13 +287,7 @@ final class ModelUpdater {
*/
private static void updateParallel(final Parallel parallel, final Map<String, TransitionTarget> targets)
throws ModelException {
- for (EnterableState es : parallel.getChildren()) {
- if (es instanceof State) {
- updateState((State) es, targets);
- } else if (es instanceof Parallel) {
- updateParallel((Parallel) es, targets);
- }
- }
+ updateEnterableStates(parallel.getChildren(), targets);
for (Transition transition : parallel.getTransitionsList()) {
updateTransition(transition, targets);
}
@@ -317,6 +299,25 @@ final class ModelUpdater {
}
/**
+ * Update the EnterableState objects (part of post-read processing).
+ *
+ * @param states The EnterableState objects
+ * @param targets The global Map of all transition targets
+ * @throws ModelException If the object model is flawed
+ */
+ private static void updateEnterableStates(final List<EnterableState> states,
+ final Map<String, TransitionTarget> targets)
+ throws ModelException {
+ for (EnterableState es : states) {
+ if (es instanceof State) {
+ updateState((State) es, targets);
+ } else if (es instanceof Parallel) {
+ updateParallel((Parallel) es, targets);
+ }
+ }
+ }
+
+ /**
* Update this History object (part of post-read processing).
*
* @param history The History object
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java b/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java
index 4b3c8dd..8402725 100644
--- a/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java
+++ b/src/main/java/org/apache/commons/scxml2/io/SCXMLReader.java
@@ -855,13 +855,12 @@ public final class SCXMLReader {
* @param configuration The {@link Configuration} to use while parsing.
* @param parent The parent {@link State} for this final (null for top level state).
*
- * @throws IOException An IO error during parsing.
* @throws XMLStreamException An exception processing the underlying {@link XMLStreamReader}.
* @throws ModelException The Commons SCXML object model is incomplete or inconsistent (includes
* errors in the SCXML document that may not be identified by the schema).
*/
private static void readDoneData(final XMLStreamReader reader, final Configuration configuration, final Final parent)
- throws XMLStreamException, ModelException, IOException {
+ throws XMLStreamException, ModelException {
DoneData doneData = new DoneData();
parent.setDoneData(doneData);
@@ -911,14 +910,11 @@ public final class SCXMLReader {
* @param src The "src" attribute value.
* @param ts The parent {@link TransitionalState} that specifies this "src" attribute.
*
- * @throws IOException An IO error during parsing.
- * @throws ModelException The Commons SCXML object model is incomplete or inconsistent (includes
- * errors in the SCXML document that may not be identified by the schema).
* @throws XMLStreamException An exception processing the underlying {@link XMLStreamReader}.
*/
private static void readTransitionalStateSrc(final Configuration configuration, final String src,
final TransitionalState ts)
- throws IOException, ModelException, XMLStreamException {
+ throws ModelException {
// Check for URI fragment
String[] fragments = src.split("#", 2);
@@ -1546,7 +1542,7 @@ public final class SCXMLReader {
throws XMLStreamException, ModelException {
if (executable instanceof Finalize) {
- // http://www.w3.org/TR/2013/WD-scxml-20130801/#finalize
+ // https://www.w3.org/TR/2015/REC-scxml-20150901/#finalize
// [...] the executable content inside <finalize> MUST NOT raise events or invoke external actions.
// In particular, the <send> and <raise> elements MUST NOT occur.
reportIgnoredElement(reader, configuration, SCXMLConstants.ELEM_FINALIZE, SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_RAISE);
@@ -1751,7 +1747,7 @@ public final class SCXMLReader {
throws XMLStreamException, ModelException {
if (executable instanceof Finalize) {
- // http://www.w3.org/TR/2013/WD-scxml-20130801/#finalize
+ // https://www.w3.org/TR/2015/REC-scxml-20150901/#finalize
// [...] the executable content inside <finalize> MUST NOT raise events or invoke external actions.
// In particular, the <send> and <raise> elements MUST NOT occur.
reportIgnoredElement(reader, configuration, SCXMLConstants.ELEM_FINALIZE, SCXMLConstants.XMLNS_SCXML, SCXMLConstants.ELEM_SEND);
@@ -1913,8 +1909,8 @@ public final class SCXMLReader {
/**
* Read the contents of the initial <script> element.
- * @see <a href="http://www.w3.org/TR/2013/WD-scxml-20130801/#scxml">
- * http://www.w3.org/TR/2013/WD-scxml-20130801/#scxml<a> section 3.2.2
+ * @see <a href="https://www.w3.org/TR/2015/REC-scxml-20150901/#scxml">
+ * https://www.w3.org/TR/2015/REC-scxml-20150901/#scxml<a> section 3.2.2
*
* @param reader The {@link XMLStreamReader} providing the SCXML document to parse.
* @param configuration The {@link Configuration} to use while parsing.
@@ -2016,10 +2012,12 @@ public final class SCXMLReader {
actionWrapper.getNamespaces().putAll(namespaces);
}
+ Map<String, String> attributes = new HashMap<>();
for (int i = 0; i < reader.getAttributeCount(); i++) {
String name = reader.getAttributeLocalName(i);
String qname = createQualifiedName(reader.getAttributePrefix(i), name);
String value = reader.getAttributeValue(i);
+ attributes.put(qname, value);
String setter = "set" + name.substring(0, 1).toUpperCase() + name.substring(1);
Method method;
try {
@@ -2036,6 +2034,9 @@ public final class SCXMLReader {
+ className, iae);
}
}
+ if (!attributes.isEmpty()) {
+ actionWrapper.setAttributes(attributes);
+ }
// Add any body content if necessary
if (action instanceof ParsedValueContainer) {
@@ -2721,7 +2722,7 @@ public final class SCXMLReader {
*/
boolean strict;
- ContentParser contentParser;
+ final ContentParser contentParser;
/*
* Public constructors
@@ -2881,7 +2882,7 @@ public final class SCXMLReader {
this.factoryId = factoryId;
this.factoryClassLoader = factoryClassLoader;
this.allocator = allocator;
- this.properties = (properties == null ? new HashMap<String, Object>() : properties);
+ this.properties = (properties == null ? new HashMap<>() : properties);
this.resolver = resolver;
this.reporter = reporter;
this.encoding = encoding;
@@ -2889,7 +2890,7 @@ public final class SCXMLReader {
this.validate = validate;
this.pathResolver = pathResolver;
this.parent = parent;
- this.customActions = (customActions == null ? new ArrayList<CustomAction>() : customActions);
+ this.customActions = (customActions == null ? new ArrayList<>() : customActions);
this.customActionClassLoader = customActionClassLoader;
this.useContextClassLoaderForCustomActions = useContextClassLoaderForCustomActions;
this.silent = silent;
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java b/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
index d3f7b33..940bf4e 100644
--- a/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
+++ b/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
@@ -55,7 +55,6 @@ import org.apache.commons.scxml2.model.ElseIf;
import org.apache.commons.scxml2.model.EnterableState;
import org.apache.commons.scxml2.model.JsonValue;
import org.apache.commons.scxml2.model.NodeListValue;
-import org.apache.commons.scxml2.model.NodeTextValue;
import org.apache.commons.scxml2.model.NodeValue;
import org.apache.commons.scxml2.model.ParsedValue;
import org.apache.commons.scxml2.model.Raise;
@@ -456,15 +455,7 @@ public class SCXMLWriter {
// Children
writeDatamodel(writer, scxml.getDatamodel());
- for (EnterableState es : scxml.getChildren()) {
- if (es instanceof Final) {
- writeFinal(writer, (Final) es);
- } else if (es instanceof State) {
- writeState(writer, (State) es);
- } else if (es instanceof Parallel) {
- writeParallel(writer, (Parallel) es);
- }
- }
+ writeEnterableStates(writer, scxml.getChildren());
// End
writer.writeEndElement();
@@ -539,15 +530,7 @@ public class SCXMLWriter {
writeInvoke(writer, inv);
}
- for (EnterableState es : state.getChildren()) {
- if (es instanceof Final) {
- writeFinal(writer, (Final) es);
- } else if (es instanceof State) {
- writeState(writer, (State) es);
- } else if (es instanceof Parallel) {
- writeParallel(writer, (Parallel) es);
- }
- }
+ writeEnterableStates(writer, state.getChildren());
for (OnExit onexit : state.getOnExits()) {
writeOnExit(writer, onexit);
@@ -583,15 +566,7 @@ public class SCXMLWriter {
writeInvoke(writer, inv);
}
- for (EnterableState es : parallel.getChildren()) {
- if (es instanceof Final) {
- writeFinal(writer, (Final) es);
- } else if (es instanceof State) {
- writeState(writer, (State) es);
- } else if (es instanceof Parallel) {
- writeParallel(writer, (Parallel) es);
- }
- }
+ writeEnterableStates(writer, parallel.getChildren());
for (OnExit onexit : parallel.getOnExits()) {
writeOnExit(writer, onexit);
@@ -620,13 +595,7 @@ public class SCXMLWriter {
}
if (end.getDoneData() != null) {
writer.writeStartElement(SCXMLConstants.ELEM_DONEDATA);
- for (Param p : end.getDoneData().getParams()) {
- writer.writeStartElement(SCXMLConstants.ELEM_PARAM);
- writeAV(writer, SCXMLConstants.ATTR_NAME, p.getName());
- writeAV(writer, SCXMLConstants.ATTR_LOCATION, p.getLocation());
- writeAV(writer, SCXMLConstants.ATTR_EXPR, escapeXML(p.getExpr()));
- writer.writeEndElement();
- }
+ writeParams(writer, end.getDoneData().getParams());
writeContent(writer, end.getDoneData().getContent());
writer.writeEndElement();
}
@@ -634,6 +603,27 @@ public class SCXMLWriter {
}
/**
+ * Write out the {@link EnterableState} objects into its serialization.
+ *
+ * @param writer The {@link XMLStreamWriter} in use for the serialization.
+ * @param states The {@link EnterableState}s to serialize.
+ *
+ * @throws XMLStreamException An exception processing the underlying {@link XMLStreamWriter}.
+ */
+ private static void writeEnterableStates(final XMLStreamWriter writer, final List<EnterableState> states)
+ throws XMLStreamException {
+ for (EnterableState es : states) {
+ if (es instanceof Final) {
+ writeFinal(writer, (Final) es);
+ } else if (es instanceof State) {
+ writeState(writer, (State) es);
+ } else if (es instanceof Parallel) {
+ writeParallel(writer, (Parallel) es);
+ }
+ }
+ }
+
+ /**
* Write out this {@link Initial} object into its serialization as the corresponding <initial> element.
*
* @param writer The {@link XMLStreamWriter} in use for the serialization.
@@ -765,13 +755,7 @@ public class SCXMLWriter {
writeAV(writer, SCXMLConstants.ATTR_AUTOFORWARD, invoke.getAutoForward());
writeAV(writer, SCXMLConstants.ATTR_NAMELIST, invoke.getNamelist());
- for (Param p : invoke.getParams()) {
- writer.writeStartElement(SCXMLConstants.ELEM_PARAM);
- writeAV(writer, SCXMLConstants.ATTR_NAME, p.getName());
- writeAV(writer, SCXMLConstants.ATTR_LOCATION, p.getLocation());
- writeAV(writer, SCXMLConstants.ATTR_EXPR, escapeXML(p.getExpr()));
- writer.writeEndElement();
- }
+ writeParams(writer, invoke.getParams());
writeFinalize(writer, invoke.getFinalize());
writeContent(writer, invoke.getContent());
@@ -911,16 +895,29 @@ public class SCXMLWriter {
writeAV(writer, SCXMLConstants.ATTR_NAMELIST, send.getNamelist());
writeAV(writer, SCXMLConstants.ATTR_HINTS, send.getHints());
- for (Param p : send.getParams()) {
+ writeParams(writer, send.getParams());
+ writeContent(writer, send.getContent());
+
+ writer.writeEndElement();
+ }
+
+ /**
+ * Write out the {@link Param} objects into its serialization.
+ *
+ * @param writer The {@link XMLStreamWriter} in use for the serialization.
+ * @param params The {@link Param}s to serialize.
+ *
+ * @throws XMLStreamException An exception processing the underlying {@link XMLStreamWriter}.
+ */
+ private static void writeParams(final XMLStreamWriter writer, final List<Param> params)
+ throws XMLStreamException {
+ for (Param p : params) {
writer.writeStartElement(SCXMLConstants.ELEM_PARAM);
writeAV(writer, SCXMLConstants.ATTR_NAME, p.getName());
writeAV(writer, SCXMLConstants.ATTR_LOCATION, p.getLocation());
writeAV(writer, SCXMLConstants.ATTR_EXPR, escapeXML(p.getExpr()));
writer.writeEndElement();
}
- writeContent(writer, send.getContent());
-
- writer.writeEndElement();
}
/**
@@ -1202,14 +1199,10 @@ public class SCXMLWriter {
TransformerFactory tfFactory = TransformerFactory.newInstance();
transformer = tfFactory.newTransformer();
transformer.setOutputProperties(outputProps);
- } catch (TransformerFactoryConfigurationError t) {
+ } catch (TransformerFactoryConfigurationError | TransformerConfigurationException t) {
org.apache.commons.logging.Log log = LogFactory.getLog(SCXMLWriter.class);
log.error(t.getMessage(), t);
return null;
- } catch (TransformerConfigurationException e) {
- org.apache.commons.logging.Log log = LogFactory.getLog(SCXMLWriter.class);
- log.error(e.getMessage(), e);
- return null;
}
return transformer;
}
@@ -1359,7 +1352,7 @@ public class SCXMLWriter {
this.factoryId = factoryId;
this.factoryClassLoader = factoryClassLoader;
- this.properties = (properties == null ? new HashMap<String, Object>() : properties);
+ this.properties = (properties == null ? new HashMap<>() : properties);
this.encoding = encoding;
this.usePrettyPrint = usePrettyPrint;
this.closeUnderlyingWhenDone = closeUnderlyingWhenDone;
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/Action.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/Action.java b/src/main/java/org/apache/commons/scxml2/model/Action.java
index ee2f401..ed32bde 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Action.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Action.java
@@ -17,7 +17,6 @@
package org.apache.commons.scxml2.model;
import java.io.Serializable;
-import java.util.Map;
import org.apache.commons.scxml2.ActionExecutionContext;
import org.apache.commons.scxml2.SCXMLExpressionException;
@@ -79,15 +78,7 @@ public abstract class Action implements Serializable {
throw new ModelException("Action "
+ this.getClass().getName() + " instance missing required parent TransitionTarget");
}
- TransitionTarget tt = parent.getParent();
- if (tt instanceof EnterableState) {
- return (EnterableState)tt;
- } else if (tt instanceof History) {
- return ((History)tt).getParent();
- } else {
- throw new ModelException("Unknown TransitionTarget subclass:"
- + (tt != null ? tt.getClass().getName() : "(null)"));
- }
+ return parent.getParent();
}
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/Datamodel.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/Datamodel.java b/src/main/java/org/apache/commons/scxml2/model/Datamodel.java
index d3b9a53..0394e9f 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Datamodel.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Datamodel.java
@@ -36,13 +36,13 @@ public class Datamodel implements Serializable {
* The set of <data> elements, parsed as Elements, that are
* children of this <datamodel> element.
*/
- private List<Data> data;
+ private final List<Data> data;
/**
* Constructor.
*/
public Datamodel() {
- this.data = new ArrayList<Data>();
+ this.data = new ArrayList<>();
}
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/DocumentOrder.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/DocumentOrder.java b/src/main/java/org/apache/commons/scxml2/model/DocumentOrder.java
index e469e91..80f0c85 100644
--- a/src/main/java/org/apache/commons/scxml2/model/DocumentOrder.java
+++ b/src/main/java/org/apache/commons/scxml2/model/DocumentOrder.java
@@ -29,19 +29,9 @@ import java.util.Comparator;
*/
public interface DocumentOrder {
- Comparator<DocumentOrder> documentOrderComparator = new Comparator<DocumentOrder>() {
- @Override
- public int compare(final DocumentOrder o1, final DocumentOrder o2) {
- return o1.getOrder() - o2.getOrder();
- }
- };
+ Comparator<DocumentOrder> documentOrderComparator = Comparator.comparingInt(DocumentOrder::getOrder);
- Comparator<DocumentOrder> reverseDocumentOrderComparator = new Comparator<DocumentOrder>() {
- @Override
- public int compare(final DocumentOrder o1, final DocumentOrder o2) {
- return o2.getOrder() - o1.getOrder();
- }
- };
+ Comparator<DocumentOrder> reverseDocumentOrderComparator = (o1, o2) -> o2.getOrder() - o1.getOrder();
/**
* @return the relative document order within the SCXML document of this element
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/EnterableState.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/EnterableState.java b/src/main/java/org/apache/commons/scxml2/model/EnterableState.java
index cba7fb6..39f5917 100644
--- a/src/main/java/org/apache/commons/scxml2/model/EnterableState.java
+++ b/src/main/java/org/apache/commons/scxml2/model/EnterableState.java
@@ -33,18 +33,17 @@ public abstract class EnterableState extends TransitionTarget implements Documen
* List of optional OnEntry elements holding executable content to be run upon
* entering this transition target.
*/
- private List<OnEntry> onEntries;
+ private final List<OnEntry> onEntries;
/**
* List of optional OnExit elements holding executable content to be run upon
* exiting this transition target.
*/
- private List<OnExit> onExits;
+ private final List<OnExit> onExits;
public EnterableState() {
- super();
- onEntries = new ArrayList<OnEntry>();
- onExits = new ArrayList<OnExit>();
+ onEntries = new ArrayList<>();
+ onExits = new ArrayList<>();
}
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/Executable.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/Executable.java b/src/main/java/org/apache/commons/scxml2/model/Executable.java
index eb5eec6..a141bde 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Executable.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Executable.java
@@ -31,7 +31,7 @@ public abstract class Executable implements Serializable {
* The set of executable elements (those that inheriting from
* Action) that are contained in this Executable.
*/
- private List<Action> actions;
+ private final List<Action> actions;
/**
* The parent container, for traceability.
@@ -42,8 +42,7 @@ public abstract class Executable implements Serializable {
* Constructor.
*/
public Executable() {
- super();
- this.actions = new ArrayList<Action>();
+ this.actions = new ArrayList<>();
}
/**
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/Final.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/Final.java b/src/main/java/org/apache/commons/scxml2/model/Final.java
index ff8f95d..bfc0a8e 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Final.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Final.java
@@ -90,7 +90,7 @@ public class Final extends EnterableState {
Context ctx = exctx.getScInstance().getGlobalContext();
if (content != null) {
if (content.getExpr() != null) {
- Object evalResult = null;
+ Object evalResult;
try {
evalResult = eval.eval(ctx, content.getExpr());
} catch (SCXMLExpressionException e) {
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/Foreach.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/Foreach.java b/src/main/java/org/apache/commons/scxml2/model/Foreach.java
index 9f15beb..73ace8f 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Foreach.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Foreach.java
@@ -46,10 +46,9 @@ public class Foreach extends Action implements ActionsContainer {
* The set of executable elements (those that inheriting from
* Action) that are contained in this <if> element.
*/
- private List<Action> actions;
+ private final List<Action> actions;
public Foreach() {
- super();
this.actions = new ArrayList<>();
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/If.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/If.java b/src/main/java/org/apache/commons/scxml2/model/If.java
index 7f90ade..0243bd9 100644
--- a/src/main/java/org/apache/commons/scxml2/model/If.java
+++ b/src/main/java/org/apache/commons/scxml2/model/If.java
@@ -51,7 +51,7 @@ public class If extends Action implements ActionsContainer {
* The set of executable elements (those that inheriting from
* Action) that are contained in this <if> element.
*/
- private List<Action> actions;
+ private final List<Action> actions;
/**
* The boolean value that dictates whether the particular child action
@@ -64,7 +64,7 @@ public class If extends Action implements ActionsContainer {
*/
public If() {
super();
- this.actions = new ArrayList<Action>();
+ this.actions = new ArrayList<>();
this.execute = false;
}
http://git-wip-us.apache.org/repos/asf/commons-scxml/blob/05e94b82/src/main/java/org/apache/commons/scxml2/model/NodeTextValue.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/scxml2/model/NodeTextValue.java b/src/main/java/org/apache/commons/scxml2/model/NodeTextValue.java
index af1c9b5..a798699 100644
--- a/src/main/java/org/apache/commons/scxml2/model/NodeTextValue.java
+++ b/src/main/java/org/apache/commons/scxml2/model/NodeTextValue.java
@@ -24,7 +24,7 @@ public class NodeTextValue implements ParsedValue {
/**
* the XML node as text
*/
- private String nodeText;
+ private final String nodeText;
public NodeTextValue(final String nodeText) {
this.nodeText = nodeText;