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 {