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 ga...@apache.org on 2007/03/29 15:30:27 UTC

svn commit: r523699 - in /webservices/sandesha/trunk/java/src/org/apache/sandesha2: client/SandeshaClient.java msgprocessors/CreateSeqMsgProcessor.java storage/beans/RMSBean.java util/SequenceManager.java

Author: gatfora
Date: Thu Mar 29 06:30:26 2007
New Revision: 523699

URL: http://svn.apache.org/viewvc?view=rev&rev=523699
Log:
SandeshaClient close/terminate/ack request may be sent using a different soap version to the rest of the sequence messages if the Options instance doesn't contain a soap version uri.

Modified:
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/RMSBean.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java?view=diff&rev=523699&r1=523698&r2=523699
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java Thu Mar 29 06:30:26 2007
@@ -47,7 +47,6 @@
 import org.apache.sandesha2.SandeshaException;
 import org.apache.sandesha2.i18n.SandeshaMessageHelper;
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
-import org.apache.sandesha2.msgprocessors.SequenceProcessor;
 import org.apache.sandesha2.policy.SandeshaPolicyBean;
 import org.apache.sandesha2.storage.SandeshaStorageException;
 import org.apache.sandesha2.storage.StorageManager;
@@ -55,7 +54,6 @@
 import org.apache.sandesha2.storage.beanmanagers.RMSBeanMgr;
 import org.apache.sandesha2.storage.beans.RMSBean;
 import org.apache.sandesha2.storage.beans.RMDBean;
-import org.apache.sandesha2.storage.beans.RMSequenceBean;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.apache.sandesha2.util.SpecSpecificConstants;
 import org.apache.sandesha2.workers.Invoker;
@@ -752,6 +750,9 @@
 		options.setAction(SpecSpecificConstants.getAckRequestAction(rmSpecVersion));
 		
 		String soapNamespaceURI = options.getSoapVersionURI();
+		if (soapNamespaceURI == null) 
+			soapNamespaceURI = getSOAPNamespaceURI(storageManager, internalSequenceID);
+		
 		SOAPFactory factory = null;
 		SOAPEnvelope dummyEnvelope = null;
 		if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNamespaceURI)) {
@@ -931,6 +932,9 @@
 		SOAPEnvelope dummyEnvelope = null;
 		SOAPFactory factory = null;
 		String soapNamespaceURI = options.getSoapVersionURI();
+		if (soapNamespaceURI == null) 
+			soapNamespaceURI = getSOAPNamespaceURI(storageManager, internalSequenceID);
+
 		if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNamespaceURI)) {
 			factory = new SOAP12Factory();
 			dummyEnvelope = factory.getDefaultEnvelope();
@@ -1071,6 +1075,8 @@
 		SOAPEnvelope dummyEnvelope = null;
 		SOAPFactory factory = null;
 		String soapNamespaceURI = options.getSoapVersionURI();
+		if (soapNamespaceURI == null) 
+			soapNamespaceURI = getSOAPNamespaceURI(storageManager, internalSequenceID);
 		if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNamespaceURI)) {
 			factory = new SOAP12Factory();
 			dummyEnvelope = factory.getDefaultEnvelope();
@@ -1341,7 +1347,23 @@
 
 		return internalSequenceID;
 	}
-	
+
+	private static final String getSOAPNamespaceURI(StorageManager storageManager, String internalSequenceID) throws SandeshaException {
+		String soapNamespaceURI = null;
+		
+		// Get the RMSBean for this sequence.
+		Transaction transaction = storageManager.getTransaction();
+		
+		try {				
+			RMSBean rmsBean = SandeshaUtil.getRMSBeanFromInternalSequenceId(storageManager, internalSequenceID);
+			if (rmsBean.getSoapVersion() == Sandesha2Constants.SOAPVersion.v1_2)
+				soapNamespaceURI = SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI;
+		} finally {
+			transaction.commit();
+		}
+		
+		return soapNamespaceURI;
+	}
 	
 	public static void setPolicyBean (ServiceClient serviceClient, SandeshaPolicyBean policyBean) throws SandeshaException {
 		try {

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java?view=diff&rev=523699&r1=523698&r2=523699
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java Thu Mar 29 06:30:26 2007
@@ -40,7 +40,6 @@
 import org.apache.sandesha2.security.SecurityManager;
 import org.apache.sandesha2.security.SecurityToken;
 import org.apache.sandesha2.storage.StorageManager;
-import org.apache.sandesha2.storage.beanmanagers.RMSBeanMgr;
 import org.apache.sandesha2.storage.beans.RMDBean;
 import org.apache.sandesha2.storage.beans.RMSBean;
 import org.apache.sandesha2.util.FaultManager;
@@ -201,7 +200,6 @@
 						rMSBean.setOfferedEndPoint(endpoint.getEPR().getAddress());
 					}
 		
-					RMSBeanMgr rmsBeanMgr = storageManager.getRMSBeanMgr();
 	
 					// Store the inbound token (if any) with the new sequence
 					rMSBean.setSecurityTokenData(rmdBean.getSecurityTokenData());
@@ -215,8 +213,11 @@
 						Sandesha2Constants.SPEC_VERSIONS.v1_1.equals(createSeqRMMsg.getRMSpecVersion())) {
 						rMSBean.setPollingMode(true);
 					}
+					
+					// Set the SOAP Version for this sequence.
+					rMSBean.setSoapVersion(SandeshaUtil.getSOAPVersion(createSeqRMMsg.getSOAPEnvelope()));
 
-					rmsBeanMgr.insert(rMSBean);
+					storageManager.getRMSBeanMgr().insert(rMSBean);
 					
 					SandeshaUtil.startWorkersForSequence(context, rMSBean);
 					
@@ -314,11 +315,9 @@
 			return false;
 		}
 
-		RMSBeanMgr createSeqMgr = storageManager.getRMSBeanMgr();
-
 		RMSBean createSeqFindBean = new RMSBean();
 		createSeqFindBean.setSequenceID(sequenceId);
-		Collection arr = createSeqMgr.find(createSeqFindBean);
+		Collection arr = storageManager.getRMSBeanMgr().find(createSeqFindBean);
 
 		if (arr.size() > 0) {
 			if (log.isDebugEnabled())

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/RMSBean.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/RMSBean.java?view=diff&rev=523699&r1=523698&r2=523699
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/RMSBean.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/storage/beans/RMSBean.java Thu Mar 29 06:30:26 2007
@@ -129,6 +129,13 @@
 	private long expectedReplies = 0;
 	
 	/**
+	 * When sending a RM Protocol message from SandeshaClient if there isn't
+	 * a SOAP version specified in the Options, this version will be used.
+	 * .NET interop requires all messages to be sent with the same SOAP version.
+	 */
+	private int soapVersion;
+	
+	/**
 	 * Flags that are used to check if the primitive types on this bean
 	 * have been set. If a primitive type has not been set then it will
 	 * be ignored within the match method.
@@ -144,6 +151,7 @@
 	private static final int ACKED_MESSAGES_FLAG       = 0x10000000;
 	private static final int TERM_PAUSER_FOR_CS        = 0x00000002;
 	private static final int EXPECTED_REPLIES          = 0x00000020;
+	private static final int SOAP_VERSION_FLAG         = 0x00000200;
 
   /**
    * In WSRM Anon URI scenario, we may not want to terminate a perticular sequence until the CreateSequence has been received
@@ -348,7 +356,15 @@
 	public void setAvoidAutoTermination(boolean avoidAutoTermination) {
 		this.avoidAutoTermination = avoidAutoTermination;
 	}
-	
+
+	public int getSoapVersion() {
+		return soapVersion;
+	}
+
+	public void setSoapVersion(int soapVersion) {
+		this.soapVersion = soapVersion;
+	}
+
 	public String toString() {
 		StringBuffer result = new StringBuffer();
 		result.append(this.getClass().getName());
@@ -376,6 +392,7 @@
 		}
 		result.append("\nClientCompletedMsgs: "); result.append(clientCompletedMessages);
 		result.append("\nAnonymous UUID     : "); result.append(anonymousUUID);
+		result.append("\nSOAPVersion  : "); result.append(soapVersion);
 		return result.toString();
 	}
 	
@@ -435,7 +452,10 @@
 		
 		else if((bean.rmsFlags & TERMINATE_ADDED_FLAG) != 0 && bean.isTerminateAdded() != this.isTerminateAdded())
 			match = false;
-		
+
+		else if ((bean.rmsFlags & SOAP_VERSION_FLAG) != 0 && bean.getSoapVersion() != this.getSoapVersion())
+			match = false;
+	
 		else if((bean.rmsFlags & TIMED_OUT_FLAG) != 0 && bean.isTimedOut() != this.isTimedOut())
 			match = false;
 		

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java?view=diff&rev=523699&r1=523698&r2=523699
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java Thu Mar 29 06:30:26 2007
@@ -278,6 +278,9 @@
 			rmsBean.setTransportTo(transportTo);
 		}
 
+		// Set the soap version use by this client
+		rmsBean.setSoapVersion(SandeshaUtil.getSOAPVersion(firstAplicationMsgCtx.getEnvelope()));
+
 		//setting the autoTermination property for the client side.
 		if (!firstAplicationMsgCtx.isServerSide()) {
 			Object avoidAutoTermination = firstAplicationMsgCtx.getProperty(SandeshaClientConstants.AVOID_AUTO_TERMINATION);



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