Author: mriou
Date: Tue Feb 27 08:25:04 2007
New Revision: 512305

URL: http://svn.apache.org/viewvc?view=rev&rev=512305
Log:
The mex pattern is only computed on engine invocation.

Modified:
    incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java

Modified: 
incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java
URL: 
http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java?view=diff&rev=512305&r1=512304&r2=512305
==============================================================================
--- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java 
(original)
+++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeService.java 
Tue Feb 27 08:25:04 2007
@@ -112,6 +112,7 @@
 
         if (jbiMex.getStatus() != ExchangeStatus.ACTIVE) {
             // We can forget about the exchange.
+            __log.debug("Consuming MEX tracker " + jbiMex.getExchangeId());
             _jbiMexTracker.consume(jbiMex.getExchangeId());
             return;
         }
@@ -165,6 +166,7 @@
      *            message exchenge
      */
     public void onResponse(MyRoleMessageExchange mex) {
+        __log.debug("Consuming MEX tracker " + mex.getClientId());
         javax.jbi.messaging.MessageExchange jbiMex = 
_jbiMexTracker.consume(mex.getClientId());
         if (jbiMex == null) {
             __log.warn("Ignoring unknown async reply: " + mex);
@@ -211,8 +213,8 @@
             }
             odeMex = 
_ode._server.getEngine().createMessageExchange(jbiMex.getExchangeId(), 
_endpoint.serviceName,
                     jbiMex.getOperation().getLocalPart());
-            MessageExchangePattern pattern = 
odeMex.getMessageExchangePattern();
 
+            MessageExchangePattern pattern = null;
             if (odeMex.getOperation() != null) {
                 copyMexProperties(odeMex, jbiMex);
                 javax.wsdl.Message msgdef = 
odeMex.getOperation().getInput().getMessage();
@@ -229,6 +231,8 @@
                 mapper.toODE(odeRequest, request, msgdef);
                 odeMex.invoke(odeRequest);
 
+                pattern = odeMex.getMessageExchangePattern();
+
                 // Handle the response if it is immediately available.
                 if (odeMex.getStatus() != Status.ASYNC) {
                     __log.debug("ODE MEX " + odeMex + " completed 
SYNCHRONOUSLY.");
@@ -244,10 +248,12 @@
 
             success = true;
             // For one-way invocation we do not need to maintain the 
association
-            if (pattern != MessageExchangePattern.REQUEST_RESPONSE)
+            if (pattern == null || pattern != 
MessageExchangePattern.REQUEST_RESPONSE) {
+                __log.debug("Consuming non Req/Res MEX tracker " + 
jbiMex.getExchangeId());
                 _jbiMexTracker.consume(jbiMex.getExchangeId());
+            }
 
-        } finally {            
+        } finally {
             if (success) {
                 __log.debug("Commiting ODE MEX " + odeMex);
                 _ode.getTransactionManager().commit();


Reply via email to