Author: mlovett
Date: Thu Sep 13 09:21:58 2007
New Revision: 575359

URL: http://svn.apache.org/viewvc?rev=575359&view=rev
Log:
When the client uses the RM SPI to create a Sequence, use an async replyTo if 
they have chosen to use a separate listener

Modified:
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java?rev=575359&r1=575358&r2=575359&view=diff
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
 Thu Sep 13 09:21:58 2007
@@ -43,6 +43,7 @@
 import org.apache.axis2.description.AxisOperationFactory;
 import org.apache.axis2.description.AxisService;
 import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.wsdl.WSDLConstants;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -356,6 +357,38 @@
                // cleanup previous sequence
                cleanupTerminatedSequence(to, oldSequenceKey, 
SandeshaUtil.getSandeshaStorageManager(configurationContext, 
configurationContext.getAxisConfiguration()));
                
+               // If the client requested async operations, mint a replyTo EPR
+               boolean resetReply = false;
+               if(options.isUseSeparateListener() && options.getReplyTo() == 
null) {
+                       try {
+                               if(log.isDebugEnabled()) log.debug("Creating 
replyTo EPR");
+                               
+                               // Try to work out which transport to use. If 
the user didn't choose one
+                               // then we use the To address to take a guess.
+                               TransportOutDescription senderTransport = 
options.getTransportOut();
+                               String transportName = null;
+                               if(senderTransport != null) {
+                                       transportName = 
senderTransport.getName();
+                               }
+
+                               if(transportName == null) {
+                                       int index = to.indexOf(':');
+                                       if(index > 0) transportName = 
to.substring(0, index);
+                               }
+
+                               EndpointReference replyTo = 
serviceContext.getMyEPR(transportName);
+                               if(replyTo != null) {
+                                       options.setReplyTo(replyTo);
+                                       resetReply = true;
+                               }
+                               
+                               if(log.isDebugEnabled()) log.debug("Created 
replyTo EPR: " + replyTo);
+
+                       } catch(AxisFault e) {
+                               if(log.isDebugEnabled()) log.debug("Caught 
exception", e);
+                               throw new SandeshaException(e);
+                       }
+               }
                try {                   
                        //just to inform the sender.
                        serviceClient.fireAndForget (null);
@@ -364,6 +397,7 @@
                }
                finally {
                        options.setAction(oldAction);
+                       if(resetReply) options.setReplyTo(null);
                        
                        
options.setProperty(SandeshaClientConstants.DUMMY_MESSAGE, 
Sandesha2Constants.VALUE_FALSE);
                        
options.setProperty(SandeshaClientConstants.SEQUENCE_KEY, oldSequenceKey);



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to