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