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 su...@apache.org on 2007/09/24 09:31:07 UTC

svn commit: r578683 - /webservices/sandesha/branches/sandesha2/java/1_3/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java

Author: sumedha
Date: Mon Sep 24 00:31:06 2007
New Revision: 578683

URL: http://svn.apache.org/viewvc?rev=578683&view=rev
Log:
For a given sequenceId,messageno there can be more than one record. This will result retransmitterMgr.findUnique to fail.

Modified:
    webservices/sandesha/branches/sandesha2/java/1_3/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java

Modified: webservices/sandesha/branches/sandesha2/java/1_3/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/branches/sandesha2/java/1_3/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?rev=578683&r1=578682&r2=578683&view=diff
==============================================================================
--- webservices/sandesha/branches/sandesha2/java/1_3/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java (original)
+++ webservices/sandesha/branches/sandesha2/java/1_3/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java Mon Sep 24 00:31:06 2007
@@ -18,6 +18,7 @@
 package org.apache.sandesha2.msgprocessors;
 
 import java.util.Iterator;
+import java.util.List;
 
 import javax.xml.namespace.QName;
 
@@ -189,35 +190,42 @@
 						
 						matcher.setMessageNumber(messageNo);
 						
-						SenderBean retransmitterBean = retransmitterMgr.findUnique(matcher);
-						if (retransmitterBean != null) {
-							// Check we haven't got an Ack for a message that hasn't been sent yet !
-							if (retransmitterBean.getSentCount() == 0) {
-								FaultManager.makeInvalidAcknowledgementFault(rmMsgCtx, sequenceAck, ackRange,
-										storageManager, piggybackedAck);
-								if (log.isDebugEnabled())
-									log.debug("Exit: AcknowledgementProcessor::processAckHeader, Invalid Ack");
-								return;
-							}
-							
-							String storageKey = retransmitterBean.getMessageContextRefKey();
-							
-							boolean syncResponseNeeded = false;
-							if (Sandesha2Constants.SPEC_VERSIONS.v1_0.equals(rmVersion) && anonReplyTo) {
-								MessageContext applicationMessage = storageManager.retrieveMessageContext(storageKey, configCtx);
-								AxisOperation operation = applicationMessage.getAxisOperation();
-								if(operation!= null) {
-									int mep = operation.getAxisSpecificMEPConstant();
-									syncResponseNeeded = (mep == WSDLConstants.MEP_CONSTANT_OUT_IN);
-								}
-							}
-
-							if (!syncResponseNeeded) {
-								// removing the application message from the storage.
-								retransmitterMgr.delete(retransmitterBean.getMessageID());
-								storageManager.removeMessageContext(storageKey);
-							}
-						}
+						List retransmitterBeans = retransmitterMgr.find(matcher);
+						if (! retransmitterBeans.isEmpty()){
+							Iterator retransmitterBeansItr = retransmitterBeans.iterator();
+							while (retransmitterBeansItr.hasNext()) {
+								SenderBean retransmitterBean = (SenderBean) retransmitterBeansItr.next();
+								if (retransmitterBean != null) {
+									// Check we haven't got an Ack for a message that hasn't been sent yet !
+									if (retransmitterBean.getSentCount() == 0) {
+										FaultManager.makeInvalidAcknowledgementFault(rmMsgCtx, sequenceAck, ackRange,
+												storageManager, piggybackedAck);
+										if (log.isDebugEnabled())
+											log.debug("Exit: AcknowledgementProcessor::processAckHeader, Invalid Ack");
+										return;
+									}
+									
+									String storageKey = retransmitterBean.getMessageContextRefKey();
+									
+									boolean syncResponseNeeded = false;
+									if (Sandesha2Constants.SPEC_VERSIONS.v1_0.equals(rmVersion) && anonReplyTo) {
+										MessageContext applicationMessage = storageManager.retrieveMessageContext(storageKey, configCtx);
+										AxisOperation operation = applicationMessage.getAxisOperation();
+										if(operation!= null) {
+											int mep = operation.getAxisSpecificMEPConstant();
+											syncResponseNeeded = (mep == WSDLConstants.MEP_CONSTANT_OUT_IN);
+										}
+									}
+
+									if (!syncResponseNeeded) {
+										// removing the application message from the storage.
+										retransmitterMgr.delete(retransmitterBean.getMessageID());
+										storageManager.removeMessageContext(storageKey);
+									}
+								}								
+							}							
+						}//end of if (!retransmitterBeans.isEmpty()){
+
 					}//end for
 				}//end for
 			} //end while



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org