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

Reply via email to