You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ml...@apache.org on 2007/05/16 17:16:36 UTC

svn commit: r538629 - in /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors: ApplicationMsgProcessor.java SequenceProcessor.java

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: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org