You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ode.apache.org by bo...@apache.org on 2007/03/28 16:43:41 UTC

svn commit: r523347 - /incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java

Author: boisvert
Date: Wed Mar 28 07:43:37 2007
New Revision: 523347

URL: http://svn.apache.org/viewvc?view=rev&rev=523347
Log:
Reload message exchange in new tranction to allow persistence layer to track changes

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

Modified: incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java
URL: http://svn.apache.org/viewvc/incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java?view=diff&rev=523347&r1=523346&r2=523347
==============================================================================
--- incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java (original)
+++ incubator/ode/trunk/jbi/src/main/java/org/apache/ode/jbi/OdeConsumer.java Wed Mar 28 07:43:37 2007
@@ -210,8 +210,8 @@
     }
 
     private void outResponse(final InOut jbiMex) {
-        final PartnerRoleMessageExchange pmex = _outstandingExchanges.remove(jbiMex.getExchangeId());
-        if (pmex == null) {
+        final PartnerRoleMessageExchange outstanding = _outstandingExchanges.remove(jbiMex.getExchangeId());
+        if (outstanding == null) {
             __log.warn("Received a response for unknown JBI message exchange " + jbiMex.getExchangeId());
             return;
         }
@@ -220,6 +220,12 @@
             _ode._scheduler.execTransaction(new Callable<Boolean>() {
                 @SuppressWarnings("unchecked")
                 public Boolean call() throws Exception {
+                    // need to reload mex since we're in a different transaction
+                    PartnerRoleMessageExchange pmex = (PartnerRoleMessageExchange) _ode._server.getEngine().getMessageExchange(outstanding.getMessageExchangeId());
+                    if (pmex == null) {
+                        __log.warn("Received a response for unknown partner role message exchange " + pmex.getMessageExchangeId());
+                        return Boolean.FALSE;
+                    }
                     String mapperName = pmex.getProperty(Mapper.class.getName());
                     Mapper mapper = mapperName == null ? _ode.getDefaultMapper() : _ode.getMapper(mapperName);
                     if (mapper == null) {
@@ -230,8 +236,7 @@
                         try {
                             Fault jbiFlt = jbiMex.getFault();
                             if (jbiFlt != null) {
-                                javax.wsdl.Fault wsdlFlt = mapper.toFaultType(jbiFlt, (Collection<javax.wsdl.Fault>) pmex
-                                        .getOperation().getFaults().values());
+                                javax.wsdl.Fault wsdlFlt = mapper.toFaultType(jbiFlt, (Collection<javax.wsdl.Fault>) pmex.getOperation().getFaults().values());
                                 if (wsdlFlt == null) {
                                     pmex.replyWithFailure(FailureType.FORMAT_ERROR, "Unrecognized fault message.", null);
                                 } else {