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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to