Author: dkulp
Date: Thu Aug 29 16:27:47 2013
New Revision: 1518692

URL: http://svn.apache.org/r1518692
Log:
[CXF-5242] If using a topic for reply destination, leverage the Async setup to 
make sure a listener is setup ahead of time.

Modified:
    
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java

Modified: 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
URL: 
http://svn.apache.org/viewvc/cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java?rev=1518692&r1=1518691&r2=1518692&view=diff
==============================================================================
--- 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
 (original)
+++ 
cxf/trunk/rt/transports/jms/src/main/java/org/apache/cxf/transport/jms/JMSConduit.java
 Thu Aug 29 16:27:47 2013
@@ -189,7 +189,9 @@ public class JMSConduit extends Abstract
         Destination replyToDestination = null;
         if (!exchange.isOneWay() || !jmsConfig.isEnforceSpec() && 
isSetReplyTo(outMessage)
             && replyTo != null) {
-            if (exchange.isSynchronous() || exchange.isOneWay()) {
+            if (!jmsConfig.isReplyPubSubDomain()
+                && (exchange.isSynchronous() 
+                    || exchange.isOneWay())) {
                 replyToDestination = 
JMSFactory.resolveOrCreateDestination(jmsTemplate, replyTo,
                                                                            
jmsConfig.isReplyPubSubDomain());
             } else {
@@ -210,14 +212,14 @@ public class JMSConduit extends Abstract
                 String messageType = jmsConfig.getMessageType();
                 Destination destination = rtd;
                 String replyToAddress = jmsConfig.getReplyToDestination();
-                if (replyToAddress != null) {
+                if (rtd == null && replyToAddress != null) {
                     destination = 
JMSFactory.resolveOrCreateDestination(jmsTemplate, replyToAddress,
                                                                         
jmsConfig.isPubSubDomain());
                 }
                 jmsMessage = JMSUtils.buildJMSMessageFromCXFMessage(jmsConfig, 
outMessage, request,
                                                                     
messageType, session, destination,
                                                                     cid);
-                if (!exchange.isSynchronous() && !exchange.isOneWay()) {
+                if ((jmsConfig.isReplyPubSubDomain() || 
!exchange.isSynchronous()) && !exchange.isOneWay()) {
                     correlationMap.put(cid, exchange);
                 }
                 LOG.log(Level.FINE, "client sending request: ", jmsMessage);
@@ -249,7 +251,7 @@ public class JMSConduit extends Abstract
                 headers.setJMSMessageID(messageCreator.getMessageID());
 
                 final String messageSelector = "JMSCorrelationID = '" + 
correlationId + "'";
-                if (exchange.isSynchronous()) {
+                if (exchange.isSynchronous() && 
!jmsConfig.isReplyPubSubDomain()) {
                     javax.jms.Message replyMessage = 
jmsTemplate.receiveSelected(replyToDestination,
                                                                                
  messageSelector);
                     if (replyMessage == null) {
@@ -283,6 +285,7 @@ public class JMSConduit extends Abstract
             if (userCID != null) {
                 correlationId = userCID;
             } else if (!jmsConfig.isSetConduitSelectorPrefix()
+                       && !jmsConfig.isReplyPubSubDomain()
                        && (exchange.isSynchronous() || exchange.isOneWay())
                        && (!jmsConfig.isSetUseConduitIdSelector() 
                            || !jmsConfig.isUseConduitIdSelector())) {


Reply via email to