Author: mriou
Date: Fri Mar 14 09:29:46 2008
New Revision: 637147

URL: http://svn.apache.org/viewvc?rev=637147&view=rev
Log:
ODE-245 Added sequence DPE on fault. Also a minor tweak to avoid double DPE on 
a terminated sequence child.

Modified:
    
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java

Modified: 
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java
URL: 
http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java?rev=637147&r1=637146&r2=637147&view=diff
==============================================================================
--- 
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java 
(original)
+++ 
ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/SEQUENCE.java 
Fri Mar 14 09:29:46 2008
@@ -83,7 +83,9 @@
                     replication(_child.self).terminate();
 
                     // Don't do any of the remaining activiites, DPE instead.
-                    deadPathRemaining();
+                    ArrayList<OActivity> remaining = new 
ArrayList<OActivity>(_remaining);
+                    remaining.remove(0);
+                    deadPathRemaining(remaining);
 
                     _terminateRequested = true;
                     instance(ACTIVE.this);
@@ -100,6 +102,7 @@
                     HashSet<CompensationHandler> comps = new 
HashSet<CompensationHandler>(_compensations);
                     comps.addAll(compensations);
                     if (faultData != null || _terminateRequested || 
_remaining.size() <= 1) {
+                        deadPathRemaining(_remaining);
                         _self.parent.completed(faultData, comps);
                     } else /* !fault && ! terminateRequested && 
!remaining.isEmpty */ {
                         ArrayList<OActivity> remaining = new 
ArrayList<OActivity>(_remaining);
@@ -113,8 +116,8 @@
             }));
         }
 
-        private void deadPathRemaining() {
-            for (Iterator<OActivity> i = _remaining.iterator();i.hasNext();)
+        private void deadPathRemaining(List<OActivity> remaining) {
+            for (Iterator<OActivity> i = remaining.iterator();i.hasNext();)
                 dpe(i.next());
         }
 


Reply via email to