You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by mr...@apache.org on 2008/08/20 20:18:15 UTC

svn commit: r687405 - /ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java

Author: mriou
Date: Wed Aug 20 11:18:14 2008
New Revision: 687405

URL: http://svn.apache.org/viewvc?rev=687405&view=rev
Log:
ODE-263 onAlarm is trigered only after completed activity

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

Modified: ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java
URL: http://svn.apache.org/viewvc/ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java?rev=687405&r1=687404&r2=687405&view=diff
==============================================================================
--- ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java (original)
+++ ode/trunk/bpel-runtime/src/main/java/org/apache/ode/bpel/runtime/INVOKE.java Wed Aug 20 11:18:14 2008
@@ -95,13 +95,13 @@
 
             } else /* two-way */{
                 final VariableInstance outputVar = _scopeFrame.resolve(_oinvoke.outputVar);
-                InvokeResponseChannel invokeResponseChannel = newChannel(InvokeResponseChannel.class);
+                final InvokeResponseChannel invokeResponseChannel = newChannel(InvokeResponseChannel.class);
 
                 final String mexId = getBpelRuntimeContext().invoke(
                     _scopeFrame.resolve(_oinvoke.partnerLink), _oinvoke.operation,
                     outboundMsg, invokeResponseChannel);
 
-                object(new InvokeResponseChannelListener(invokeResponseChannel) {
+                object(false, new InvokeResponseChannelListener(invokeResponseChannel) {
                     private static final long serialVersionUID = 4496880438819196765L;
 
                     public void onResponse() {
@@ -183,7 +183,28 @@
                         _self.parent.failure(getBpelRuntimeContext().getPartnerFaultExplanation(mexId), null);
                         getBpelRuntimeContext().releasePartnerMex(mexId);
                     }
-                });
+
+                }.or(new TerminationChannelListener(_self.self) {
+                    private static final long serialVersionUID = 4219496341785922396L;
+
+                    public void terminate() {
+                    	_self.parent.completed(null, CompensationHandler.emptySet());
+                    	object(new InvokeResponseChannelListener(invokeResponseChannel) {
+                        private static final long serialVersionUID = 688746737897792929L;
+                        public void onFailure() {
+                            __log.debug("Failure on invoke ignored, the invoke has already been terminated: " + _oinvoke.toString());
+                        }
+                        public void onFault() {
+                            __log.debug("Fault on invoke ignored, the invoke has already been terminated: " + _oinvoke.toString());
+                        }
+                        public void onResponse() {
+                            __log.debug("Response on invoke ignored, the invoke has already been terminated: " + _oinvoke.toString());
+                        }
+
+                    });
+                    }
+                }));
+;
             }
         } catch (FaultException fault) {
             __log.error(fault);