This is an automated email from the ASF dual-hosted git repository.

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-scxml.git


The following commit(s) were added to refs/heads/master by this push:
     new 20dadb9  No need to nest in else.
20dadb9 is described below

commit 20dadb9d829ecf40ed8e227729afa1a3ebf83029
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Fri Mar 5 14:59:00 2021 -0500

    No need to nest in else.
---
 .../commons/scxml2/SCXMLExecutionContext.java      |   3 +-
 .../org/apache/commons/scxml2/SCXMLExecutor.java   |  22 ++--
 .../commons/scxml2/env/AbstractBaseEvaluator.java  |  20 ++--
 .../apache/commons/scxml2/env/SimpleContext.java   |   6 +-
 .../commons/scxml2/env/SimpleDispatcher.java       | 116 ++++++++++-----------
 .../apache/commons/scxml2/io/ContentParser.java    |   2 +-
 .../org/apache/commons/scxml2/io/SCXMLWriter.java  |   5 +-
 .../org/apache/commons/scxml2/model/Action.java    |   2 +-
 .../org/apache/commons/scxml2/model/Foreach.java   |  72 +++++++------
 .../org/apache/commons/scxml2/model/Invoke.java    |  20 ++--
 .../scxml2/semantics/SCXMLSemanticsImpl.java       |  10 +-
 .../org/apache/commons/scxml2/w3c/W3CTests.java    |  20 ++--
 12 files changed, 137 insertions(+), 161 deletions(-)

diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java 
b/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
index d8f7449..7af2fcb 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLExecutionContext.java
@@ -216,7 +216,8 @@ public class SCXMLExecutionContext implements 
SCXMLIOProcessor {
     public void start() {
         if (scInstance.isRunning()) {
             throw new IllegalStateException("The state machine has already 
started.");
-        } else if (scInstance.getGlobalContext() == null) {
+        }
+        if (scInstance.getGlobalContext() == null) {
             throw new IllegalStateException("The state machine has not been 
initialized yet.");
         }
         scInstance.start();
diff --git a/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java 
b/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
index c5808d2..edfc262 100644
--- a/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
+++ b/src/main/java/org/apache/commons/scxml2/SCXMLExecutor.java
@@ -165,25 +165,21 @@ public class SCXMLExecutor implements SCXMLIOProcessor {
         final Set<EnterableState> states = new HashSet<>();
         for (final String stateId : atomicStateIds) {
             final TransitionTarget tt = 
getStateMachine().getTargets().get(stateId);
-            if (tt instanceof EnterableState && 
((EnterableState)tt).isAtomicState()) {
-                EnterableState es = (EnterableState)tt;
-                while (es != null && !states.add(es)) {
-                    es = es.getParent();
-                }
-            }
-            else {
+            if (!(tt instanceof EnterableState) || 
!((EnterableState)tt).isAtomicState()) {
                 throw new ModelException("Illegal atomic stateId "+stateId+": 
state unknown or not an atomic state");
             }
-        }
-        if (semantics.isLegalConfiguration(states, getErrorReporter())) {
-            for (final EnterableState es : states) {
-                exctx.getScInstance().getStateConfiguration().enterState(es);
+            EnterableState es = (EnterableState)tt;
+            while (es != null && !states.add(es)) {
+                es = es.getParent();
             }
-            logState();
         }
-        else {
+        if (!semantics.isLegalConfiguration(states, getErrorReporter())) {
             throw new ModelException("Illegal state machine configuration!");
         }
+        for (final EnterableState es : states) {
+            exctx.getScInstance().getStateConfiguration().enterState(es);
+        }
+        logState();
         exctx.start();
     }
 
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 db6e7f1..b53138e 100644
--- a/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
+++ b/src/main/java/org/apache/commons/scxml2/env/AbstractBaseEvaluator.java
@@ -67,7 +67,7 @@ public abstract class AbstractBaseEvaluator implements 
Evaluator, Serializable {
             if (data instanceof Node) {
                 return ((Node)data).cloneNode(true);
             }
-            else if (data instanceof NodeList) {
+            if (data instanceof NodeList) {
                 final NodeList nodeList = (NodeList)data;
                 final ArrayList<Node> list = new ArrayList<>();
                 for (int i = 0, size = nodeList.getLength(); i < size; i++) {
@@ -75,24 +75,22 @@ public abstract class AbstractBaseEvaluator implements 
Evaluator, Serializable {
                 }
                 return list;
             }
-            else if (data instanceof List) {
+            if (data instanceof List) {
                 final ArrayList<Object> list = new ArrayList<>();
                 for (final Object v : (List)data) {
                     list.add(cloneData(v));
                 }
                 return list;
             }
-            else if (data instanceof Map) {
-                final Map<?,?> dataMap = (Map<?,?>)data;
-                final HashMap<Object, Object> map = new LinkedHashMap<>();
-                for (final Map.Entry<?,?> entry : dataMap.entrySet()) {
-                    map.put(cloneData(entry.getKey()), 
cloneData(entry.getValue()));
-                }
-                return map;
-            }
-            else {
+            if (!(data instanceof Map)) {
                 return cloneUnknownDataType(data);
             }
+            final Map<?,?> dataMap = (Map<?,?>)data;
+            final HashMap<Object, Object> map = new LinkedHashMap<>();
+            for (final Map.Entry<?,?> entry : dataMap.entrySet()) {
+                map.put(cloneData(entry.getKey()), 
cloneData(entry.getValue()));
+            }
+            return map;
         }
         return null;
     }
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 256262e..68a1339 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleContext.java
@@ -106,11 +106,11 @@ public class SimpleContext implements Context, 
Serializable {
         final Object localValue = getVars().get(name);
         if (localValue != null) {
             return localValue;
-        } else if (parent != null) {
+        }
+        if (parent != null) {
             return parent.get(name);
-        } else {
-            return null;
         }
+        return null;
     }
 
     /**
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 fe8eea4..6fb8cbc 100644
--- a/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
+++ b/src/main/java/org/apache/commons/scxml2/env/SimpleDispatcher.java
@@ -171,75 +171,69 @@ public class SimpleDispatcher implements EventDispatcher, 
Serializable {
 
         // We only handle the "scxml" type (which is the default too) and 
optionally the #_internal target
 
-        if (type == null || 
type.equalsIgnoreCase(SCXMLIOProcessor.SCXML_EVENT_PROCESSOR) ||
-                type.equals(SCXMLIOProcessor.DEFAULT_EVENT_PROCESSOR)) {
-            final String originType = SCXMLIOProcessor.DEFAULT_EVENT_PROCESSOR;
-            SCXMLIOProcessor ioProcessor;
+        if ((type != null) && 
!type.equalsIgnoreCase(SCXMLIOProcessor.SCXML_EVENT_PROCESSOR) && 
!type.equals(SCXMLIOProcessor.DEFAULT_EVENT_PROCESSOR)) {
+            ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR)
+                    .addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, 
TriggerEvent.ERROR_EVENT).sendId(id).build());
+            throw new ActionExecutionError(true, "<send>: Unsupported type - " 
+ type);
+        }
+        final String originType = SCXMLIOProcessor.DEFAULT_EVENT_PROCESSOR;
+        SCXMLIOProcessor ioProcessor;
 
-            boolean internal = false;
+        boolean internal = false;
 
-            String origin = target;
-            if (target == null) {
-                ioProcessor = 
ioProcessors.get(SCXMLIOProcessor.SCXML_EVENT_PROCESSOR);
-                origin = SCXMLIOProcessor.SCXML_EVENT_PROCESSOR;
-            }
-            else if (ioProcessors.containsKey(target)) {
-                ioProcessor = ioProcessors.get(target);
-                internal = 
SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR.equals(target);
-            }
-            else if (SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR.equals(target)) 
{
-                ioProcessor = 
ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR);
-                internal = true;
-            }
-            else {
-                if 
(target.startsWith(SCXMLIOProcessor.EVENT_PROCESSOR_ALIAS_PREFIX)) {
-                    
ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR).addEvent(
-                            new EventBuilder(TriggerEvent.ERROR_COMMUNICATION, 
TriggerEvent.ERROR_EVENT)
-                                    .sendId(id).build());
-                    throw new ActionExecutionError(true, "<send>: Unavailable 
target - " + target);
-                } else {
-                    
ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR).addEvent(
-                            new EventBuilder(TriggerEvent.ERROR_EXECUTION, 
TriggerEvent.ERROR_EVENT)
-                                    .sendId(id).build());
-                    throw new ActionExecutionError(true, "<send>: Invalid or 
unsupported target - " + target);
-                }
+        String origin = target;
+        if (target == null) {
+            ioProcessor = 
ioProcessors.get(SCXMLIOProcessor.SCXML_EVENT_PROCESSOR);
+            origin = SCXMLIOProcessor.SCXML_EVENT_PROCESSOR;
+        }
+        else if (ioProcessors.containsKey(target)) {
+            ioProcessor = ioProcessors.get(target);
+            internal = 
SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR.equals(target);
+        }
+        else if (SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR.equals(target)) {
+            ioProcessor = 
ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR);
+            internal = true;
+        }
+        else {
+            if 
(target.startsWith(SCXMLIOProcessor.EVENT_PROCESSOR_ALIAS_PREFIX)) {
+                
ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR).addEvent(
+                        new EventBuilder(TriggerEvent.ERROR_COMMUNICATION, 
TriggerEvent.ERROR_EVENT)
+                                .sendId(id).build());
+                throw new ActionExecutionError(true, "<send>: Unavailable 
target - " + target);
             }
+            
ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR).addEvent(
+                    new EventBuilder(TriggerEvent.ERROR_EXECUTION, 
TriggerEvent.ERROR_EVENT)
+                            .sendId(id).build());
+            throw new ActionExecutionError(true, "<send>: Invalid or 
unsupported target - " + target);
+        }
 
-            if (event == null) {
-                ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR)
-                        .addEvent(new 
EventBuilder(TriggerEvent.ERROR_EXECUTION, 
TriggerEvent.ERROR_EVENT).sendId(id).build());
-                throw new ActionExecutionError(true, "<send>: Cannot send 
without event name");
+        if (event == null) {
+            ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR)
+                    .addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, 
TriggerEvent.ERROR_EVENT).sendId(id).build());
+            throw new ActionExecutionError(true, "<send>: Cannot send without 
event name");
+        }
+        final EventBuilder eventBuilder = new EventBuilder(event, 
TriggerEvent.SIGNAL_EVENT)
+                .sendId(id)
+                .data(data);
+        if (!internal) {
+            eventBuilder.origin(origin).originType(originType);
+            if (SCXMLIOProcessor.PARENT_EVENT_PROCESSOR.equals(target)) {
+                
eventBuilder.invokeId(((ParentSCXMLIOProcessor)ioProcessor).getInvokeId());
             }
-            else {
-                final EventBuilder eventBuilder = new EventBuilder(event, 
TriggerEvent.SIGNAL_EVENT)
-                        .sendId(id)
-                        .data(data);
-                if (!internal) {
-                    eventBuilder.origin(origin).originType(originType);
-                    if 
(SCXMLIOProcessor.PARENT_EVENT_PROCESSOR.equals(target)) {
-                        
eventBuilder.invokeId(((ParentSCXMLIOProcessor)ioProcessor).getInvokeId());
-                    }
-                    if (delay > 0L) {
-                        // Need to schedule this one
-                        final Timer timer = new Timer(true);
-                        timer.schedule(new DelayedEventTask(id, 
eventBuilder.build(), ioProcessor), delay);
-                        timers.put(id, timer);
-                        if (log.isDebugEnabled()) {
-                            log.debug("Scheduled event '" + event + "' with 
delay "
-                                    + delay + "ms, as specified by <send> with 
id '"
-                                    + id + "'");
-                        }
-                        return;
-                    }
+            if (delay > 0L) {
+                // Need to schedule this one
+                final Timer timer = new Timer(true);
+                timer.schedule(new DelayedEventTask(id, eventBuilder.build(), 
ioProcessor), delay);
+                timers.put(id, timer);
+                if (log.isDebugEnabled()) {
+                    log.debug("Scheduled event '" + event + "' with delay "
+                            + delay + "ms, as specified by <send> with id '"
+                            + id + "'");
                 }
-                ioProcessor.addEvent(eventBuilder.build());
+                return;
             }
         }
-        else {
-            ioProcessors.get(SCXMLIOProcessor.INTERNAL_EVENT_PROCESSOR)
-                    .addEvent(new EventBuilder(TriggerEvent.ERROR_EXECUTION, 
TriggerEvent.ERROR_EVENT).sendId(id).build());
-            throw new ActionExecutionError(true, "<send>: Unsupported type - " 
+ type);
-        }
+        ioProcessor.addEvent(eventBuilder.build());
     }
 }
 
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 0c6c766..3f9f45f 100644
--- a/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
+++ b/src/main/java/org/apache/commons/scxml2/io/ContentParser.java
@@ -231,7 +231,7 @@ public class ContentParser {
             if (hasJsonSignature(src)) {
                 return new JsonValue(parseJson(src), false);
             }
-            else if (hasXmlSignature(src)) {
+            if (hasXmlSignature(src)) {
                 return new NodeValue(parseXml(src));
             }
             return new TextValue(spaceNormalizeContent(src), false);
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 19757e1..20ed057 100644
--- a/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
+++ b/src/main/java/org/apache/commons/scxml2/io/SCXMLWriter.java
@@ -168,10 +168,9 @@ public class SCXMLWriter {
         writeInternal(scxml, configuration, null, null, null);
         if (configuration.usePrettyPrint) {
             return configuration.prettyPrintOutput;
-        } else {
-            configuration.internalWriter.flush();
-            return configuration.internalWriter.toString();
         }
+        configuration.internalWriter.flush();
+        return configuration.internalWriter.toString();
     }
 
     /**
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 93ffa1b..b318816 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Action.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Action.java
@@ -73,7 +73,7 @@ public abstract class Action implements Serializable {
             // global script doesn't have a EnterableState
             return null;
         }
-        else if (parent == null) {
+        if (parent == null) {
             throw new ModelException("Action "
                     + this.getClass().getName() + " instance missing required 
parent TransitionTarget");
         }
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 b79824a..1603906 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Foreach.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Foreach.java
@@ -96,48 +96,46 @@ public class Foreach extends Action implements 
ActionsContainer {
         final Context ctx = exctx.getContext(getParentEnterableState());
         final Evaluator eval = exctx.getEvaluator();
         final Object arrayObject = eval.eval(ctx,array);
-        if (arrayObject != null && (arrayObject.getClass().isArray() || 
arrayObject instanceof Iterable || arrayObject instanceof Map)) {
-            if (arrayObject.getClass().isArray()) {
-                for (int currentIndex = 0, size = 
Array.getLength(arrayObject); currentIndex < size; currentIndex++) {
-                    eval.evalAssign(ctx, item, Array.get(arrayObject, 
currentIndex));
-                    if (index != null) {
-                        ctx.setLocal(index, currentIndex);
-                    }
-                    // The "foreach" statement is a "container"
-                    for (final Action aa : actions) {
-                        aa.execute(exctx);
-                    }
-                }
-            }
-            else {
-                // In case of Javascript based arrays, the (Nashorn) engine 
returns a ScriptObjectMirror
-                // which (also) implements Map<String, Object), so then we 
can/must use the map values as Iterable
-                final Iterable iterable = arrayObject instanceof Iterable ? 
(Iterable)arrayObject : ((Map)arrayObject).values();
-
-                // Spec requires to iterate over a shallow copy of underlying 
array in a way that modifications to
-                // the collection during the execution of <foreach> must not 
affect the iteration behavior.
-                // For array objects (see above) this isn't needed, but for 
Iterables we don't have that guarantee
-                // so we make a copy first
-                final ArrayList<Object> arrayList = new ArrayList<>();
-                for (final Object value: iterable) {
-                    arrayList.add(value);
+        if ((arrayObject == null) || (!arrayObject.getClass().isArray() && 
!(arrayObject instanceof Iterable) && !(arrayObject instanceof Map))) {
+            throw new ActionExecutionError("<foreach> in state " + 
getParentEnterableState().getId()+": invalid array value '"+array+"'");
+        }
+        if (arrayObject.getClass().isArray()) {
+            for (int currentIndex = 0, size = Array.getLength(arrayObject); 
currentIndex < size; currentIndex++) {
+                eval.evalAssign(ctx, item, Array.get(arrayObject, 
currentIndex));
+                if (index != null) {
+                    ctx.setLocal(index, currentIndex);
                 }
-                int currentIndex = 0;
-                for (final Object value : arrayList) {
-                    eval.evalAssign(ctx, item, value);
-                    if (index != null) {
-                        ctx.setLocal(index, currentIndex);
-                    }
-                    // The "foreach" statement is a "container"
-                    for (final Action aa : actions) {
-                        aa.execute(exctx);
-                    }
-                    currentIndex++;
+                // The "foreach" statement is a "container"
+                for (final Action aa : actions) {
+                    aa.execute(exctx);
                 }
             }
         }
         else {
-            throw new ActionExecutionError("<foreach> in state " + 
getParentEnterableState().getId()+": invalid array value '"+array+"'");
+            // In case of Javascript based arrays, the (Nashorn) engine 
returns a ScriptObjectMirror
+            // which (also) implements Map<String, Object), so then we 
can/must use the map values as Iterable
+            final Iterable iterable = arrayObject instanceof Iterable ? 
(Iterable)arrayObject : ((Map)arrayObject).values();
+
+            // Spec requires to iterate over a shallow copy of underlying 
array in a way that modifications to
+            // the collection during the execution of <foreach> must not 
affect the iteration behavior.
+            // For array objects (see above) this isn't needed, but for 
Iterables we don't have that guarantee
+            // so we make a copy first
+            final ArrayList<Object> arrayList = new ArrayList<>();
+            for (final Object value: iterable) {
+                arrayList.add(value);
+            }
+            int currentIndex = 0;
+            for (final Object value : arrayList) {
+                eval.evalAssign(ctx, item, value);
+                if (index != null) {
+                    ctx.setLocal(index, currentIndex);
+                }
+                // The "foreach" statement is a "container"
+                for (final Action aa : actions) {
+                    aa.execute(exctx);
+                }
+                currentIndex++;
+            }
         }
     }
 }
diff --git a/src/main/java/org/apache/commons/scxml2/model/Invoke.java 
b/src/main/java/org/apache/commons/scxml2/model/Invoke.java
index 50530b3..9279a17 100644
--- a/src/main/java/org/apache/commons/scxml2/model/Invoke.java
+++ b/src/main/java/org/apache/commons/scxml2/model/Invoke.java
@@ -420,20 +420,18 @@ public class Invoke extends Action implements 
ContentContainer, ParamsContainer
                 } else if (contentValue instanceof Element) {
                     // xml based content (must be assigned through data)
                     final Element contentElement = (Element)contentValue;
-                    if 
(SCXMLConstants.ELEM_SCXML.equals(contentElement.getLocalName()) &&
-                            
SCXMLConstants.XMLNS_SCXML.equals(contentElement.getNamespaceURI())) {
-                        // statemachine definition: transform to string as we 
cannot (yet) pass XML directly to invoker
-                        try {
-                            contentValue = 
ContentParser.DEFAULT_PARSER.toXml(contentElement);
-                        }
-                        catch (final IOException e) {
-                            throw new ActionExecutionError("<invoke> for state 
"+parentState.getId() +
-                                    ": invalid <content><scxml> definition");
-                        }
-                    } else {
+                    if 
(!SCXMLConstants.ELEM_SCXML.equals(contentElement.getLocalName()) || 
!SCXMLConstants.XMLNS_SCXML.equals(contentElement.getNamespaceURI())) {
                         throw new ActionExecutionError("<invoke> for state 
"+parentState.getId() +
                                 ": invalid <content> definition");
                     }
+                    // statemachine definition: transform to string as we 
cannot (yet) pass XML directly to invoker
+                    try {
+                        contentValue = 
ContentParser.DEFAULT_PARSER.toXml(contentElement);
+                    }
+                    catch (final IOException e) {
+                        throw new ActionExecutionError("<invoke> for state 
"+parentState.getId() +
+                                ": invalid <content><scxml> definition");
+                    }
                 } else {
                     throw new ActionExecutionError("<invoke> for state 
"+parentState.getId() +
                             ": invalid <content> definition");
diff --git 
a/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java 
b/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java
index 87975c8..73e48fb 100644
--- a/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java
+++ b/src/main/java/org/apache/commons/scxml2/semantics/SCXMLSemanticsImpl.java
@@ -580,9 +580,7 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics {
                         throw new ModelException("Illegal state machine 
configuration: encountered top level <final> "
                                 + "state while processing an event");
                     }
-                    else {
-                        es = es.getParent();
-                    }
+                    es = es.getParent();
                 }
                 final TransitionalState state = (TransitionalState)es;
                 TransitionalState current = state;
@@ -643,13 +641,11 @@ public class SCXMLSemanticsImpl implements SCXMLSemantics 
{
                     }
                 }
                 if (hasIntersection) {
-                    if (t1.getParent().isDescendantOf(t2.getParent())) {
-                        preemptedTransitions.add(t2);
-                    }
-                    else {
+                    if (!t1.getParent().isDescendantOf(t2.getParent())) {
                         t1Preempted = true;
                         break;
                     }
+                    preemptedTransitions.add(t2);
                 }
             }
             if (t1Preempted) {
diff --git a/src/test/java/org/apache/commons/scxml2/w3c/W3CTests.java 
b/src/test/java/org/apache/commons/scxml2/w3c/W3CTests.java
index 9b08420..0d73df1 100644
--- a/src/test/java/org/apache/commons/scxml2/w3c/W3CTests.java
+++ b/src/test/java/org/apache/commons/scxml2/w3c/W3CTests.java
@@ -274,7 +274,7 @@ public class W3CTests {
                 if ("#minimal-profile".equals(specid)) {
                     return Datamodel.MINIMAL;
                 }
-                else if ("#ecma-profile".equals(specid)) {
+                if ("#ecma-profile".equals(specid)) {
                     return Datamodel.ECMA;
                 }
                 return null;
@@ -414,11 +414,11 @@ public class W3CTests {
                 new W3CTests().getTests();
                 return;
             }
-            else if ("make".equals(args[0])) {
+            if ("make".equals(args[0])) {
                 new W3CTests().makeTests();
                 return;
             }
-            else if ("run".equals(args[0])) {
+            if ("run".equals(args[0])) {
                 final Datamodel datamodel = 
Datamodel.fromValue(System.getProperty("datamodel"));
                 final String testId = System.getProperty("test");
                 new W3CTests().runTests(testId, datamodel);
@@ -566,12 +566,10 @@ public class W3CTests {
         final boolean enabled = 
Boolean.parseBoolean(System.getProperty("enabled", "true"));
         if (testId != null) {
             final Assertions.Assertion assertion = 
assertions.getAssertions().get(testId);
-            if (assertion != null) {
-                runAssert(assertion, tests, datamodel, enabled, true, results);
-            }
-            else {
+            if (assertion == null) {
                 throw new IllegalArgumentException("Unknown test with id: 
"+testId);
             }
+            runAssert(assertion, tests, datamodel, enabled, true, results);
         }
         else {
             for (final Assertions.Assertion entry : 
assertions.getAssertions().values()) {
@@ -677,13 +675,11 @@ public class W3CTests {
             if (!testCase.isManual()) {
                 return end.getId().equals("pass");
             }
-            else if (test.getFinalState() != null) {
+            if (test.getFinalState() != null) {
                 return end.getId().equals(test.getFinalState());
             }
-            else {
-                // todo: manual verification for specific tests
-                return false;
-            }
+            // todo: manual verification for specific tests
+            return false;
         }
         catch (final Exception e) {
             if (test.isManual() && e.getMessage() != null && 
e.getMessage().equals(test.getFinalState())) {

Reply via email to