You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ch...@apache.org on 2006/03/31 06:15:11 UTC

svn commit: r390319 [1/3] - in /webservices/sandesha/trunk/src/org/apache/sandesha2: ./ client/ handlers/ msgprocessors/ storage/ storage/beanmanagers/ storage/beans/ storage/inmemory/ util/ workers/ wsrm/

Author: chamikara
Date: Thu Mar 30 20:15:07 2006
New Revision: 390319

URL: http://svn.apache.org/viewcvs?rev=390319&view=rev
Log:
Support for both addressing versions (Submission and Final).
Bug fixes
Cleaned the code

Modified:
    webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/util/SequenceManager.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/workers/InOrderInvoker.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Accept.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcksTo.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Address.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequence.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java
    webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java Thu Mar 30 20:15:07 2006
@@ -26,14 +26,13 @@
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisOperationFactory;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.engine.AxisEngine;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.storage.StorageManager;
@@ -44,13 +43,10 @@
 import org.apache.sandesha2.storage.beans.SequencePropertyBean;
 import org.apache.sandesha2.transport.Sandesha2TransportOutDesc;
 import org.apache.sandesha2.util.MsgInitializer;
-import org.apache.sandesha2.util.PropertyManager;
 import org.apache.sandesha2.util.RMMsgCreator;
 import org.apache.sandesha2.util.SOAPAbstractFactory;
-import org.apache.sandesha2.util.SandeshaPropertyBean;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.apache.sandesha2.wsrm.AcknowledgementRange;
-import org.apache.sandesha2.wsrm.Sequence;
 import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
 
 /**
@@ -70,46 +66,24 @@
 	 * @param applicationRMMsgContext
 	 * @throws SandeshaException
 	 */
-	public static void piggybackAckIfPresent(
-			RMMsgContext applicationRMMsgContext) throws SandeshaException {
-		ConfigurationContext configurationContext = applicationRMMsgContext
-				.getMessageContext().getConfigurationContext();
-		StorageManager storageManager = SandeshaUtil
-				.getSandeshaStorageManager(configurationContext);
-
-		SenderBeanMgr retransmitterBeanMgr = storageManager
-				.getRetransmitterBeanMgr();
-		SequencePropertyBeanMgr sequencePropertyBeanMgr = storageManager
-				.getSequencePropretyBeanMgr();
-
-		SenderBean findBean = new SenderBean();
-
-		Sequence sequence = (Sequence) applicationRMMsgContext
-				.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
-		if (sequence == null) {
-			String message = "Application message does not contain a sequence part";
-			log.debug(message);
-			throw new SandeshaException(message);
-		}
+	public static void piggybackAcksIfPresent(
+			RMMsgContext rmMessageContext) throws SandeshaException {
+		
+		ConfigurationContext configurationContext = rmMessageContext.getConfigurationContext();
+		StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(configurationContext);
 
-		String sequenceId = sequence.getIdentifier().getIdentifier();
+		SenderBeanMgr retransmitterBeanMgr = storageManager.getRetransmitterBeanMgr();
+		SequencePropertyBeanMgr sequencePropertyBeanMgr = storageManager.getSequencePropretyBeanMgr();
 
-		SequencePropertyBean internalSequenceBean = sequencePropertyBeanMgr
-				.retrieve(
-						sequenceId,
-						Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID);
-		if (internalSequenceBean == null) {
-			String message = "Temp Sequence is not set";
-			log.debug(message);
-			throw new SandeshaException(message);
-		}
+		SenderBean findBean = new SenderBean();
 
-		//String internalSequenceId = (String) internalSequenceBean.getValue();
+		String sequnceID = SandeshaUtil.getSequenceIDFromRMMessage (rmMessageContext);
+		
 		findBean.setMessageType(Sandesha2Constants.MessageTypes.ACK);
 		findBean.setSend(true);
 		findBean.setReSend(false);
 		
-		String carrietTo = applicationRMMsgContext.getTo().getAddress();
+		String carrietTo = rmMessageContext.getTo().getAddress();
 		
 		Collection collection = retransmitterBeanMgr.find(findBean);
 		
@@ -125,20 +99,26 @@
 				//Piggybacking will happen only if the end of ack interval (timeToSend) is not reached.
 
 				MessageContext ackMsgContext = storageManager
-				.retrieveMessageContext(ackBean
-						.getMessageContextRefKey(),configurationContext);
+				.retrieveMessageContext(ackBean.getMessageContextRefKey(),configurationContext);
 				
+				//wsa:To has to match for piggybacking.
 				String to = ackMsgContext.getTo().getAddress();
 				if (!carrietTo.equals(to)) {
 					continue piggybackLoop;
 				}
 				
+				String ackSequenceID = ackBean.getSequenceID();
+				
+				//sequenceID has to match for piggybacking
+				if (!ackSequenceID.equals(sequnceID)) {
+					continue piggybackLoop;
+				}
+				
 				//deleting the ack entry.
 				retransmitterBeanMgr.delete(ackBean.getMessageID());
 
 				//Adding the ack to the application message
-				RMMsgContext ackRMMsgContext = MsgInitializer
-						.initializeMessage(ackMsgContext);
+				RMMsgContext ackRMMsgContext = MsgInitializer.initializeMessage(ackMsgContext);
 				if (ackRMMsgContext.getMessageType() != Sandesha2Constants.MessageTypes.ACK) {
 					String message = "Invalid ack message entry";
 					log.debug(message);
@@ -147,11 +127,11 @@
 
 				SequenceAcknowledgement sequenceAcknowledgement = (SequenceAcknowledgement) ackRMMsgContext
 						.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
-				applicationRMMsgContext.setMessagePart(
+				rmMessageContext.setMessagePart(
 						Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT,
 						sequenceAcknowledgement);
 
-				applicationRMMsgContext.addSOAPEnvelope();
+				rmMessageContext.addSOAPEnvelope();
 				break piggybackLoop;
 			}
 		}
@@ -246,6 +226,9 @@
 
 		MessageContext ackMsgCtx = SandeshaUtil.createNewRelatedMessageContext(
 				referenceRMMessage, ackOperation);
+		ackMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+				referenceMsg.getProperty(AddressingConstants.WS_ADDRESSING_VERSION));  //TODO do this in the RMMsgCreator
+		
 		
 		ackMsgCtx.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,"true");
 		
@@ -270,8 +253,13 @@
 		
 		//adding the SequenceAcknowledgement part.
 		RMMsgCreator.addAckMessage(ackRMMsgCtx, sequenceID);
+		
+		ackMsgCtx.setProperty(MessageContext.TRANSPORT_IN,null);
 
-		if (Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo.getAddress())) {
+		String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configurationContext);
+		String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+		
+		if (anonymousURI.equals(acksTo.getAddress())) {
 
 //			AxisEngine engine = new AxisEngine(ackRMMsgCtx.getMessageContext()
 //					.getConfigurationContext());
@@ -298,6 +286,7 @@
 			referenceRMMessage.getMessageContext().setProperty(
 					Sandesha2Constants.ACK_WRITTEN, "true");
 			
+			ackRMMsgCtx.getMessageContext().setServerSide(true);
 			return ackRMMsgCtx;
 			
 		} else {
@@ -313,6 +302,7 @@
 			ackBean.setMessageContextRefKey(key);
 			ackBean.setMessageID(ackMsgCtx.getMessageID());
 			ackBean.setReSend(false);
+			ackBean.setSequenceID(sequenceID);
 			
 			//this will be set to true in the sender.
 			ackBean.setSend(true);

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java Thu Mar 30 20:15:07 2006
@@ -22,9 +22,11 @@
 import java.util.jar.Attributes.Name;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.sandesha2.util.SOAPAbstractFactory;
@@ -51,6 +53,8 @@
 
 	private String rmNamespaceValue = null;
 	
+	private String addressingNamespaceValue = null;
+	
 	private String rmSpecVersion = null;
 	
 	public RMMsgContext() {
@@ -222,13 +226,14 @@
 		return true;
 	}
 
-	public AbstractContext getContext() {
+	public ConfigurationContext getConfigurationContext() {
 		if (msgContext == null)
 			return null;
 
 		return msgContext.getConfigurationContext();
 	}
 
+	
 	public void setSOAPAction(String SOAPAction) {
 		msgContext.setSoapAction(SOAPAction);
 	}
@@ -267,5 +272,17 @@
 	
 	public int getFlow () {
 		return msgContext.getFLOW();
+	}
+
+	public String getAddressingNamespaceValue() {
+		return addressingNamespaceValue;
+	}
+
+	public void setAddressingNamespaceValue(String addressingNamespaceValue) throws SandeshaException {
+		if (addressingNamespaceValue!=AddressingConstants.Submission.WSA_NAMESPACE &&
+			addressingNamespaceValue!=AddressingConstants.Final.WSA_NAMESPACE)
+			throw new SandeshaException ("Unknown addressing version");
+		
+		this.addressingNamespaceValue = addressingNamespaceValue;
 	}
 }

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java Thu Mar 30 20:15:07 2006
@@ -17,7 +17,9 @@
 
 package org.apache.sandesha2;
 
-
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
 import org.apache.axiom.om.OMConstants;
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMNamespace;
@@ -30,8 +32,6 @@
 import org.apache.axiom.soap.SOAPFaultSubCode;
 import org.apache.axiom.soap.SOAPFaultText;
 import org.apache.axiom.soap.SOAPFaultValue;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
 import org.apache.sandesha2.util.SOAPAbstractFactory;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.apache.sandesha2.wsrm.FaultCode;
@@ -203,7 +203,8 @@
 		if (detailElement != null)
 			faultDetail.addChild(detailElement);
 
-		faultMsgContext.setWSAAction(Sandesha2Constants.WSA.SOAP_FAULT_ACTION);
+		
+		faultMsgContext.setWSAAction(AddressingConstants.Final.WSA_FAULT_ACTION);
 	}
 
 }

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java Thu Mar 30 20:15:07 2006
@@ -63,37 +63,39 @@
 	
 	public interface SPEC_2005_10 {
 		
-		String NS_URI = "http://docs.oasis-open.org/ws-rx/wsrm/200510";
+		String NS_URI = "http://docs.oasis-open.org/ws-rx/wsrm/200602";
 		
 		public interface Actions {
 			
-			String ACTION_CREATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequence";
+			String ACTION_CREATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CreateSequence";
 
-			String ACTION_CREATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequenceResponse";
+			String ACTION_CREATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CreateSequenceResponse";
 
-			String ACTION_SEQUENCE_ACKNOWLEDGEMENT = "http://docs.oasis-open.org/ws-rx/wsrm/200510/SequenceAcknowledgement";
+			String ACTION_SEQUENCE_ACKNOWLEDGEMENT = "http://docs.oasis-open.org/ws-rx/wsrm/200602/SequenceAcknowledgement";
 
-			String ACTION_TERMINATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/TerminateSequence";
+			String ACTION_TERMINATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/TerminateSequence";
 			
-			String ACTION_TERMINATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/TerminateSequenceResponse";
+			String ACTION_TERMINATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/TerminateSequenceResponse";
 			
-			String ACTION_ACK_REQUEST = "http://docs.oasis-open.org/ws-rx/wsrm/200510/AckRequested";
+			String ACTION_ACK_REQUEST = "http://docs.oasis-open.org/ws-rx/wsrm/200602/AckRequested";
 			
-			String ACTION_CLOSE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CloseSequence";
+			String ACTION_CLOSE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CloseSequence";
 			
-			String ACTION_CLOSE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CloseSequenceResponse";
+			String ACTION_CLOSE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CloseSequenceResponse";
 			
-			String SOAP_ACTION_CREATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequence";
+			String SOAP_ACTION_CREATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CreateSequence";
 
-			String SOAP_ACTION_CREATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequenceResponse";
+			String SOAP_ACTION_CREATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CreateSequenceResponse";
 
-			String SOAP_ACTION_SEQUENCE_ACKNOWLEDGEMENT = "http://docs.oasis-open.org/ws-rx/wsrm/200510/SequenceAcknowledgement";
+			String SOAP_ACTION_SEQUENCE_ACKNOWLEDGEMENT = "http://docs.oasis-open.org/ws-rx/wsrm/200602/SequenceAcknowledgement";
 
-			String SOAP_ACTION_TERMINATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/TerminateSequence";
+			String SOAP_ACTION_TERMINATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/TerminateSequence";
 			
-			String SOAP_ACTION_ACK_REQUEST = "http://docs.oasis-open.org/ws-rx/wsrm/200510/AckRequested";
+			String SOAP_ACTION_TERMINATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/TerminateSequenceResponse";
 			
-			String SOAP_ACTION_CLOSE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CloseSequence";
+			String SOAP_ACTION_ACK_REQUEST = "http://docs.oasis-open.org/ws-rx/wsrm/200602/AckRequested";
+			
+			String SOAP_ACTION_CLOSE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CloseSequence";
 		}
 	}
 	
@@ -153,15 +155,13 @@
 	}
 
 	public interface WSA {
-		String NS_URI_ANONYMOUS = AddressingConstants.Final.WSA_ANONYMOUS_URL;  // "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
-
-		String NS_URI_ADDRESSING = AddressingConstants.Final.WSA_NAMESPACE; //"http://schemas.xmlsoap.org/ws/2004/08/addressing";
-
+		
 		String NS_PREFIX_ADDRESSING = "wsa";
 
 		String ADDRESS = "Address";
 
-		String SOAP_FAULT_ACTION = "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
+//		String SOAP_FAULT_ACTION = "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
+		
 	}
 
 	public interface WSP {
@@ -226,6 +226,9 @@
 											   // property. This is used as the
 											   // sequenceId to share data b/w
 											   // sequences
+		
+		//Addressing version of a sequence. All messages of a sequence should have this addressing versio
+		String ADDRESSING_NAMESPACE_VALUE = "AddressingNamespaceValue";
 
 		//For incoming sequences this gives the msg no's of the messages that were
 		//received (may be an ack was sent - depending on the policy)

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java Thu Mar 30 20:15:07 2006
@@ -1,5 +1,7 @@
 package org.apache.sandesha2;
 
+import org.apache.axis2.addressing.AddressingConstants;
+
 public class SpecSpecificConstants {
 
 	private static String unknownSpecErrorMessage = "Unknown specification version";
@@ -49,6 +51,13 @@
 			throw new SandeshaException (unknownSpecErrorMessage);
 	}
 	
+	public static String getTerminateSequenceResponseAction (String specVersion) throws SandeshaException {
+		if (Sandesha2Constants.SPEC_VERSIONS.WSRX.equals(specVersion)) 
+			return Sandesha2Constants.SPEC_2005_10.Actions.ACTION_TERMINATE_SEQUENCE_RESPONSE;
+		else 
+			throw new SandeshaException (unknownSpecErrorMessage);
+	}
+	
 	public static String getCloseSequenceAction (String specVersion) throws SandeshaException {
 		if (Sandesha2Constants.SPEC_VERSIONS.WSRM.equals(specVersion)) 
 			throw new SandeshaException ("This rm spec version does not define a sequenceClose action");
@@ -57,6 +66,15 @@
 		else 
 			throw new SandeshaException (unknownSpecErrorMessage);
 	}
+
+	public static String getCloseSequenceResponseAction (String specVersion) throws SandeshaException {
+		if (Sandesha2Constants.SPEC_VERSIONS.WSRM.equals(specVersion)) 
+			throw new SandeshaException ("This rm spec version does not define a sequenceClose action");
+		else if (Sandesha2Constants.SPEC_VERSIONS.WSRX.equals(specVersion)) 
+			return Sandesha2Constants.SPEC_2005_10.Actions.ACTION_CLOSE_SEQUENCE_RESPONSE;
+		else 
+			throw new SandeshaException (unknownSpecErrorMessage);
+	}
 	
 	public static String getAckRequestAction (String specVersion) throws SandeshaException {
 		if (Sandesha2Constants.SPEC_VERSIONS.WSRM.equals(specVersion)) 
@@ -103,6 +121,13 @@
 			throw new SandeshaException (unknownSpecErrorMessage);
 	}
 	
+	public static String getTerminateSequenceResponseSOAPAction (String specVersion) throws SandeshaException {
+		if (Sandesha2Constants.SPEC_VERSIONS.WSRX.equals(specVersion)) 
+			return Sandesha2Constants.SPEC_2005_10.Actions.SOAP_ACTION_TERMINATE_SEQUENCE_RESPONSE;
+		else 
+			throw new SandeshaException (unknownSpecErrorMessage);
+	}
+	
 	public static String getAckRequestSOAPAction (String specVersion) throws SandeshaException {
 		if (Sandesha2Constants.SPEC_VERSIONS.WSRM.equals(specVersion)) 
 			throw new SandeshaException ("this spec version does not define a ackRequest SOAP action");
@@ -169,4 +194,23 @@
 	public static String getDefaultSpecVersion () {
 		return Sandesha2Constants.SPEC_VERSIONS.WSRM;
 	}
+	
+	public static String getAddressingAnonymousURI (String addressingNSURI) throws SandeshaException {
+		if (AddressingConstants.Submission.WSA_NAMESPACE.equals(addressingNSURI))
+			return AddressingConstants.Submission.WSA_ANONYMOUS_URL;
+		else if (AddressingConstants.Final.WSA_NAMESPACE.equals(addressingNSURI))
+			return AddressingConstants.Final.WSA_ANONYMOUS_URL;
+		else
+			throw new SandeshaException ("Unknown addressing version");
+	}
+	
+	public static String getAddressingFaultAction (String addressingNSURI) throws SandeshaException {
+		if (AddressingConstants.Submission.WSA_NAMESPACE.equals(addressingNSURI))
+			return "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";  //this is not available in addressing constants )-:
+		else if (AddressingConstants.Final.WSA_NAMESPACE.equals(addressingNSURI))
+			return AddressingConstants.Final.WSA_FAULT_ACTION;
+		else
+			throw new SandeshaException ("Unknown addressing version");
+	}
+	
 }

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java Thu Mar 30 20:15:07 2006
@@ -279,9 +279,12 @@
 				String internalSequenceID = internalSequenceBean.getValue();
 				SequencePropertyBean acksToBean = sequencePropertyBeanMgr.retrieve(internalSequenceID,Sandesha2Constants.SequenceProperties.ACKS_TO_EPR);
 				
+				String addressingNamespace = SandeshaUtil.getSequenceProperty(internalSequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configContext);
+				String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespace);
+				
 				if (acksToBean!=null) {
 					String acksTo = acksToBean.getValue();
-					if (acksTo!=null && !Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo)) {
+					if (acksTo!=null && !anonymousURI.equals(acksTo)) {
 						stopListnerForAsyncAcks = true;
 					}
 				}
@@ -331,120 +334,6 @@
 		SandeshaUtil.stopSenderForTheSequence(internalSequenceId);
 	}
 	
-//	public void terminateSequence (String outSequenceID,String internalSequenceID,ConfigurationContext configCtx) {
-//
-//		
-//		StorageManager storageManager = SandeshaUtil
-//				.getSandeshaStorageManager(configCtx);
-//
-//		Transaction addTerminateSeqTransaction = storageManager.getTransaction();
-//		
-//		SequencePropertyBeanMgr seqPropMgr = storageManager
-//				.getSequencePropretyBeanMgr();
-//
-//		SequencePropertyBean terminated = seqPropMgr.retrieve(outSequenceID,
-//				Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
-//
-//		if (terminated != null && terminated.getValue() != null
-//				&& "true".equals(terminated.getValue())) {
-//			String message = "Terminate was added previously.";
-//			log.info(message);
-//			return;
-//		}
-//
-//		RMMsgContext terminateRMMessage = RMMsgCreator
-//				.createTerminateSequenceMessage(outSequenceID);
-//		terminateRMMessage.setFlow(MessageContext.OUT_FLOW);
-//		terminateRMMessage.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,"true");
-//		
-//		SequencePropertyBean toBean = seqPropMgr.retrieve(internalSequenceID,
-//				Sandesha2Constants.SequenceProperties.TO_EPR);
-//
-//		EndpointReference toEPR = new EndpointReference ( toBean.getValue());
-//		if (toEPR == null) {
-//			String message = "To EPR has an invalid value";
-//			throw new SandeshaException(message);
-//		}
-//
-//		terminateRMMessage.setTo(new EndpointReference(toEPR.getAddress()));
-//		terminateRMMessage.setFrom(new EndpointReference(
-//				Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-//		terminateRMMessage.setFaultTo(new EndpointReference(
-//				Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-//		
-//		String rmVersion = SandeshaUtil.getRMVersion(internalSequenceID,configCtx);
-//		if (rmVersion==null)
-//			throw new SandeshaException ("Cant find the rmVersion of the given message");
-//		terminateRMMessage.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(rmVersion));
-//		terminateRMMessage.setSOAPAction(SpecSpecificConstants.getTerminateSequenceSOAPAction(rmVersion));
-//
-//		SequencePropertyBean transportToBean = seqPropMgr.retrieve(internalSequenceID,Sandesha2Constants.SequenceProperties.TRANSPORT_TO);
-//		if (transportToBean!=null) {
-//			terminateRMMessage.setProperty(MessageContextConstants.TRANSPORT_URL,transportToBean.getValue());
-//		}
-//		
-//		try {
-//			terminateRMMessage.addSOAPEnvelope();
-//		} catch (AxisFault e) {
-//			throw new SandeshaException(e.getMessage());
-//		}
-//
-//		String key = SandeshaUtil.getUUID();
-//		
-//		SenderBean terminateBean = new SenderBean();
-//		terminateBean.setMessageContextRefKey(key);
-//
-//		
-//		storageManager.storeMessageContext(key,terminateRMMessage.getMessageContext());
-//
-//		
-//		//Set a retransmitter lastSentTime so that terminate will be send with
-//		// some delay.
-//		//Otherwise this get send before return of the current request (ack).
-//		//TODO: refine the terminate delay.
-//		terminateBean.setTimeToSend(System.currentTimeMillis()
-//				+ Sandesha2Constants.TERMINATE_DELAY);
-//
-//		terminateBean.setMessageID(terminateRMMessage.getMessageId());
-//		
-//		//this will be set to true at the sender.
-//		terminateBean.setSend(true);
-//		
-//		terminateRMMessage.getMessageContext().setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING,
-//				Sandesha2Constants.VALUE_FALSE);
-//		
-//		terminateBean.setReSend(false);
-//
-//		SenderBeanMgr retramsmitterMgr = storageManager
-//				.getRetransmitterBeanMgr();
-//
-//		retramsmitterMgr.insert(terminateBean);
-//		
-//		SequencePropertyBean terminateAdded = new SequencePropertyBean();
-//		terminateAdded.setName(Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
-//		terminateAdded.setSequenceID(outSequenceID);
-//		terminateAdded.setValue("true");
-//
-//		seqPropMgr.insert(terminateAdded);
-//		
-//		//This should be dumped to the storage by the sender
-//		TransportOutDescription transportOut = terminateRMMessage.getMessageContext().getTransportOut();
-//		terminateRMMessage.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC,transportOut);
-//		terminateRMMessage.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY,key);
-//		terminateRMMessage.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE,Sandesha2Constants.VALUE_TRUE);
-//		terminateRMMessage.getMessageContext().setTransportOut(new Sandesha2TransportOutDesc ());
-//		addTerminateSeqTransaction.commit();
-//		
-//	    AxisEngine engine = new AxisEngine (incomingAckRMMsg.getMessageContext().getConfigurationContext());
-//	    try {
-//			engine.send(terminateRMMessage.getMessageContext());
-//		} catch (AxisFault e) {
-//			throw new SandeshaException (e.getMessage());
-//		}
-//	    
-//	}
-
-	
 	public static void addTerminateSequenceMessage(RMMsgContext referenceMessage,
 			String outSequenceId, String internalSequenceId)
 			throws SandeshaException {
@@ -484,10 +373,12 @@
 		}
 
 		terminateRMMessage.setTo(new EndpointReference(toEPR.getAddress()));
-		terminateRMMessage.setFrom(new EndpointReference(
-				Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-		terminateRMMessage.setFaultTo(new EndpointReference(
-				Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
+		
+		String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(internalSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configurationContext);
+		String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+		
+		terminateRMMessage.setFrom(new EndpointReference(anonymousURI));
+		terminateRMMessage.setFaultTo(new EndpointReference(anonymousURI));
 		
 		String rmVersion = SandeshaUtil.getRMVersion(internalSequenceId,configurationContext);
 		if (rmVersion==null)

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java Thu Mar 30 20:15:07 2006
@@ -22,14 +22,11 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
-import org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -51,6 +48,12 @@
 import org.apache.sandesha2.util.SequenceManager;
 import org.apache.sandesha2.wsrm.Identifier;
 import org.apache.sandesha2.wsrm.TerminateSequence;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory;
 
 /**
  * Contains all the Sandesha2Constants of Sandesha2.
@@ -389,7 +392,8 @@
 	    String oldSequenceKey = (String) options.getProperty(Sandesha2ClientAPI.SEQUENCE_KEY);
 	    options.setProperty(Sandesha2ClientAPI.SEQUENCE_KEY,sequenceKey);
 		try {
-			serviceClient.fireAndForget(dummyEnvelope.getBody().getFirstChildWithName(new QName (rmNamespaceValue,Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE)));
+			DummyCallback callback = new Sandesha2ClientAPI().new DummyCallback();
+			serviceClient.fireAndForget(dummyEnvelope.getBody().getFirstChildWithName(new QName (rmNamespaceValue,Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE))); 
 		} catch (AxisFault e) {
 			throw new SandeshaException ("Could not invoke the service client", e);
 		}
@@ -397,7 +401,22 @@
 		if (oldSequenceKey!=null)
 			options.setProperty(Sandesha2ClientAPI.SEQUENCE_KEY,oldSequenceKey);
 		
-		options.setAction(oldAction);
+//		options.setAction(oldAction);
+	}
+	
+	private class DummyCallback extends Callback {
+
+		public void onComplete(AsyncResult result) {
+			// TODO Auto-generated method stub
+			System.out.println("Error: dummy callback was called");
+		}
+
+		public void onError(Exception e) {
+			// TODO Auto-generated method stub
+			System.out.println("Error: dummy callback received an error");
+			
+		}
+		
 	}
 	
 }

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java Thu Mar 30 20:15:07 2006
@@ -22,7 +22,6 @@
 
 import javax.xml.namespace.QName;
 
-import org.apache.axiom.soap.SOAPBody;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.context.ConfigurationContext;
@@ -30,6 +29,7 @@
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axiom.soap.SOAPBody;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java Thu Mar 30 20:15:07 2006
@@ -20,23 +20,57 @@
 import javax.xml.namespace.QName;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.AbstractContext;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.OperationContextFactory;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.AxisOperationFactory;
 import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.transport.TransportSender;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SpecSpecificConstants;
 import org.apache.sandesha2.client.Sandesha2ClientAPI;
 import org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor;
 import org.apache.sandesha2.msgprocessors.MsgProcessor;
 import org.apache.sandesha2.msgprocessors.MsgProcessorFactory;
 import org.apache.sandesha2.storage.StorageManager;
+import org.apache.sandesha2.storage.Transaction;
+import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beans.CreateSeqBean;
+import org.apache.sandesha2.storage.beans.SenderBean;
+import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.transport.Sandesha2TransportOutDesc;
 import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.PropertyManager;
+import org.apache.sandesha2.util.RMMsgCreator;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SandeshaPropertyBean;
 import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.util.SequenceManager;
+import org.apache.sandesha2.wsrm.AckRequested;
+import org.apache.sandesha2.wsrm.CreateSequence;
+import org.apache.sandesha2.wsrm.Identifier;
+import org.apache.sandesha2.wsrm.LastMessage;
+import org.apache.sandesha2.wsrm.MessageNumber;
 import org.apache.sandesha2.wsrm.Sequence;
+import org.apache.sandesha2.wsrm.SequenceOffer;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.wsdl.WSDLConstants;
 
 /**
  * This is invoked in the outFlow of an RM endpoint

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java Thu Mar 30 20:15:07 2006
@@ -21,10 +21,9 @@
 import java.util.Collection;
 import java.util.Iterator;
 
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
@@ -38,6 +37,7 @@
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SpecSpecificConstants;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.Transaction;
 import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
@@ -52,6 +52,8 @@
 import org.apache.sandesha2.util.SandeshaPropertyBean;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.apache.sandesha2.wsrm.AckRequested;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
 
 /**
  * Responsible for processing an incoming Application message.
@@ -70,6 +72,10 @@
 			throw new SandeshaException ("Message identified as of type ackRequested does not have an AckRequeted element");
 		}
 		
+	    //settting must understand to false.
+		ackRequested.setMustUnderstand(false);
+		rmMsgCtx.addSOAPEnvelope();
+		
 		MessageContext msgContext = rmMsgCtx.getMessageContext();
 		
 		String sequenceID = ackRequested.getIdentifier().getIdentifier();
@@ -131,8 +137,16 @@
 		ackMsgCtx.setTo(acksTo);
 		ackMsgCtx.setReplyTo(msgContext.getTo());
 		RMMsgCreator.addAckMessage(ackRMMsgCtx, sequenceID);
+		ackRMMsgCtx.getMessageContext().setServerSide(true);
+		ackMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+				msgContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION));  //TODO do this in the RMMsgCreator
+		
+//		RMMsgContext ackRMMsgCtx = rmm
 
-		if (Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo.getAddress())) {
+		String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configurationContext);
+		String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+		
+		if (anonymousURI.equals(acksTo.getAddress())) {
 
 			AxisEngine engine = new AxisEngine(ackRMMsgCtx.getMessageContext()
 					.getConfigurationContext());
@@ -179,6 +193,7 @@
 			ackBean.setMessageContextRefKey(key);
 			ackBean.setMessageID(ackMsgCtx.getMessageID());
 			ackBean.setReSend(false);
+			ackBean.setSequenceID(sequenceID);
 			
 			//this will be set to true in the sender.
 			ackBean.setSend(true);

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java Thu Mar 30 20:15:07 2006
@@ -77,13 +77,6 @@
 		MessageContext msgCtx = rmMsgCtx.getMessageContext();
 		ConfigurationContext configCtx = msgCtx.getConfigurationContext();
 		
-		AbstractContext context = rmMsgCtx.getContext();
-		if (context == null) {
-			String message = "Context is null";
-			log.debug(message);
-			throw new SandeshaException(message);
-		}
-		
 		//setting mustUnderstand to false.
 		sequenceAck.setMustUnderstand(false);
 		rmMsgCtx.addSOAPEnvelope();
@@ -231,27 +224,7 @@
 		String str = ackedMessagesList.toString();
 		allCompletedMsgsBean.setValue(str);
 		
-		seqPropMgr.update(allCompletedMsgsBean);
-		
-		//If all messages up to last message have been acknowledged. Add terminate Sequence message.
-//		SequencePropertyBean lastOutMsgBean = seqPropMgr.retrieve(
-//				internalSequenceId, Sandesha2Constants.SequenceProperties.LAST_OUT_MESSAGE);
-//		if (lastOutMsgBean != null) {
-//			Long lastOutMsgNoLng = new Long (lastOutMsgBean.getValue());
-//			if (lastOutMsgNoLng == null) {
-//				String message = "Invalid object set for the Last Out Message";
-//				log.debug(message);
-//				throw new SandeshaException(message);
-//			}
-//			
-//			long lastOutMessageNo = lastOutMsgNoLng.longValue();
-//			if (lastOutMessageNo <= 0) {
-//				String message = "Invalid value set for the last out message";
-//				log.debug(message);
-//				throw new SandeshaException(message);
-//			}
-
-		
+		seqPropMgr.update(allCompletedMsgsBean);		
 		
 		//commiting transaction
 		ackTransaction.commit();

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -101,7 +101,11 @@
 		}
 		
 		//TODO process embedded ack requests
-		
+		AckRequested ackRequested = (AckRequested) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);
+		if (ackRequested!=null) {
+			ackRequested.setMustUnderstand(false);
+			rmMsgCtx.addSOAPEnvelope();
+		}
 
 		//Processing the application message.
 		MessageContext msgCtx = rmMsgCtx.getMessageContext();
@@ -147,8 +151,7 @@
 			return;
 		}
 		
-		SequencePropertyBeanMgr seqPropMgr = storageManager
-				.getSequencePropretyBeanMgr();
+		SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropretyBeanMgr();
 		
 		//setting acked msg no range
 		Sequence sequence = (Sequence) rmMsgCtx
@@ -381,8 +384,6 @@
 
 		MessageContext msgCtx = rmMsgCtx.getMessageContext();
 
-		SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil
-				.getSOAPVersion(msgCtx.getEnvelope()));
 		StorageManager storageManager = SandeshaUtil
 				.getSandeshaStorageManager(msgCtx.getConfigurationContext());
 		SequencePropertyBeanMgr seqPropMgr = storageManager
@@ -430,6 +431,7 @@
 	}
 	
 	public void processOutMessage(RMMsgContext rmMsgCtx) throws SandeshaException {
+				
 		
 		MessageContext msgContext = rmMsgCtx.getMessageContext();
 		ConfigurationContext configContext = msgContext .getConfigurationContext();
@@ -664,6 +666,9 @@
 			SequencePropertyBean responseCreateSeqAdded = seqPropMgr
 					.retrieve(internalSequenceId,Sandesha2Constants.SequenceProperties.OUT_CREATE_SEQUENCE_SENT);
 
+			String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(internalSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configContext);
+			String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+			
 			if (responseCreateSeqAdded == null) {
 				responseCreateSeqAdded = new SequencePropertyBean(
 						internalSequenceId,Sandesha2Constants.SequenceProperties.OUT_CREATE_SEQUENCE_SENT,"true");
@@ -692,10 +697,10 @@
 
 				} else {
 					if (acksTo == null)
-						acksTo = Sandesha2Constants.WSA.NS_URI_ANONYMOUS;
+						acksTo = anonymousURI;
 				}
 
-				if (!Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo) && !serverSide) {
+				if (!anonymousURI.equals(acksTo) && !serverSide) {
 					String transportIn = (String) configContext   //TODO verify
 							.getProperty(MessageContext.TRANSPORT_IN);
 					if (transportIn == null)
@@ -709,8 +714,7 @@
 						if (acksToEPR != null)
 							acksTo = (String) acksToEPR.getAddress();
 					}
-				} else if (Sandesha2Constants.WSA.NS_URI_ANONYMOUS
-						.equals(acksTo)) {
+				} else if (anonymousURI.equals(acksTo)) {
 					// set transport in.
 					Object trIn = msgContext.getProperty(MessageContext.TRANSPORT_IN);
 					if (trIn == null) {
@@ -819,8 +823,11 @@
 		CreateSeqBean createSeqBean = new CreateSeqBean(internalSequenceId,createSeqMsg.getMessageID(), null);
 		createSeqMgr.insert(createSeqBean);
 
+		String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(internalSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configCtx);
+		String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+		
 		if (createSeqMsg.getReplyTo() == null)
-			createSeqMsg.setReplyTo(new EndpointReference(Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
+			createSeqMsg.setReplyTo(new EndpointReference(anonymousURI));
 
 		String key = SandeshaUtil.getUUID();   //the key used to store the create sequence message.
 
@@ -929,7 +936,6 @@
 		String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
 		
 		Sequence sequence = new Sequence(factory,rmNamespaceValue);
-
 		MessageNumber msgNumber = new MessageNumber(factory,rmNamespaceValue);
 		msgNumber.setMessageNumber(messageNumber);
 		sequence.setMessageNumber(msgNumber);
@@ -981,13 +987,6 @@
 					String specVersion = specVersionBean.getValue();
 					if (SpecSpecificConstants.isLastMessageIndicatorRequired(specVersion))
 						sequence.setLastMessage(new LastMessage(factory,rmNamespaceValue));
-					
-//					// saving the last message no.
-//					SequencePropertyBean lastOutMsgBean = new SequencePropertyBean(
-//							internalSequenceId,
-//							Sandesha2Constants.SequenceProperties.LAST_OUT_MESSAGE,
-//							new Long(messageNumber).toString());
-//					sequencePropertyMgr.insert(lastOutMsgBean);
 				}
 			}
 		}
@@ -996,7 +995,7 @@
 
 		boolean addAckRequested = false;
 		//if (!lastMessage)
-		addAckRequested = true;   //TODO decide the policy to add the ackRequested tag
+//		addAckRequested = true;   //TODO decide the policy to add the ackRequested tag
 
 		// setting the Sequnece id.
 		// Set send = true/false depending on the availability of the out

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -17,7 +17,6 @@
 
 package org.apache.sandesha2.msgprocessors;
 
-import java.util.ArrayList;
 import java.util.Collection;
 
 import org.apache.axis2.AxisFault;
@@ -31,6 +30,7 @@
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SpecSpecificConstants;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.Transaction;
 import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
@@ -59,6 +59,7 @@
 	public void processInMessage(RMMsgContext createSeqRMMsg)
 			throws SandeshaException {
 
+		
 		MessageContext createSeqMsg = createSeqRMMsg.getMessageContext();
 		CreateSequence createSeqPart = (CreateSequence) createSeqRMMsg.getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ);
 		if (createSeqPart == null) {
@@ -116,7 +117,7 @@
 
 				String offeredSequenceID = offer.getIdentifer().getIdentifier(); //offered seq. id.
 				
-				boolean offerEcepted = offerAccepted (offeredSequenceID,context);
+				boolean offerEcepted = offerAccepted (offeredSequenceID,context,createSeqRMMsg);
 				
 				if (offerEcepted)  {
 					//Setting the CreateSequence table entry for the outgoing side.
@@ -186,8 +187,10 @@
 			
 			EndpointReference toEPR = new EndpointReference (toBean.getValue());
 			
-			if (Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(
-					toEPR.getAddress())) {
+			String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(newSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,context);
+			String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+			
+			if (anonymousURI.equals(toEPR.getAddress())) {
 				createSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "true");
 			} else {
 				createSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "false");
@@ -200,7 +203,7 @@
 		createSeqRMMsg.pause();
 	}
 	
-	private boolean offerAccepted (String sequenceID, ConfigurationContext configCtx) throws SandeshaException {
+	private boolean offerAccepted (String sequenceID, ConfigurationContext configCtx, RMMsgContext createSeqRMMsg) throws SandeshaException {
 		if ("".equals(sequenceID)) 
 			return false;
 		
@@ -216,7 +219,7 @@
 		
 		if (sequenceID.length()<=1)
 			return false;   //Single character offers are NOT accepted.
-		
+				
 		return true;
 	}
 	

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -19,12 +19,12 @@
 
 import java.util.Iterator;
 
-import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.addressing.RelatesTo;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
+import org.apache.axiom.soap.SOAPFactory;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.sandesha2.RMMsgContext;
@@ -208,6 +208,14 @@
 			msgsBean.setName(Sandesha2Constants.SequenceProperties.CLIENT_COMPLETED_MESSAGES);
 			msgsBean.setValue("");
 			sequencePropMgr.insert(msgsBean);
+			
+			
+			//setting the addressing version.
+			String addressingNamespace = createSeqResponseRMMsgCtx.getAddressingNamespaceValue();
+			SequencePropertyBean addressingVersionBean = new SequencePropertyBean (
+					offeredSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,addressingNamespace);
+			sequencePropMgr.insert(addressingVersionBean);
+			
 		}
 
 		offerProcessTransaction.commit();

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -17,6 +17,8 @@
 
 package org.apache.sandesha2.msgprocessors;
 
+import javax.xml.namespace.QName;
+
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
@@ -25,6 +27,8 @@
 import org.apache.axis2.context.MessageContextConstants;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.OperationContextFactory;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.OutInAxisOperation;
 import org.apache.axis2.description.TransportOutDescription;
 import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.util.Utils;
@@ -55,6 +59,8 @@
 import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
 import org.apache.sandesha2.wsrm.TerminateSequence;
 
+import com.sun.rsasign.ax;
+
 /**
  * Responsible for processing an incoming Terminate Sequence message.
  * 
@@ -123,7 +129,7 @@
 		
 		//add the terminate sequence response if required.
 		if (SpecSpecificConstants.isTerminateSequenceResponseRequired (terminateSeqRMMsg.getRMSpecVersion()))
-			addTerminateSequenceResponse (terminateSeqRMMsg);
+			addTerminateSequenceResponse (terminateSeqRMMsg,sequenceId);
 		
 		
 		
@@ -160,7 +166,6 @@
 		
 		terminateSeqRMMsg.pause();
 	}
-	
 
 	private void setUpHighestMsgNumbers (ConfigurationContext configCtx, StorageManager storageManager, String sequenceID, RMMsgContext terminateRMMsg) throws SandeshaException {
 		
@@ -229,9 +234,10 @@
 		
 	}
 	
-	private void addTerminateSequenceResponse (RMMsgContext terminateSeqRMMsg) throws SandeshaException {
+	private void addTerminateSequenceResponse (RMMsgContext terminateSeqRMMsg, String sequenceID) throws SandeshaException {
 		
 		MessageContext terminateSeqMsg = terminateSeqRMMsg.getMessageContext();
+		ConfigurationContext configCtx = terminateSeqMsg.getConfigurationContext();
 		
 		MessageContext outMessage = null;
 		outMessage = Utils.createOutMessageContext(terminateSeqMsg);
@@ -239,6 +245,13 @@
 		RMMsgContext terminateSeqResponseRMMsg = RMMsgCreator
 				.createTerminateSeqResponseMsg(terminateSeqRMMsg, outMessage);
 		
+	 	RMMsgContext ackRMMessage = AcknowledgementManager.generateAckMessage(terminateSeqRMMsg,sequenceID);
+	 	SequenceAcknowledgement seqAck = (SequenceAcknowledgement) ackRMMessage.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
+	 	terminateSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT,seqAck);
+	 	
+	 	terminateSeqResponseRMMsg.addSOAPEnvelope();
+	 	
+	 	
 		terminateSeqResponseRMMsg.setFlow(MessageContext.OUT_FLOW);
 		terminateSeqResponseRMMsg.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,"true");
 
@@ -246,12 +259,24 @@
 		
 		AxisEngine engine = new AxisEngine (terminateSeqMsg.getConfigurationContext());
 		
+		EndpointReference toEPR = terminateSeqMsg.getTo();
+		
 		try {
 			engine.send(outMessage);
 		} catch (AxisFault e) {
 			String message = "Could not send the terminate sequence response";
 			throw new SandeshaException (message,e);
 		}
+		
+		String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configCtx);
+		String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+		
+		if (anonymousURI.equals(
+				toEPR.getAddress())) {
+			terminateSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "true");
+		} else {
+			terminateSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "false");
+		}
 	}
 	
 	public void processOutMessage(RMMsgContext rmMsgCtx) throws SandeshaException {
@@ -276,6 +301,30 @@
 		
 		String terminated = SandeshaUtil.getSequenceProperty(outSequenceID,
 				Sandesha2Constants.SequenceProperties.TERMINATE_ADDED,configurationContext);
+		
+		
+		
+		//registring an InOutOperationContext for this.
+		//since the serviceContext.fireAndForget only sets a inOnly One
+		//this does not work when there is a terminateSequnceResponse
+		//TODO do processing of terminateMessagesCorrectly., create a new message instead of sendign the one given by the serviceClient
+		//TODO important
+		try {
+			AxisOperation oldOPeration = msgContext.getAxisOperation();
+			AxisOperation outInAxisOp = new OutInAxisOperation (new QName ("temp"));
+			//setting flows
+			outInAxisOp.setRemainingPhasesInFlow(oldOPeration.getRemainingPhasesInFlow());
+			
+			OperationContext opcontext = OperationContextFactory.createOperationContext(OperationContextFactory.MEP_CONSTANT_OUT_IN,outInAxisOp);
+		    opcontext.setParent(msgContext.getServiceContext());
+			configurationContext.registerOperationContext(rmMsgCtx.getMessageId(),opcontext);
+		} catch (AxisFault e1) {
+			throw new SandeshaException ("Could not register an outInAxisOperation");
+		}
+		
+		
+		
+		
 
 		if (terminated != null
 				&& "true".equals(terminated)) {
@@ -284,31 +333,14 @@
 			return;
 		}
 
-//		RMMsgContext terminateRMMessage = RMMsgCreator
-//				.createTerminateSequenceMessage(incomingAckRMMsg, outSequenceId,internalSequenceId);
-		
 		TerminateSequence terminateSequencePart = (TerminateSequence) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
 		terminateSequencePart.getIdentifier().setIndentifer(outSequenceID);
 		
 		rmMsgCtx.setFlow(MessageContext.OUT_FLOW);
 		msgContext.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,"true");
 		
-//		String toAddress =  SandeshaUtil.getSequenceProperty(internalSeqenceID,Sandesha2Constants.SequenceProperties.TO_EPR,configurationContext);
-
-//		EndpointReference toEPR = new EndpointReference ( toBean.getValue());
-//		if (toEPR == null) {
-//			String message = "To EPR has an invalid value";
-//			throw new SandeshaException(message);
-//		}
-
 		rmMsgCtx.setTo(new EndpointReference(toAddress));
 		
-		
-//		terminateRMMessage.setFrom(new EndpointReference(
-//				Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-//		terminateRMMessage.setFaultTo(new EndpointReference(
-//				Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-		
 		String rmVersion = SandeshaUtil.getRMVersion(internalSeqenceID,configurationContext);
 		if (rmVersion==null)
 			throw new SandeshaException ("Cant find the rmVersion of the given message");
@@ -316,7 +348,6 @@
 		rmMsgCtx.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(rmVersion));
 		rmMsgCtx.setSOAPAction(SpecSpecificConstants.getTerminateSequenceSOAPAction(rmVersion));
 
-		//SequencePropertyBean transportToBean = seqPropMgr.retrieve(internalSequenceId,Sandesha2Constants.SequenceProperties.TRANSPORT_TO);
 		String transportTo = SandeshaUtil.getSequenceProperty(internalSeqenceID,Sandesha2Constants.SequenceProperties.TRANSPORT_TO,configurationContext);
 		if (transportTo!=null) {
 			rmMsgCtx.setProperty(MessageContextConstants.TRANSPORT_URL,transportTo);

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -31,11 +31,14 @@
 
 	private Log log = LogFactory.getLog(getClass());
 	
-	public void processInMessage(RMMsgContext createSeqRMMsg)
+	public void processInMessage(RMMsgContext terminateResRMMsg)
 			throws SandeshaException { 
 		
 		
 		//TODO add processing logic
+		System.out.println("");
+		
+		terminateResRMMsg.pause();
 	}
 	
 	public void processOutMessage(RMMsgContext rmMsgCtx) throws SandeshaException {

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java Thu Mar 30 20:15:07 2006
@@ -69,9 +69,4 @@
 	public abstract void updateMessageContext (String storageKey,MessageContext msgContext) throws SandeshaStorageException;
 
 	public abstract MessageContext retrieveMessageContext (String storageKey, ConfigurationContext configContext) throws SandeshaStorageException;
-	
-//	public abstract void storeSOAPEnvelope (SOAPEnvelope envelope,String key) throws SandeshaStorageException;
-//	
-//	public abstract SOAPEnvelope retrieveSOAPEnvelope (String key) throws SandeshaStorageException;
-
 }

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java Thu Mar 30 20:15:07 2006
@@ -46,7 +46,7 @@
 	
 	public SenderBean findUnique (SenderBean bean) throws SandeshaException;
 	
-	public Collection findMsgsToSend() throws SandeshaStorageException;
+	public SenderBean getNextMsgToSend() throws SandeshaStorageException;
 
 	public boolean update(SenderBean bean) throws SandeshaStorageException;
 

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java Thu Mar 30 20:15:07 2006
@@ -83,6 +83,13 @@
 	 */
 	private int messageType =0;
 	
+	/**
+	 * The sequenceID of the sequence this message belong to.
+	 * this may be null for some messages (e.g. create sequence);
+	 */
+	//TODO fill this property correctly
+	private String sequenceID;
+	
 	public SenderBean() {
 
 	}
@@ -169,5 +176,13 @@
 	
 	public void setMessageType(int messagetype) {
 		this.messageType = messagetype;
+	}
+
+	public String getSequenceID() {
+		return sequenceID;
+	}
+
+	public void setSequenceID(String sequenceID) {
+		this.sequenceID = sequenceID;
 	}
 }

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java Thu Mar 30 20:15:07 2006
@@ -130,29 +130,87 @@
 		return beans;
 	}
 
-	public synchronized Collection findMsgsToSend() {
-		ArrayList beans = new ArrayList();
+	public synchronized SenderBean getNextMsgToSend() {
+//		ArrayList beans = new ArrayList();
 		Iterator iterator = table.keySet().iterator();
 
-		SenderBean temp;
-
+//		long lowestAppMsgNo = 0;
+//		while (iterator.hasNext()) {
+//			Object key = iterator.next();
+//			temp = (SenderBean) table.get(key);
+//
+//			if (temp.isSend()) {
+//				long timeToSend = temp.getTimeToSend();
+//				long timeNow = System.currentTimeMillis();
+//				if ((timeNow >= timeToSend)) {
+//					if (temp.getMessageType()==Sandesha2Constants.MessageTypes.APPLICATION) {
+//						long msgNo = temp.getMessageNumber();
+//						if (lowestAppMsgNo==0) {
+//							lowestAppMsgNo=msgNo;
+//						}else {
+//							if (msgNo<lowestAppMsgNo)
+//								lowestAppMsgNo = msgNo;
+//						}
+//					}
+//				}
+//			}
+//		}
+		
+		iterator = table.keySet().iterator();	
 		while (iterator.hasNext()) {
 			Object key = iterator.next();
-			temp = (SenderBean) table.get(key);
+			SenderBean temp = (SenderBean) table.get(key);
 
 			if (temp.isSend()) {
 
 				long timeToSend = temp.getTimeToSend();
 				long timeNow = System.currentTimeMillis();
 				if ((timeNow >= timeToSend)) {
-					beans.add(temp);
+//					if (temp.getMessageType()==Sandesha2Constants.MessageTypes.APPLICATION) {
+//						if (temp.getMessageNumber()==lowestAppMsgNo)
+//							beans.add(temp);
+//					}else {
+//						beans.add(temp);
+//					}
+					updateNextSendingTime (temp);
+					return temp;
 				}
 			}
 		}
-
-		return beans;
+		
+		return null;
+		
+//
+//		return beans;
 	}
 
+	private void updateNextSendingTime (SenderBean bean) {
+		
+	}
+	
+//	public synchronized Collection findMsgsToSend() {
+//		ArrayList beans = new ArrayList();
+//		Iterator iterator = table.keySet().iterator();
+//
+//		SenderBean temp;
+//
+//		while (iterator.hasNext()) {
+//			Object key = iterator.next();
+//			temp = (SenderBean) table.get(key);
+//
+//			if (temp.isSend()) {
+//
+//				long timeToSend = temp.getTimeToSend();
+//				long timeNow = System.currentTimeMillis();
+//				if ((timeNow >= timeToSend)) {
+//					beans.add(temp);
+//				}
+//			}
+//		}
+//
+//		return beans;
+//	}
+	
 	private synchronized ArrayList findBeansWithMsgNo(ArrayList list, long msgNo) {
 		ArrayList beans = new ArrayList();
 

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java Thu Mar 30 20:15:07 2006
@@ -19,10 +19,10 @@
 
 import java.util.HashMap;
 
-import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.description.AxisModule;
+import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.sandesha2.storage.SandeshaStorageException;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.Transaction;

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java Thu Mar 30 20:15:07 2006
@@ -21,12 +21,6 @@
 import java.util.Iterator;
 import java.util.List;
 import javax.xml.namespace.QName;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
@@ -36,12 +30,19 @@
 import org.apache.axis2.context.ServiceGroupContext;
 import org.apache.axis2.description.AxisOperation;
 import org.apache.axis2.description.AxisOperationFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axis2.util.Utils;
 import org.apache.sandesha2.Sandesha2Constants;
 import org.apache.sandesha2.FaultData;
 import org.apache.sandesha2.RMMsgContext;
 import org.apache.sandesha2.SOAPFaultEnvelopeCreator;
 import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SpecSpecificConstants;
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
@@ -147,7 +148,7 @@
 
 			data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.CREATE_SEQUENCE_REFUSED);
 			data.setReason(reason);
-			return getFault(createSequenceRMMsg, data);
+			return getFault(createSequenceRMMsg, data,createSequenceRMMsg.getAddressingNamespaceValue());
 		}
 
 		return null;
@@ -192,7 +193,7 @@
 
 			faultData.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.LAST_MESSAGE_NO_EXCEEDED);
 			faultData.setReason(reason);
-			return getFault(applicationRMMessage, faultData);
+			return getFault(applicationRMMessage, faultData, applicationRMMessage.getAddressingNamespaceValue());
 		} else
 			return null;
 	}
@@ -280,7 +281,7 @@
 			data.setDetail(identifierOMElem);
 			data.setReason("A sequence with the given sequenceID has NOT been established");
 
-			return getFault(rmMessageContext, data);
+			return getFault(rmMessageContext, data,rmMessageContext.getAddressingNamespaceValue());
 		}
 
 		return null;
@@ -336,7 +337,7 @@
 			data.setReason(reason);
 			data.setDetail(sequenceAcknowledgement.getOMElement());
 
-			return getFault(ackRMMessageContext, data);
+			return getFault(ackRMMessageContext, data,ackRMMessageContext.getAddressingNamespaceValue());
 		}
 
 		return null;
@@ -368,7 +369,7 @@
 			data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.SEQUENCE_CLOSED);
 			data.setReason(reason);
 
-			return getFault(referenceRMMessage, data);
+			return getFault(referenceRMMessage, data, referenceRMMessage.getAddressingNamespaceValue());
 		}
 		return null;
 		
@@ -383,12 +384,11 @@
 	 * @throws SandeshaException
 	 */
 	public RMMsgContext getFault(RMMsgContext referenceRMMsgContext,
-			FaultData data) throws SandeshaException {
+			FaultData data, String addressingNamespaceURI) throws SandeshaException {
 
 		try {
-
-			MessageContext referenceMessage = referenceRMMsgContext
-					.getMessageContext();
+			MessageContext referenceMessage = referenceRMMsgContext.getMessageContext();
+			ConfigurationContext configCtx = referenceRMMsgContext.getConfigurationContext();
 			
 			//This is to hack to remove NPE. TODO remove this.
 			if (referenceMessage.getServiceGroupContext()==null) {
@@ -455,16 +455,15 @@
 				}
 			}
 
+			String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
 			if (acksToStr != null
-					&& !acksToStr.equals(Sandesha2Constants.WSA.NS_URI_ANONYMOUS)) {
+					&& !acksToStr.equals(anonymousURI)) {
 				faultMsgContext.setTo(new EndpointReference(acksToStr));
 			}
 
-			int SOAPVersion = SandeshaUtil.getSOAPVersion(referenceMessage
-					.getEnvelope());
-
-			SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMsgContext,
-					SOAPVersion, data,referenceRMMsgContext.getRMNamespaceValue());
+			int SOAPVersion = SandeshaUtil.getSOAPVersion(referenceMessage.getEnvelope());
+			SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMsgContext,SOAPVersion, data,referenceRMMsgContext.getRMNamespaceValue());
 
 			RMMsgContext faultRMMsgCtx = MsgInitializer.initializeMessage(faultMsgContext);
 

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java Thu Mar 30 20:15:07 2006
@@ -17,6 +17,7 @@
 
 package org.apache.sandesha2.util;
 
+import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
 import org.apache.sandesha2.Sandesha2Constants;
@@ -138,7 +139,10 @@
 		}
 		
 		rmMsgContext.setRMNamespaceValue(rmNamespace);
-
+		
+		String addressingNamespaceValue = elements.getAddressingNamespaceValue();
+		if (addressingNamespaceValue!=null)
+			rmMsgContext.setAddressingNamespaceValue(addressingNamespaceValue);
 	}
 
 	/**

Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java Thu Mar 30 20:15:07 2006
@@ -24,6 +24,7 @@
 import javax.xml.namespace.QName;
 
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.ConfigurationContext;
@@ -122,11 +123,10 @@
 			}
 
 		} catch (AxisFault e) {
-			log
-					.error("Could not copy parameters when creating the new RM Message");
+			log.error("Could not copy parameters when creating the new RM Message");
 			throw new SandeshaException(e.getMessage());
-		}
-
+		}		
+		
 		// TODO optimize by cloning the Map rather than copying one by one.
 
 		// operationContext properties
@@ -157,7 +157,7 @@
 				}
 			}
 		}
-
+		
 		// setting an options with properties copied from the old one.
 		Options relatesMessageOptions = relatedMessage.getOptions();
 		if (relatesMessageOptions != null) {
@@ -273,7 +273,9 @@
 		
 		String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
 		
-		CreateSequence createSequencePart = new CreateSequence(factory,rmNamespaceValue);
+		String addressingNamespaceValue = SandeshaUtil.getSequenceProperty(internalSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,context);
+		
+		CreateSequence createSequencePart = new CreateSequence(factory,rmNamespaceValue,addressingNamespaceValue);
 
 		// Adding sequence offer - if present
 		OperationContext operationcontext = applicationMsgContext
@@ -303,22 +305,25 @@
 		EndpointReference replyToEPR = null;
 		EndpointReference acksToEPR = null;
 
+		String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceValue);
+		
 		if (acksTo == null || "".equals(acksTo))
-			acksTo = Sandesha2Constants.WSA.NS_URI_ANONYMOUS;
+			acksTo = anonymousURI;
 
 		acksToEPR = new EndpointReference(acksTo);
 
 		if (replyToBean != null && replyToBean.getValue() != null)
 			replyToEPR = new EndpointReference(replyToBean.getValue());
 
-		createSeqRMMsg.setTo(toEPR);
+		if(createSeqRMMsg.getTo()==null)
+			createSeqRMMsg.setTo(toEPR);
 
 		// ReplyTo will be set only if not null.
 		if (replyToEPR != null)
 			createSeqRMMsg.setReplyTo(replyToEPR);
 
 		createSequencePart.setAcksTo(new AcksTo(
-				new Address(acksToEPR, factory), factory,rmNamespaceValue));
+				new Address(acksToEPR, factory, addressingNamespaceValue), factory,rmNamespaceValue,addressingNamespaceValue));
 
 		createSeqRMMsg.setMessagePart(
 				Sandesha2Constants.MessageParts.CREATE_SEQ, createSequencePart);
@@ -328,12 +333,13 @@
 		} catch (AxisFault e1) {
 			throw new SandeshaException(e1.getMessage());
 		}
+		
 
 		createSeqRMMsg.setAction(SpecSpecificConstants.getCreateSequenceAction(SandeshaUtil.getRMVersion(internalSequenceId,context)));
 		createSeqRMMsg.setSOAPAction(SpecSpecificConstants.getCreateSequenceSOAPAction(SandeshaUtil.getRMVersion(internalSequenceId,context)));
 
 		finalizeCreation(applicationMsgContext, createSeqmsgContext);
-
+		
 		return createSeqRMMsg;
 	}
 
@@ -398,6 +404,10 @@
 		
 		initializeCreation(referenceMessage, terminateMessage);
 
+		if (!SpecSpecificConstants.isTerminateSequenceResponseRequired(rmVersion)) {
+			terminateMessage.setProperty(MessageContext.TRANSPORT_IN,null);
+		}
+		
 		RMMsgContext terminateRMMessage = MsgInitializer
 				.initializeMessage(terminateMessage);
 
@@ -405,7 +415,7 @@
 			throw new SandeshaException("MessageContext is null");
 
 		// setUpMessage(referenceMessage, terminateMessage);
-
+		
 		SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil
 				.getSOAPVersion(referenceMessage.getEnvelope()));
 
@@ -466,9 +476,10 @@
 		if (rmVersion==null)
 			throw new SandeshaException ("Cant find the rmVersion of the given message");
 		
-		String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
+		String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);		
+		String addressingNamespaceValue = SandeshaUtil.getSequenceProperty(newSequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configurationContext);
 		
-		CreateSequenceResponse response = new CreateSequenceResponse(factory,rmNamespaceValue);
+		CreateSequenceResponse response = new CreateSequenceResponse(factory,rmNamespaceValue,addressingNamespaceValue);
 
 		Identifier identifier = new Identifier(factory,rmNamespaceValue);
 		identifier.setIndentifer(newSequenceID);
@@ -481,10 +492,10 @@
 
 			if (outSequenceId != null && !"".equals(outSequenceId)) {
 
-				Accept accept = new Accept(factory,rmNamespaceValue);
+				Accept accept = new Accept(factory,rmNamespaceValue,addressingNamespaceValue);
 				EndpointReference acksToEPR = createSeqMessage.getTo();
-				AcksTo acksTo = new AcksTo(factory,rmNamespaceValue);
-				Address address = new Address(factory);
+				AcksTo acksTo = new AcksTo(factory,rmNamespaceValue,addressingNamespaceValue);
+				Address address = new Address(factory,addressingNamespaceValue);
 				address.setEpr(acksToEPR);
 				acksTo.setAddress(address);
 				accept.setAcksTo(acksTo);
@@ -511,9 +522,12 @@
 		} catch (SandeshaException ex) {
 			throw new AxisFault("Cant initialize the message");
 		}
+		
+		createSeqResponse.setMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE,response);
 
 		finalizeCreation(createSeqMessage.getMessageContext(), outMessage);
 
+		createSeqMessage.getMessageContext().setServerSide(true);
 		return createSeqResponse;
 	}
 	
@@ -541,8 +555,8 @@
 		terminateSeqResponseRMMsg.setSOAPEnvelop(envelope);
 		terminateSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE,terminateSequenceResponse);
 		
-		outMessage.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
-		outMessage.setSoapAction(SpecSpecificConstants.getTerminateSequenceAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
+		outMessage.setWSAAction(SpecSpecificConstants.getTerminateSequenceResponseAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
+		outMessage.setSoapAction(SpecSpecificConstants.getTerminateSequenceResponseAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
 
 		initializeCreation(terminateSeqRMMsg.getMessageContext(),outMessage);
 		
@@ -551,6 +565,7 @@
 		
 		finalizeCreation(terminateSeqRMMsg.getMessageContext(), outMessage);
 		
+		terminateSeqResponseRMMsg.getMessageContext().setServerSide(true);
 		return terminateSeqResponseRMMsg;
 	}
 	
@@ -578,8 +593,8 @@
 		closeSeqResponseRMMsg.setSOAPEnvelop(envelope);
 		closeSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE_RESPONSE,closeSequenceResponse);
 		
-		outMessage.setWSAAction(SpecSpecificConstants.getCloseSequenceAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
-		outMessage.setSoapAction(SpecSpecificConstants.getCloseSequenceAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
+		outMessage.setWSAAction(SpecSpecificConstants.getCloseSequenceResponseAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
+		outMessage.setSoapAction(SpecSpecificConstants.getCloseSequenceResponseAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
 
 		initializeCreation(closeSeqRMMsg.getMessageContext(),outMessage);
 		
@@ -587,7 +602,7 @@
 		
 		
 		finalizeCreation(closeSeqRMMsg.getMessageContext(), outMessage);
-		
+		closeSeqResponseRMMsg.getMessageContext().setServerSide(true);
 		return closeSeqResponseRMMsg;
 	}
 	
@@ -674,36 +689,32 @@
 	 * @return
 	 * @throws SandeshaException
 	 */
-	public static RMMsgContext createAckMessage(RMMsgContext applicationRMMsgCtx, String rmNamespaceValue)
+	public static RMMsgContext createAckMessage(RMMsgContext relatedRMMessage, String sequenceID, String rmNamespaceValue)
 			throws SandeshaException {
 		
 		try {
-			MessageContext applicationMsgCtx = applicationRMMsgCtx
+			MessageContext applicationMsgCtx = relatedRMMessage
 					.getMessageContext();
 
 			AxisOperation ackOperation = AxisOperationFactory
 					.getAxisOperation(AxisOperationFactory.MEP_CONSTANT_OUT_ONLY);
 			
 			MessageContext ackMsgCtx = SandeshaUtil
-					.createNewRelatedMessageContext(applicationRMMsgCtx,
+					.createNewRelatedMessageContext(relatedRMMessage,
 							ackOperation);
+			
 			RMMsgContext ackRMMsgCtx = MsgInitializer
 					.initializeMessage(ackMsgCtx);
 
 			initializeCreation(applicationMsgCtx, ackMsgCtx);
 
-			Sequence reqSequence = (Sequence) applicationRMMsgCtx
-					.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
-			if (reqSequence == null)
-				throw new SandeshaException(
-						"Sequence part of application message is null");
-
-			String sequenceId = reqSequence.getIdentifier().getIdentifier();
-
-			addAckMessage(ackRMMsgCtx, sequenceId);
+			addAckMessage(ackRMMsgCtx, sequenceID);
 
+			ackMsgCtx.setProperty(MessageContext.TRANSPORT_IN,null);
+			
 			finalizeCreation(applicationMsgCtx, ackMsgCtx);
 
+			ackRMMsgCtx.getMessageContext().setServerSide(true);
 			return ackRMMsgCtx;
 		} catch (AxisFault e) {
 			throw new SandeshaException(e.getMessage());



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