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 mc...@apache.org on 2007/05/17 15:07:13 UTC

svn commit: r538901 - /webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java

Author: mckierna
Date: Thu May 17 06:07:12 2007
New Revision: 538901

URL: http://svn.apache.org/viewvc?view=rev&rev=538901
Log:
Ensure orphaned messages obtain RM namespace correctly

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

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java?view=diff&rev=538901&r1=538900&r2=538901
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/MakeConnectionProcessor.java Thu May 17 06:07:12 2007
@@ -21,9 +21,11 @@
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
+import org.apache.sandesha2.storage.beans.RMSBean;
 import org.apache.sandesha2.storage.beans.SenderBean;
 import org.apache.sandesha2.util.MsgInitializer;
 import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.util.SpecSpecificConstants;
 import org.apache.sandesha2.workers.SenderWorker;
 import org.apache.sandesha2.wsrm.Address;
 import org.apache.sandesha2.wsrm.Identifier;
@@ -142,6 +144,21 @@
 		if(pending) addMessagePendingHeader(returnMessage, namespace);
 		
 		RMMsgContext returnRMMsg = MsgInitializer.initializeMessage(returnMessage);
+		if(returnRMMsg.getRMNamespaceValue()==null){
+			//this is the case when a stored application response msg was not sucecsfully returned 
+			//on the sending transport's backchannel. Since the msg was stored without a sequence header
+			//we need to lookup the namespace using the RMS bean
+			if(log.isDebugEnabled()) log.debug("Looking up rmNamespace from RMS bean");
+			String sequenceID = matchingMessage.getSequenceID();
+			if(sequenceID!=null){
+				RMSBean rmsBean = new RMSBean();
+				rmsBean.setSequenceID(sequenceID);
+				rmsBean = storageManager.getRMSBeanMgr().findUnique(rmsBean);
+				if(rmsBean!=null){
+					returnRMMsg.setRMNamespaceValue(SpecSpecificConstants.getRMNamespaceValue(rmsBean.getRMVersion()));
+				}
+			}
+		}
 		setTransportProperties (returnMessage, pollMessage);
 		
 		// Link the response to the request



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