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);