Author: karthick
Date: Wed Jan  7 17:18:05 2009
New Revision: 732580

URL: http://svn.apache.org/viewvc?rev=732580&view=rev
Log:
Respect the order defined by control dependencies during compensation (see 
section 12.5.2 of the spec).

Modified:
    
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/CompensationHandler.java
    ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SCOPE.java
    ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SEQUENCE.java
    
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/CompensationHandler.java
    ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java
    ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SEQUENCE.java

Modified: 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/CompensationHandler.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/CompensationHandler.java?rev=732580&r1=732579&r2=732580&view=diff
==============================================================================
--- 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/CompensationHandler.java
 (original)
+++ 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/CompensationHandler.java
 Wed Jan  7 17:18:05 2009
@@ -28,7 +28,7 @@
 /**
  * A handle to a compensation handler.
  */
-public class CompensationHandler implements Serializable {
+public class CompensationHandler implements Serializable, 
Comparable<CompensationHandler> {
     private static final long serialVersionUID = 1L;
 
     /** The scope to which this compensation handler belongs. */
@@ -65,4 +65,7 @@
         return Collections.emptySet();
     }
 
+    public int compareTo(CompensationHandler that) {
+       return (int) (that.scopeEndTime - this.scopeEndTime);
+    }
 }

Modified: 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SCOPE.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SCOPE.java?rev=732580&r1=732579&r2=732580&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SCOPE.java 
(original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SCOPE.java 
Wed Jan  7 17:18:05 2009
@@ -33,16 +33,7 @@
 import org.apache.ode.bpel.evt.ScopeFaultEvent;
 import org.apache.ode.bpel.evt.ScopeStartEvent;
 import org.apache.ode.bpel.evt.VariableModificationEvent;
-import org.apache.ode.bpel.rtrep.v1.OBase;
-import org.apache.ode.bpel.rtrep.v1.OCatch;
-import org.apache.ode.bpel.rtrep.v1.OElementVarType;
-import org.apache.ode.bpel.rtrep.v1.OEventHandler;
-import org.apache.ode.bpel.rtrep.v1.OFailureHandling;
-import org.apache.ode.bpel.rtrep.v1.OFaultHandler;
-import org.apache.ode.bpel.rtrep.v1.OLink;
-import org.apache.ode.bpel.rtrep.v1.OMessageVarType;
-import org.apache.ode.bpel.rtrep.v1.OScope;
-import org.apache.ode.bpel.rtrep.v1.OVarType;
+import org.apache.ode.bpel.rapi.InvalidProcessException;
 import org.apache.ode.bpel.rtrep.v1.channels.CompensationChannel;
 import org.apache.ode.bpel.rtrep.v1.channels.EventHandlerControlChannel;
 import org.apache.ode.bpel.rtrep.v1.channels.FaultData;
@@ -50,7 +41,6 @@
 import org.apache.ode.bpel.rtrep.v1.channels.ParentScopeChannelListener;
 import org.apache.ode.bpel.rtrep.v1.channels.TerminationChannel;
 import org.apache.ode.bpel.rtrep.v1.channels.TerminationChannelListener;
-import org.apache.ode.bpel.rapi.InvalidProcessException;
 import org.apache.ode.jacob.ChannelListener;
 import org.apache.ode.jacob.SynchChannel;
 import org.w3c.dom.Element;
@@ -116,7 +106,8 @@
             if (null == scope || ch.compensated.oscope.equals(scope))
                 out.add(ch);
         }
-        // TODO: sort out in terms of completion order
+        // sort out in terms of completion order
+        Collections.sort(out);
         return out;
     }
 

Modified: 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SEQUENCE.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SEQUENCE.java?rev=732580&r1=732579&r2=732580&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SEQUENCE.java 
(original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v1/SEQUENCE.java 
Wed Jan  7 17:18:05 2009
@@ -18,22 +18,19 @@
  */
 package org.apache.ode.bpel.rtrep.v1;
 
-import org.apache.ode.bpel.rtrep.v1.OActivity;
-import org.apache.ode.bpel.rtrep.v1.OScope;
-import org.apache.ode.bpel.rtrep.v1.OSequence;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
 import org.apache.ode.bpel.rtrep.v1.channels.FaultData;
 import org.apache.ode.bpel.rtrep.v1.channels.ParentScopeChannel;
 import org.apache.ode.bpel.rtrep.v1.channels.ParentScopeChannelListener;
 import org.apache.ode.bpel.rtrep.v1.channels.TerminationChannel;
 import org.apache.ode.bpel.rtrep.v1.channels.TerminationChannelListener;
 import org.apache.ode.jacob.SynchChannel;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
 import org.w3c.dom.Element;
 
 /**
@@ -99,7 +96,7 @@
                 }
 
                 public void completed(FaultData faultData, 
Set<CompensationHandler> compensations) {
-                    HashSet<CompensationHandler> comps = new 
HashSet<CompensationHandler>(_compensations);
+                    TreeSet<CompensationHandler> comps = new 
TreeSet<CompensationHandler>(_compensations);
                     comps.addAll(compensations);
                     if (faultData != null || _terminateRequested || 
_remaining.size() <= 1) {
                         deadPathRemaining(_remaining);

Modified: 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/CompensationHandler.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/CompensationHandler.java?rev=732580&r1=732579&r2=732580&view=diff
==============================================================================
--- 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/CompensationHandler.java
 (original)
+++ 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/CompensationHandler.java
 Wed Jan  7 17:18:05 2009
@@ -28,7 +28,7 @@
 /**
  * A handle to a compensation handler.
  */
-public class CompensationHandler implements Serializable {
+public class CompensationHandler implements Serializable, 
Comparable<CompensationHandler> {
        private static final long serialVersionUID = 1L;
 
        /** The scope to which this compensation handler belongs. */
@@ -65,4 +65,7 @@
     return Collections.emptySet();
   }
 
+  public int compareTo(CompensationHandler that) {
+       return (int) (that.scopeEndTime - this.scopeEndTime);
+  }
 }

Modified: 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java?rev=732580&r1=732579&r2=732580&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java 
(original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SCOPE.java 
Wed Jan  7 17:18:05 2009
@@ -33,6 +33,7 @@
 import org.apache.ode.bpel.evt.ScopeFaultEvent;
 import org.apache.ode.bpel.evt.ScopeStartEvent;
 import org.apache.ode.bpel.evt.VariableModificationEvent;
+import org.apache.ode.bpel.rapi.InvalidProcessException;
 import org.apache.ode.bpel.rtrep.v2.channels.CompensationChannel;
 import org.apache.ode.bpel.rtrep.v2.channels.EventHandlerControlChannel;
 import org.apache.ode.bpel.rtrep.v2.channels.FaultData;
@@ -40,7 +41,6 @@
 import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannelListener;
 import org.apache.ode.bpel.rtrep.v2.channels.TerminationChannel;
 import org.apache.ode.bpel.rtrep.v2.channels.TerminationChannelListener;
-import org.apache.ode.bpel.rapi.InvalidProcessException;
 import org.apache.ode.jacob.ChannelListener;
 import org.apache.ode.jacob.SynchChannel;
 import org.w3c.dom.Element;
@@ -104,7 +104,8 @@
             if (null == scope || ch.compensated.oscope.equals(scope))
                 out.add(ch);
         }
-        // TODO: sort out in terms of completion order
+        // sort out in terms of completion order
+        Collections.sort(out);
         return out;
     }
 

Modified: 
ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SEQUENCE.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SEQUENCE.java?rev=732580&r1=732579&r2=732580&view=diff
==============================================================================
--- ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SEQUENCE.java 
(original)
+++ ode/trunk/runtimes/src/main/java/org/apache/ode/bpel/rtrep/v2/SEQUENCE.java 
Wed Jan  7 17:18:05 2009
@@ -18,19 +18,19 @@
  */
 package org.apache.ode.bpel.rtrep.v2;
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
+
 import org.apache.ode.bpel.rtrep.v2.channels.FaultData;
 import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannel;
 import org.apache.ode.bpel.rtrep.v2.channels.ParentScopeChannelListener;
 import org.apache.ode.bpel.rtrep.v2.channels.TerminationChannel;
 import org.apache.ode.bpel.rtrep.v2.channels.TerminationChannelListener;
 import org.apache.ode.jacob.SynchChannel;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
 import org.w3c.dom.Element;
 
 /**
@@ -97,7 +97,7 @@
                 }
 
                 public void completed(FaultData faultData, 
Set<CompensationHandler> compensations) {
-                    HashSet<CompensationHandler> comps = new 
HashSet<CompensationHandler>(_compensations);
+                    TreeSet<CompensationHandler> comps = new 
TreeSet<CompensationHandler>(_compensations);
                     comps.addAll(compensations);
                     if (faultData != null || _terminateRequested || 
_remaining.size() <= 1) {
                         deadPathRemaining(_remaining);


Reply via email to