Author: mlovett
Date: Wed May 16 08:16:35 2007
New Revision: 538629

URL: http://svn.apache.org/viewvc?view=rev&rev=538629
Log:
Ensure we stop polling when a combination of sync and async 2-way calls are 
performed

Modified:
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=538629&r1=538628&r2=538629
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 Wed May 16 08:16:35 2007
@@ -309,15 +309,18 @@
                        }
 
                        if(mep == WSDLConstants.MEP_CONSTANT_OUT_IN) {
-                               long expectedReplies = 
rmsBean.getExpectedReplies();
-                               rmsBean.setExpectedReplies(expectedReplies + 1);
+                               // We only match up requests and replies when 
we are doing sync interactions
+                               EndpointReference replyTo = 
msgContext.getReplyTo();
+                               if(replyTo == null || 
replyTo.hasAnonymousAddress()) {
+                                       long expectedReplies = 
rmsBean.getExpectedReplies();
+                                       
rmsBean.setExpectedReplies(expectedReplies + 1);
+                               }
 
                                // If we support the RM anonymous URI then 
rewrite the ws-a anon to use the RM equivalent.
                                //(do should be done only for WSRM 1.1)
                                
                                if 
(Sandesha2Constants.SPEC_VERSIONS.v1_1.equals(rmMsgCtx.getRMSpecVersion())) {
-                                       EndpointReference oldEndpoint = 
msgContext.getReplyTo();
-                                       String oldAddress = (oldEndpoint == 
null) ? null : oldEndpoint.getAddress();
+                                       String oldAddress = (replyTo == null) ? 
null : replyTo.getAddress();
                                        EndpointReference newReplyTo = 
SandeshaUtil.rewriteEPR(rmsBean, msgContext
                                                        .getReplyTo(), 
configContext);
                                        String newAddress = (newReplyTo == 
null) ? null : newReplyTo.getAddress();

Modified: 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=538629&r1=538628&r2=538629
==============================================================================
--- 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
 Wed May 16 08:16:35 2007
@@ -247,9 +247,27 @@
                
                // If the message is a reply to an outbound message then we can 
update the RMSBean that
                // matches.
-               String outboundSequence = bean.getOutboundInternalSequence();
-               if(outboundSequence != null) {
-                       RMSBean outBean = 
SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, outboundSequence);
+               EndpointReference toEPR = msgCtx.getTo();
+               if(toEPR == null || toEPR.hasAnonymousAddress()) {
+                       RMSBean outBean = null;
+
+                       // Look for the correct outbound sequence by checking 
the anon uuid (if there is one)
+                       String toAddress = (toEPR == null) ? null : 
toEPR.getAddress();
+                       if(SandeshaUtil.isWSRMAnonymous(toAddress)) {
+                               RMSBean finderBean = new RMSBean();
+                               finderBean.setAnonymousUUID(toAddress);
+                               outBean = 
storageManager.getRMSBeanMgr().findUnique(finderBean);
+                       }
+                       
+                       // Fall back to the sequence that may have been offered 
at sequence creation time
+                       if(outBean == null) {
+                               String outboundSequence = 
bean.getOutboundInternalSequence();
+                               if(outboundSequence != null) {
+                                       outBean = 
SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, outboundSequence);
+                               }
+                       }
+                       
+                       // Update the reply count
                        if(outBean != null && outBean.getExpectedReplies() > 0 
) {
                                
outBean.setExpectedReplies(outBean.getExpectedReplies() - 1);
                                RMSBeanMgr outMgr = 
storageManager.getRMSBeanMgr();



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

Reply via email to