You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mapreduce-commits@hadoop.apache.org by ma...@apache.org on 2011/07/13 00:03:15 UTC

svn commit: r1145791 - in /hadoop/common/branches/MR-279/mapreduce: CHANGES.txt yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/state/StateMachineFactory.java

Author: mahadev
Date: Tue Jul 12 22:03:14 2011
New Revision: 1145791

URL: http://svn.apache.org/viewvc?rev=1145791&view=rev
Log:
MAPREDUCE-2663. Refactoring StateMachineFactory inner classes. (ahmed radwan via mahadev)

Modified:
    hadoop/common/branches/MR-279/mapreduce/CHANGES.txt
    hadoop/common/branches/MR-279/mapreduce/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/state/StateMachineFactory.java

Modified: hadoop/common/branches/MR-279/mapreduce/CHANGES.txt
URL: http://svn.apache.org/viewvc/hadoop/common/branches/MR-279/mapreduce/CHANGES.txt?rev=1145791&r1=1145790&r2=1145791&view=diff
==============================================================================
--- hadoop/common/branches/MR-279/mapreduce/CHANGES.txt (original)
+++ hadoop/common/branches/MR-279/mapreduce/CHANGES.txt Tue Jul 12 22:03:14 2011
@@ -5,6 +5,9 @@ Trunk (unreleased changes)
 
     MAPREDUCE-279
 
+    MAPREDUCE-2663. Refactoring StateMachineFactory inner classes. (ahmed 
+    radwan via mahadev)
+
     MAPREDUCE-2400. Remove Cluster's dependency on JobTracker via a 
     ServiceProvider for the actual implementation. (tomwhite via acmurthy) 
  

Modified: hadoop/common/branches/MR-279/mapreduce/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/state/StateMachineFactory.java
URL: http://svn.apache.org/viewvc/hadoop/common/branches/MR-279/mapreduce/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/state/StateMachineFactory.java?rev=1145791&r1=1145790&r2=1145791&view=diff
==============================================================================
--- hadoop/common/branches/MR-279/mapreduce/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/state/StateMachineFactory.java (original)
+++ hadoop/common/branches/MR-279/mapreduce/yarn/yarn-common/src/main/java/org/apache/hadoop/yarn/state/StateMachineFactory.java Tue Jul 12 22:03:14 2011
@@ -102,7 +102,7 @@ final public class StateMachineFactory
     }
   }
 
-  static private class ApplicableSingleTransition
+  static private class ApplicableSingleOrMultipleTransition
              <OPERAND, STATE extends Enum<STATE>,
               EVENTTYPE extends Enum<EVENTTYPE>, EVENT>
           implements ApplicableTransition<OPERAND, STATE, EVENTTYPE, EVENT> {
@@ -110,7 +110,7 @@ final public class StateMachineFactory
     final EVENTTYPE eventType;
     final Transition<OPERAND, STATE, EVENTTYPE, EVENT> transition;
 
-    ApplicableSingleTransition
+    ApplicableSingleOrMultipleTransition
         (STATE preState, EVENTTYPE eventType,
          Transition<OPERAND, STATE, EVENTTYPE, EVENT> transition) {
       this.preState = preState;
@@ -135,42 +135,6 @@ final public class StateMachineFactory
     }
   }
 
-  static private class ApplicableMultipleTransition
-             <OPERAND, STATE extends Enum<STATE>,
-              EVENTTYPE extends Enum<EVENTTYPE>, EVENT>
-          implements ApplicableTransition<OPERAND, STATE, EVENTTYPE, EVENT> {
-    final STATE preState;
-    final Set<STATE> postStates;
-    final EVENTTYPE eventType;
-    final Transition<OPERAND, STATE, EVENTTYPE, EVENT> transition;
-
-    ApplicableMultipleTransition
-        (STATE preState, Set<STATE> postStates, EVENTTYPE eventType,
-         Transition<OPERAND, STATE, EVENTTYPE, EVENT> transition) {
-      this.preState = preState;
-      this.postStates = postStates;
-      this.eventType = eventType;
-      this.transition = transition;
-    }
-
-    @Override
-    public void apply
-             (StateMachineFactory<OPERAND, STATE, EVENTTYPE, EVENT> subject) {
-
-      Map<EVENTTYPE, Transition<OPERAND, STATE, EVENTTYPE, EVENT>> transitionMap
-        = subject.stateMachineTable.get(preState);
-      if (transitionMap == null) {
-        // I use HashMap here because I would expect most EVENTTYPE's to not
-        //  apply out of a particular state, so FSM sizes would be 
-        //  quadratic if I use EnumMap's here as I do at the top level.
-        transitionMap = new HashMap<EVENTTYPE,
-          Transition<OPERAND, STATE, EVENTTYPE, EVENT>>();
-        subject.stateMachineTable.put(preState, transitionMap);
-      }
-      transitionMap.put(eventType, transition);
-    }
-  }
-
   /**
    * @return a NEW StateMachineFactory just like {@code this} with the current
    *          transition added as a new legal transition.  This overload
@@ -258,7 +222,7 @@ final public class StateMachineFactory
                         EVENTTYPE eventType,
                         SingleArcTransition<OPERAND, EVENT> hook){
     return new StateMachineFactory
-        (this, new ApplicableSingleTransition
+        (this, new ApplicableSingleOrMultipleTransition
            (preState, eventType, new SingleInternalArc(postState, hook)));
   }
 
@@ -282,9 +246,8 @@ final public class StateMachineFactory
                         MultipleArcTransition<OPERAND, EVENT, STATE> hook){
     return new StateMachineFactory
         (this,
-         new ApplicableMultipleTransition
-           (preState, postStates,
-            eventType, new MultipleInternalArc(postStates, hook)));
+         new ApplicableSingleOrMultipleTransition
+           (preState, eventType, new MultipleInternalArc(postStates, hook)));
   }
 
   /**