Author: rahul
Date: Tue Jan 15 15:21:00 2008
New Revision: 612304

URL: http://svn.apache.org/viewvc?rev=612304&view=rev
Log:
Type safety improvements + Using for-each to reduce clutter.

Modified:
    
commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java

Modified: 
commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java
URL: 
http://svn.apache.org/viewvc/commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java?rev=612304&r1=612303&r2=612304&view=diff
==============================================================================
--- 
commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java
 (original)
+++ 
commons/proper/scxml/branches/J5/src/main/java/org/apache/commons/scxml/semantics/SCXMLSemanticsImpl.java
 Tue Jan 15 15:21:00 2008
@@ -23,7 +23,6 @@
 import java.util.Comparator;
 import java.util.HashMap;
 import java.util.HashSet;
-import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.LinkedList;
 import java.util.List;
@@ -180,13 +179,11 @@
         Collection<TriggerEvent> internalEvents = 
step.getAfterStatus().getEvents();
         Map<TransitionTarget, Invoker> invokers = scInstance.getInvokers();
         // ExecutePhaseActions / OnExit
-        for (Iterator<TransitionTarget> i = step.getExitList().iterator(); 
i.hasNext();) {
-            TransitionTarget tt = i.next();
+        for (TransitionTarget tt : step.getExitList()) {
             OnExit oe = tt.getOnExit();
             try {
-                for (Iterator<Action> onExitIter = oe.getActions().iterator();
-                        onExitIter.hasNext();) {
-                    onExitIter.next().execute(evtDispatcher,
+                for (Action onExitAct : oe.getActions()) {
+                    onExitAct.execute(evtDispatcher,
                         errRep, scInstance, appLog, internalEvents);
                 }
             } catch (SCXMLExpressionException e) {
@@ -213,33 +210,28 @@
             internalEvents.add(te);
         }
         // ExecutePhaseActions / Transitions
-        for (Iterator<Transition> i = step.getTransitList().iterator(); 
i.hasNext();) {
-            Transition t = i.next();
+        for (Transition t : step.getTransitList()) {
             try {
-                for (Iterator<Action> transitIter = t.getActions().iterator();
-                        transitIter.hasNext();) {
-                    transitIter.next().execute(evtDispatcher,
+                for (Action transitAct : t.getActions()) {
+                    transitAct.execute(evtDispatcher,
                         errRep, scInstance, appLog, internalEvents);
                 }
             } catch (SCXMLExpressionException e) {
                 errRep.onError(ErrorConstants.EXPRESSION_ERROR,
                     e.getMessage(), t);
             }
-            List rtargets = t.getRuntimeTargets();
-            for (int j = 0; j < rtargets.size(); j++) {
-                TransitionTarget tt = (TransitionTarget) rtargets.get(j);
+            List<TransitionTarget> rtargets = t.getRuntimeTargets();
+            for (TransitionTarget tt : rtargets) {
                 nr.fireOnTransition(t, t.getParent(), tt, t);
                 nr.fireOnTransition(stateMachine, t.getParent(), tt, t);
             }
         }
         // ExecutePhaseActions / OnEntry
-        for (Iterator<TransitionTarget> i = step.getEntryList().iterator(); 
i.hasNext();) {
-            TransitionTarget tt = i.next();
+        for (TransitionTarget tt : step.getEntryList()) {
             OnEntry oe = tt.getOnEntry();
             try {
-                for (Iterator<Action> onEntryIter = oe.getActions().iterator();
-                        onEntryIter.hasNext();) {
-                    onEntryIter.next().execute(evtDispatcher,
+                for (Action onEntryAct : oe.getActions()) {
+                    onEntryAct.execute(evtDispatcher,
                         errRep, scInstance, appLog, internalEvents);
                 }
             } catch (SCXMLExpressionException e) {
@@ -272,9 +264,8 @@
                         Parallel p = (Parallel) parent.getParent();
                         int finCount = 0;
                         int pCount = p.getChildren().size();
-                        for (Iterator regions = p.getChildren().iterator();
-                                regions.hasNext();) {
-                            State reg = (State) regions.next();
+                        for (TransitionTarget ttreg : p.getChildren()) {
+                            State reg = (State) ttreg;
                             if (scInstance.isDone(reg)) {
                                 finCount++;
                             }
@@ -314,9 +305,7 @@
         LinkedList<TransitionTarget> todoList = new 
LinkedList<TransitionTarget>(stateSet);
         while (!todoList.isEmpty()) {
             State st = (State) todoList.removeFirst();
-            for (Iterator<Transition> i = st.getTransitionsList().iterator();
-                    i.hasNext();) {
-                Transition t = i.next();
+            for (Transition t : st.getTransitionsList()) {
                 if (!transSet.contains(t)) {
                     transSet.add(t);
                     step.getTransitList().add(t);
@@ -361,17 +350,14 @@
         allEvents.addAll(step.getBeforeStatus().getEvents());
         allEvents.addAll(step.getExternalEvents());
         // Finalize invokes, if applicable
-        for (Iterator<TransitionTarget> iter = 
scInstance.getInvokers().keySet().iterator();
-                iter.hasNext();) {
-            State s = (State) iter.next();
+        for (TransitionTarget tt : scInstance.getInvokers().keySet()) {
+            State s = (State) tt;
             if (finalizeMatch(s.getId(), allEvents)) {
                 Finalize fn = s.getInvoke().getFinalize();
                 if (fn != null) {
                     try {
-                        for (Iterator<Action> fnIter = 
fn.getActions().iterator();
-                                fnIter.hasNext();) {
-                            fnIter.next().execute(evtDispatcher,
-                                errRep, scInstance, appLog,
+                        for (Action fnAct : fn.getActions()) {
+                            fnAct.execute(evtDispatcher, errRep, scInstance, 
appLog,
                                 step.getAfterStatus().getEvents());
                         }
                     } catch (SCXMLExpressionException e) {
@@ -384,9 +370,7 @@
         //remove list (filtered-out list)
         List<Transition> removeList = new LinkedList<Transition>();
         //iterate over non-filtered transition set
-        for (Iterator<Transition> iter = step.getTransitList().iterator();
-                iter.hasNext();) {
-            Transition t = iter.next();
+        for (Transition t : step.getTransitList()) {
             // event check
             String event = t.getEvent();
             if (!eventMatch(event, allEvents)) {
@@ -455,9 +439,7 @@
                 // if not, first one in each state / region (which is also
                 // first in document order) wins
                 Set<TransitionTarget> regions = new 
HashSet<TransitionTarget>();
-                Iterator<Transition> iter = nonDeterm.iterator();
-                while (iter.hasNext()) {
-                    Transition t = iter.next();
+                for (Transition t : nonDeterm) {
                     TransitionTarget parent = t.getParent();
                     if (regions.contains(parent)) {
                         removeList.add(t);
@@ -490,20 +472,16 @@
             final List<Transition> transitList, final ErrorReporter errRep) {
         Set<TransitionTarget> seedSet = new HashSet<TransitionTarget>();
         Set<TransitionTarget> regions = new HashSet<TransitionTarget>();
-        for (Iterator<Transition> i = transitList.iterator(); i.hasNext();) {
-            Transition t = i.next();
+        for (Transition t : transitList) {
             //iterate over transitions and add target states
             if (t.getTargets().size() > 0) {
                 seedSet.addAll(t.getTargets());
             }
             //build a set of all entered regions
-            List paths = t.getPaths();
-            for (int j = 0; j < paths.size(); j++) {
-                Path p = (Path) paths.get(j);
+            for (Path p : t.getPaths()) {
                 if (p.isCrossRegion()) {
-                    List regs = p.getRegionsEntered();
-                    for (Iterator k = regs.iterator(); k.hasNext();) {
-                        State region = (State) k.next();
+                    List<State> regs = p.getRegionsEntered();
+                    for (State region : regs) {
                         regions.addAll(((Parallel) region.getParent()).
                             getChildren());
                     }
@@ -516,8 +494,8 @@
         allStates = SCXMLHelper.getAncestorClosure(allStates, null);
         regions.removeAll(allStates);
         //iterate over inactive regions and visit them implicitly using initial
-        for (Iterator i = regions.iterator(); i.hasNext();) {
-            State reg = (State) i.next();
+        for (TransitionTarget tt : regions) {
+            State reg = (State) tt;
             seedSet.add(reg);
         }
         return seedSet;
@@ -558,9 +536,9 @@
                 }
             } else if (tt instanceof Parallel) {
                 Parallel prl = (Parallel) tt;
-                for (Iterator<TransitionTarget> i = 
prl.getChildren().iterator(); i.hasNext();) {
+                for (TransitionTarget kid : prl.getChildren()) {
                     //fork
-                    wrkSet.addLast(i.next());
+                    wrkSet.addLast(kid);
                 }
             } else if (tt instanceof History) {
                 History h = (History) tt;
@@ -589,24 +567,20 @@
      */
     public void updateHistoryStates(final Step step,
             final ErrorReporter errRep, final SCInstance scInstance) {
-        Set<TransitionTarget> oldState = step.getBeforeStatus().getStates();
-        for (Iterator<TransitionTarget> i = step.getExitList().iterator(); 
i.hasNext();) {
-            TransitionTarget tt = i.next();
+        Set<TransitionTarget> oldStates = step.getBeforeStatus().getStates();
+        for (TransitionTarget tt : step.getExitList()) {
             if (tt instanceof State) {
                 State s = (State) tt;
                 if (s.hasHistory()) {
                     Set<TransitionTarget> shallow = null;
                     Set<TransitionTarget> deep = null;
-                    for (Iterator<History> j = s.getHistory().iterator();
-                            j.hasNext();) {
-                        History h = j.next();
+                    for (History h : s.getHistory()) {
                         if (h.isDeep()) {
                             if (deep == null) {
                                 //calculate deep history for a given state once
                                 deep = new HashSet<TransitionTarget>();
-                                Iterator k = oldState.iterator();
-                                while (k.hasNext()) {
-                                    State os = (State) k.next();
+                                for (TransitionTarget ott : oldStates) {
+                                    State os = (State) ott;
                                     if (SCXMLHelper.isDescendant(os, s)) {
                                         deep.add(os);
                                     }
@@ -620,7 +594,7 @@
                                 shallow = new HashSet<TransitionTarget>();
                                 shallow.addAll(s.getChildren().values());
                                 shallow.retainAll(SCXMLHelper
-                                        .getAncestorClosure(oldState, null));
+                                        .getAncestorClosure(oldStates, null));
                             }
                             scInstance.setLastConfiguration(h, shallow);
                         }
@@ -650,8 +624,7 @@
         List<Transition> transitions = step.getTransitList();
         // DetermineExitedStates (currentStates, transitList) -> exitedStates
         Set<TransitionTarget> exitedStates = new HashSet<TransitionTarget>();
-        for (Iterator<Transition> i = transitions.iterator(); i.hasNext();) {
-            Transition t = i.next();
+        for (Transition t : transitions) {
             Set<TransitionTarget> ext = SCXMLHelper.getStatesExited(t, 
currentStates);
             exitedStates.addAll(ext);
         }
@@ -667,17 +640,14 @@
         // BuildOnEntryList (targetSet, seedSet) -> entryList
         Set<TransitionTarget> entered = 
SCXMLHelper.getAncestorClosure(targetSet, seedSet);
         seedSet.clear();
-        for (Iterator<Transition> i = transitions.iterator(); i.hasNext();) {
-            Transition t = i.next();
+        for (Transition t : transitions) {
             List<Path> paths = t.getPaths();
-            for (int j = 0; j < paths.size(); j++) {
-                Path p = paths.get(j);
+            for (Path p : paths) {
                 entered.addAll(p.getDownwardSegment());
             }
             // If target is a History pseudo state, remove from entered list
             List<TransitionTarget> rtargets = t.getRuntimeTargets();
-            for (int j = 0; j < rtargets.size(); j++) {
-                TransitionTarget tt = rtargets.get(j);
+            for (TransitionTarget tt : rtargets) {
                 if (tt instanceof History) {
                     entered.remove(tt);
                 }
@@ -702,10 +672,9 @@
         Collections.reverse(entering);
         step.getEntryList().addAll(entering);
         // reset 'done' flag
-        for (Iterator reset = entering.iterator(); reset.hasNext();) {
-            Object o = reset.next();
-            if (o instanceof State) {
-                scInstance.setDone((State) o, false);
+        for (TransitionTarget tt : entering) {
+            if (tt instanceof State) {
+                scInstance.setDone(tt, false);
             }
         }
     }
@@ -727,9 +696,7 @@
     throws ModelException {
         Set<TriggerEvent> allEvents = new HashSet<TriggerEvent>();
         allEvents.addAll(Arrays.asList(events));
-        for (Iterator<Map.Entry<TransitionTarget, Invoker>> invokeIter = 
scInstance.getInvokers().entrySet().
-                iterator(); invokeIter.hasNext();) {
-            Map.Entry<TransitionTarget, Invoker> iEntry = invokeIter.next();
+        for (Map.Entry<TransitionTarget, Invoker> iEntry : 
scInstance.getInvokers().entrySet()) {
             String parentId = iEntry.getKey().getId();
             if (!finalizeMatch(parentId, allEvents)) { // prevent cycles
                 Invoker inv = iEntry.getValue();
@@ -757,9 +724,8 @@
             final SCInstance scInstance) {
         Evaluator eval = scInstance.getEvaluator();
         Collection<TriggerEvent> internalEvents = 
step.getAfterStatus().getEvents();
-        for (Iterator iter = step.getAfterStatus().getStates().iterator();
-                iter.hasNext();) {
-            State s = (State) iter.next();
+        for (TransitionTarget tt : step.getAfterStatus().getStates()) {
+            State s = (State) tt;
             Context ctx = scInstance.getContext(s);
             Invoke i = s.getInvoke();
             if (i != null && scInstance.getInvoker(s) == null) {
@@ -796,8 +762,7 @@
                 inv.setSCInstance(scInstance);
                 List<Param> params = i.params();
                 Map<String, Object> args = new HashMap<String, Object>();
-                for (Iterator<Param> pIter = params.iterator(); 
pIter.hasNext();) {
-                    Param p = pIter.next();
+                for (Param p : params) {
                     String argExpr = p.getExpr();
                     Object argValue = null;
                     if (argExpr != null && argExpr.trim().length() > 0) {
@@ -837,14 +802,12 @@
      * @return true/false
      */
     protected boolean eventMatch(final String transEvent,
-            final Set eventOccurrences) {
+            final Set<TriggerEvent> eventOccurrences) {
         if (SCXMLHelper.isStringEmpty(transEvent)) { // Eventless transition
             return true;
         } else {
             String trimTransEvent = transEvent.trim();
-            Iterator i = eventOccurrences.iterator();
-            while (i.hasNext()) {
-                TriggerEvent te = (TriggerEvent) i.next();
+            for (TriggerEvent te : eventOccurrences) {
                 String event = te.getName();
                 if (event == null) {
                     continue; // Unnamed events
@@ -876,11 +839,10 @@
      * @return true/false
      */
     protected boolean finalizeMatch(final String parentStateId,
-            final Set eventOccurrences) {
+            final Set<TriggerEvent> eventOccurrences) {
         String prefix = parentStateId + ".invoke."; // invoke prefix
-        Iterator i = eventOccurrences.iterator();
-        while (i.hasNext()) {
-            String evt = ((TriggerEvent) i.next()).getName();
+        for (TriggerEvent te : eventOccurrences) {
+            String evt = te.getName();
             if (evt == null) {
                 continue; // Unnamed events
             } else if (evt.trim().startsWith(prefix)) {


Reply via email to