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 ga...@apache.org on 2006/12/20 07:35:11 UTC
svn commit: r488931 [1/2] - in /webservices/sandesha/trunk/java:
src/org/apache/sandesha2/ src/org/apache/sandesha2/handlers/
src/org/apache/sandesha2/msgprocessors/
src/org/apache/sandesha2/msgreceivers/ src/org/apache/sandesha2/util/
src/org/apache/s...
Author: gatfora
Date: Tue Dec 19 22:35:09 2006
New Revision: 488931
URL: http://svn.apache.org/viewvc?view=rev&rev=488931
Log:
Enable RM to work when no addressing headers are present
Modified:
webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Accept.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AcksTo.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Address.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequence.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Endpoint.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceOffer.java
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/versions/AddressingVersionTest.java
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/CreateSequenceResponseTest.java
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/CreateSequenceTest.java
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/MakeConnectionTest.java
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/MessageValidator.java Tue Dec 19 22:35:09 2006
@@ -39,25 +39,15 @@
if (sequenceID != null) {
String rmVersionOfSequence = SandeshaUtil.getSequenceProperty(sequenceID,
Sandesha2Constants.SequenceProperties.RM_SPEC_VERSION, storageManager);
- String addressingNamespaceOfSequence = SandeshaUtil.getSequenceProperty(sequenceID,
- Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, storageManager);
String rmNamespaceOfMsg = rmMsg.getRMNamespaceValue();
String rmNamespaceOfSequence = null;
if (rmVersionOfSequence != null)
rmNamespaceOfSequence = SpecSpecificConstants.getRMNamespaceValue(rmVersionOfSequence);
- String addressingNamespaceOfMsg = rmMsg.getAddressingNamespaceValue();
if (rmNamespaceOfSequence != null && !rmNamespaceOfSequence.equals(rmNamespaceOfMsg)) {
String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.rmNamespaceNotMatchSequence,
rmNamespaceOfMsg, rmNamespaceOfSequence, sequenceID);
- throw new SandeshaException(message);
- }
-
- if (addressingNamespaceOfSequence != null
- && !addressingNamespaceOfSequence.equals(addressingNamespaceOfMsg)) {
- String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.wsaNamespaceNotMatchSequence,
- addressingNamespaceOfMsg, addressingNamespaceOfSequence, sequenceID);
throw new SandeshaException(message);
}
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java Tue Dec 19 22:35:09 2006
@@ -23,13 +23,10 @@
import org.apache.axiom.soap.SOAPEnvelope;
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.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
-import org.apache.sandesha2.i18n.SandeshaMessageHelper;
-import org.apache.sandesha2.i18n.SandeshaMessageKeys;
import org.apache.sandesha2.util.SOAPAbstractFactory;
import org.apache.sandesha2.wsrm.IOMRMPart;
@@ -48,8 +45,6 @@
private String rmNamespaceValue = null;
- private String addressingNamespaceValue = null;
-
private String rmSpecVersion = null;
public RMMsgContext() {
@@ -318,19 +313,6 @@
return msgContext.getFLOW();
}
- public String getAddressingNamespaceValue() {
- return addressingNamespaceValue;
- }
-
- public void setAddressingNamespaceValue(String addressingNamespaceValue) throws SandeshaException {
- if (!AddressingConstants.Submission.WSA_NAMESPACE.equals(addressingNamespaceValue) &&
- !AddressingConstants.Final.WSA_NAMESPACE.equals(addressingNamespaceValue))
- throw new SandeshaException (SandeshaMessageHelper.getMessage(
- SandeshaMessageKeys.unknownWSAVersion, addressingNamespaceValue));
-
- this.addressingNamespaceValue = addressingNamespaceValue;
- }
-
/**
* This will return the sequenceId if it could be derived from the SOAP envelope, in the
* message initiation.
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java Tue Dec 19 22:35:09 2006
@@ -19,6 +19,8 @@
import javax.xml.namespace.QName;
+import org.apache.axis2.addressing.AddressingConstants;
+
/**
* Contains all the Sandesha2Constants of Sandesha2.
* Please see sub-interfaces to see grouped data.
@@ -38,6 +40,8 @@
String SEC_NS_URI = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
+ String ADDRESSING_NS_URI = AddressingConstants.Submission.WSA_NAMESPACE;
+
public interface Actions {
String ACTION_CREATE_SEQUENCE = "http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence";
@@ -63,6 +67,7 @@
String NS_URI = "http://docs.oasis-open.org/ws-rx/wsrm/200608";
String ANONYMOUS_URI_PREFIX = "http://docs.oasis-open.org/ws-rx/wsrm/200608/anonymous?id=";
String SEC_NS_URI = "http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd";
+ String ADDRESSING_NS_URI = AddressingConstants.Final.WSA_NAMESPACE;
public interface Actions {
@@ -249,9 +254,6 @@
// 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)
//For out going sequences this gives the messages that were sent and that were successfully
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/SandeshaModule.java Tue Dec 19 22:35:09 2006
@@ -128,23 +128,6 @@
}
}
- private void continueUncompletedSequences(StorageManager storageManager,
- ConfigurationContext configCtx) {
- // server side continues
- // SandeshaUtil.startInvokerIfStopped(configCtx);
-
- // server side re-injections
-
- // reinject everything that has been acked within the in-handler but
- // have not been invoked.
-
- // client side continues
- // SandeshaUtil.startSenderIfStopped(configCtx);
-
- // client side re-injections
-
- }
-
public PolicyExtension getPolicyExtension() {
return new RMPolicyExtension();
}
@@ -153,26 +136,6 @@
//removing the threads started by Sandesha2.
SandeshaUtil.stopSender (configurationContext);
SandeshaUtil.stopInvoker(configurationContext);
- }
-
- // Removing data of uncontinuuable sequences so that the sandesha2 system
- // will not be confused
- private void cleanStorage(StorageManager storageManager) throws AxisFault {
-
-
-
- // server side cleaning
-
- // cleaning NextMsgData
- // Cleaning InvokerData
-
- // client side cleaning
-
- // cleaning RetransmitterData
- // cleaning CreateSequenceData
-
- // cleaning sequence properties
-
}
public void applyPolicy(Policy policy, AxisDescription axisDescription) throws AxisFault {
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java Tue Dec 19 22:35:09 2006
@@ -27,7 +27,6 @@
import org.apache.sandesha2.MessageValidator;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.Sandesha2Constants;
-import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.i18n.SandeshaMessageHelper;
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
import org.apache.sandesha2.msgprocessors.AckRequestedProcessor;
@@ -101,14 +100,7 @@
//This is responsible for Sandesha2 specific
FaultManager.processMessagesForFaults(msgCtx);
- RMMsgContext rmMsgCtx = null;
- try {
- rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
- } catch (SandeshaException ex) {
- String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotInnitMessage);
- log.debug(message);
- throw new AxisFault(message, ex);
- }
+ RMMsgContext rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
// validating the message
MessageValidator.validateMessage(rmMsgCtx, storageManager);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java Tue Dec 19 22:35:09 2006
@@ -28,7 +28,6 @@
import org.apache.axiom.soap.SOAPHeader;
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;
@@ -179,13 +178,6 @@
ackMsgCtx.setReplyTo(msgContext.getTo());
RMMsgCreator.addAckMessage(ackRMMsgCtx,sequencePropertyKey,sequenceId, storageManager);
ackRMMsgCtx.getMessageContext().setServerSide(true);
- ackMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, msgContext
- .getProperty(AddressingConstants.WS_ADDRESSING_VERSION)); // TODO
- // do
- // this
- // in
- // the
- // RMMsgCreator
if (acksTo.hasAnonymousAddress()) {
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Tue Dec 19 22:35:09 2006
@@ -330,22 +330,20 @@
OperationContext operationContext = msgContext.getOperationContext();
// SENDING THE CREATE SEQUENCE.
- EndpointReference acksToEPR = new EndpointReference(null); //use this to hold the acksTo EPR
if (sendCreateSequence) {
+ EndpointReference acksToEPR = null;
SequencePropertyBean responseCreateSeqAdded = seqPropMgr.retrieve(sequencePropertyKey,
Sandesha2Constants.SequenceProperties.OUT_CREATE_SEQUENCE_SENT);
- String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequencePropertyKey,
- Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, storageManager);
- String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
-
if (responseCreateSeqAdded == null) {
responseCreateSeqAdded = new SequencePropertyBean(sequencePropertyKey,
Sandesha2Constants.SequenceProperties.OUT_CREATE_SEQUENCE_SENT, "true");
seqPropMgr.insert(responseCreateSeqAdded);
- if (serviceContext != null)
- acksToEPR.setAddress((String) msgContext.getProperty(SandeshaClientConstants.AcksTo));
+ if (serviceContext != null) {
+ String address = (String) msgContext.getProperty(SandeshaClientConstants.AcksTo);
+ if(address != null) acksToEPR = new EndpointReference(address);
+ }
if (msgContext.isServerSide()) {
// we do not set acksTo value to anonymous when the create
@@ -366,28 +364,25 @@
acksToEPR = requestMessage.getTo();
} else {
- if (acksToEPR.getAddress() == null){
+ if (acksToEPR == null){
EndpointReference replyToEPR = msgContext.getReplyTo();
if(replyToEPR!=null && !replyToEPR.getAddress().equals("")){
//use the replyTo address as acksTo
if (log.isDebugEnabled())
- log.debug("Using replyTo " + replyToEPR + " EPR as AcksTo, addr=" + acksToEPR.getAddress());
+ log.debug("Using replyTo " + replyToEPR + " EPR as AcksTo, addr=" + replyToEPR.getAddress());
acksToEPR = replyToEPR;
}
- else{
- acksToEPR.setAddress(anonymousURI);
- }
}
}
- if (acksToEPR.getAddress()!=null && !anonymousURI.equals(acksToEPR.getAddress()) && !serverSide) {
+ if (acksToEPR != null && !acksToEPR.hasAnonymousAddress() && !serverSide) {
String transportIn = (String) configContext // TODO verify
.getProperty(MessageContext.TRANSPORT_IN);
if (transportIn == null)
transportIn = org.apache.axis2.Constants.TRANSPORT_HTTP;
- } else if (acksToEPR.getAddress() == null && serverSide) {
+ } else if (acksToEPR == null && serverSide) {
// String incomingSequencId = SandeshaUtil
// .getServerSideIncomingSeqIdFromInternalSeqId(internalSequenceId);
@@ -402,17 +397,11 @@
if (bean != null) {
String beanAcksToValue = bean.getValue();
if (beanAcksToValue != null)
- acksToEPR.setAddress(beanAcksToValue);
+ acksToEPR = new EndpointReference(beanAcksToValue);
}
} catch (AxisFault e) {
throw new SandeshaException (e);
}
- } else if (anonymousURI.equals(acksToEPR.getAddress())) {
- // set transport in.
- Object trIn = msgContext.getProperty(MessageContext.TRANSPORT_IN);
- if (trIn == null) {
- // TODO
- }
}
addCreateSequenceMessage(rmMsgCtx, sequencePropertyKey ,internalSequenceId, acksToEPR, storageManager);
}
@@ -546,13 +535,11 @@
createSeqMgr.insert(rMSBean);
- String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequencePropertyKey,
- Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, storageManager);
- String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
-
- if (createSeqMsg.getReplyTo() == null)
- createSeqMsg.setReplyTo(new EndpointReference(anonymousURI));
-
+// if (createSeqMsg.getReplyTo() == null) {
+// String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(createSeqMsg);
+// createSeqMsg.setReplyTo(new EndpointReference(anonymousURI));
+// }
+//
SenderBean createSeqEntry = new SenderBean();
createSeqEntry.setMessageContextRefKey(createSequenceMessageStoreKey);
createSeqEntry.setTimeToSend(System.currentTimeMillis());
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java Tue Dec 19 22:35:09 2006
@@ -28,7 +28,6 @@
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.engine.AxisEngine;
-import org.apache.axis2.util.Utils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.RMMsgContext;
@@ -119,16 +118,8 @@
MessageContext closeSequenceMsg = rmMsgCtx.getMessageContext();
- MessageContext closeSequenceResponseMsg = null;
-
- try {
- closeSequenceResponseMsg = Utils.createOutMessageContext(closeSequenceMsg);
- } catch (AxisFault e1) {
- throw new SandeshaException(e1);
- }
-
- RMMsgContext closeSeqResponseRMMsg = RMMsgCreator.createCloseSeqResponseMsg(rmMsgCtx, closeSequenceResponseMsg,
- storageManager);
+ RMMsgContext closeSeqResponseRMMsg = RMMsgCreator.createCloseSeqResponseMsg(rmMsgCtx);
+ MessageContext closeSequenceResponseMsg = closeSeqResponseRMMsg.getMessageContext();
while (sequenceAckIter.hasNext()) {
SequenceAcknowledgement sequenceAcknowledgement = (SequenceAcknowledgement) sequenceAckIter.next();
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=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java Tue Dec 19 22:35:09 2006
@@ -27,7 +27,6 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.engine.AxisEngine;
-import org.apache.axis2.util.Utils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.RMMsgContext;
@@ -97,14 +96,6 @@
}
MessageContext outMessage = null;
- try {
- outMessage = Utils.createOutMessageContext(createSeqMsg); // createing
- // a new
- // response
- // message.
- } catch (AxisFault e1) {
- throw new SandeshaException(e1);
- }
SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropertyBeanMgr();
try {
@@ -112,10 +103,9 @@
// sequence state.
String newSequenceId = SequenceManager.setupNewSequence(createSeqRMMsg, storageManager, secManager, token);
- RMMsgContext createSeqResponse = RMMsgCreator.createCreateSeqResponseMsg(createSeqRMMsg, outMessage,
- newSequenceId, storageManager); // converting the blank out
- // message in to a create
- // sequence response.
+ RMMsgContext createSeqResponse = RMMsgCreator.createCreateSeqResponseMsg(createSeqRMMsg, newSequenceId);
+ outMessage = createSeqResponse.getMessageContext();
+
createSeqResponse.setFlow(MessageContext.OUT_FLOW);
createSeqResponse.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE, "true"); // for
@@ -159,7 +149,6 @@
// dummy
// value.
-
String outgoingSideSequencePropertyKey = outgoingSideInternalSequenceId;
RMSBeanMgr createSeqMgr = storageManager.getRMSBeanMgr();
@@ -257,21 +246,19 @@
e);
}
+ boolean anon = true;
SequencePropertyBean toBean = seqPropMgr.retrieve(newSequenceId,
Sandesha2Constants.SequenceProperties.TO_EPR);
- if (toBean == null) {
- String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.toEPRNotValid, null);
- log.debug(message);
- throw new SandeshaException(message);
+ if (toBean != null) {
+ EndpointReference toEPR = new EndpointReference(toBean.getValue());
+ if (!toEPR.hasAnonymousAddress()) anon = false;
}
-
- EndpointReference toEPR = new EndpointReference(toBean.getValue());
- if (toEPR.hasAnonymousAddress()) {
+ if(anon) {
createSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "true");
} else {
createSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "false");
}
-
+
} catch (AxisFault e1) {
throw new SandeshaException(e1);
}
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java Tue Dec 19 22:35:09 2006
@@ -26,6 +26,8 @@
import org.apache.axis2.addressing.RelatesTo;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.wsdl.WSDLConstants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.RMMsgContext;
@@ -92,12 +94,20 @@
}
RelatesTo relatesTo = createSeqResponseRMMsgCtx.getMessageContext().getRelatesTo();
- if (relatesTo == null) {
+ String createSeqMsgId = null;
+ if (relatesTo != null) {
+ createSeqMsgId = relatesTo.getValue();
+ } else {
+ // Work out the related message from the operation context
+ OperationContext context = createSeqResponseRMMsgCtx.getMessageContext().getOperationContext();
+ MessageContext createSeq = context.getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT_VALUE);
+ if(createSeq != null) createSeqMsgId = createSeq.getMessageID();
+ }
+ if(createSeqMsgId == null) {
String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.relatesToNotAvailable);
log.error(message);
throw new SandeshaException(message);
}
- String createSeqMsgId = relatesTo.getValue();
SenderBeanMgr retransmitterMgr = storageManager.getSenderBeanMgr();
RMSBeanMgr createSeqMgr = storageManager.getRMSBeanMgr();
@@ -194,7 +204,6 @@
RMDBean rMDBean = new RMDBean();
rMDBean.setSequenceID(offeredSequenceId);
rMDBean.setNextMsgNoToProcess(1);
-
//Storing the referenceMessage of the sending side sequence as the reference message
//of the receiving side as well.
@@ -215,7 +224,7 @@
String replyToAddress = SandeshaUtil.getSequenceProperty(sequencePropertyKey,
Sandesha2Constants.SequenceProperties.REPLY_TO_EPR, storageManager);
EndpointReference ref = new EndpointReference(replyToAddress);
- if(!createSeqBean.isPollingMode() && ref.hasAnonymousAddress()) {
+ if(!createSeqBean.isPollingMode() && (replyToAddress == null || ref.hasAnonymousAddress())) {
rMDBean.setPollingMode(true);
SandeshaUtil.startPollingManager(configCtx);
}
@@ -239,12 +248,6 @@
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);
// Store the security token for the offered sequence
if(tokenData != null) {
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/SequenceProcessor.java Tue Dec 19 22:35:09 2006
@@ -164,10 +164,18 @@
}
if (msgNo > highestInMsgNo) {
+ // If WS-Addressing is turned off there may not be a message id written into the SOAP
+ // headers, but we can still fake one up to help us match up requests and replies within
+ // this end of the connection.
+ String messageId = msgCtx.getMessageID();
+ if(messageId == null) {
+ messageId = SandeshaUtil.getUUID();
+ msgCtx.setMessageID(messageId);
+ }
SequencePropertyBean highestMsgNoBean = new SequencePropertyBean(propertyKey,
Sandesha2Constants.SequenceProperties.HIGHEST_IN_MSG_NUMBER, Long.toString(msgNo));
SequencePropertyBean highestMsgIdBean = new SequencePropertyBean(propertyKey,
- Sandesha2Constants.SequenceProperties.HIGHEST_IN_MSG_ID, msgCtx.getMessageID());
+ Sandesha2Constants.SequenceProperties.HIGHEST_IN_MSG_ID, messageId);
if (highetsInMsgNoStr != null) {
seqPropMgr.update(highestMsgNoBean);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java Tue Dec 19 22:35:09 2006
@@ -28,7 +28,6 @@
import org.apache.axis2.context.OperationContextFactory;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.engine.AxisEngine;
-import org.apache.axis2.util.Utils;
import org.apache.axis2.wsdl.WSDLConstants.WSDL20_2004Constants;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -249,18 +248,8 @@
if (log.isDebugEnabled())
log.debug("Enter: TerminateSeqMsgProcessor::addTerminateSequenceResponse, " + sequenceId);
- MessageContext terminateSeqMsg = terminateSeqRMMsg.getMessageContext();
-
- MessageContext outMessage = null;
-
- try {
- outMessage = Utils.createOutMessageContext(terminateSeqMsg);
- } catch (AxisFault e1) {
- throw new SandeshaException(e1);
- }
-
- RMMsgContext terminateSeqResponseRMMsg = RMMsgCreator.createTerminateSeqResponseMsg(terminateSeqRMMsg,
- outMessage, storageManager);
+ RMMsgContext terminateSeqResponseRMMsg = RMMsgCreator.createTerminateSeqResponseMsg(terminateSeqRMMsg);
+ MessageContext outMessage = terminateSeqResponseRMMsg.getMessageContext();
RMMsgContext ackRMMessage = AcknowledgementManager.generateAckMessage(terminateSeqRMMsg, sequencePropertyKey,
sequenceId, storageManager);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java Tue Dec 19 22:35:09 2006
@@ -49,7 +49,7 @@
if(log.isDebugEnabled()) log.debug("Entry: RMMessageReceiver::receive");
RMMsgContext rmMsgCtx = MsgInitializer.initializeMessage(msgCtx);
- if(log.isDebugEnabled()) log.debug("MsgReceiver got type:" + SandeshaUtil.getMessageTypeString(rmMsgCtx.getMessageType()));
+ if(log.isDebugEnabled()) log.debug("MsgReceiver got type: " + SandeshaUtil.getMessageTypeString(rmMsgCtx.getMessageType()));
// Note that some messages (such as stand-alone acks) will be routed here, but
// the headers will already have been processed. Therefore we should not assume
@@ -97,4 +97,4 @@
if(log.isDebugEnabled()) log.debug("Exit: RMMessageReceiver::receive");
}
-}
\ No newline at end of file
+}
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/AcknowledgementManager.java Tue Dec 19 22:35:09 2006
@@ -29,7 +29,6 @@
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
@@ -258,11 +257,6 @@
// adding the SequenceAcknowledgement part.
RMMsgCreator.addAckMessage(ackRMMsgCtx, sequencePropertyKey ,sequenceId, storageManager);
-
- String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequencePropertyKey,
- Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, storageManager);
-
- ackMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, addressingNamespaceURI);
if (log.isDebugEnabled())
log.debug("Exit: AcknowledgementManager::generateAckMessage");
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/FaultManager.java Tue Dec 19 22:35:09 2006
@@ -111,8 +111,7 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForCreateSequenceRefused, refused sequence");
- getFault(createSequenceRMMsg, data, createSequenceRMMsg.getAddressingNamespaceValue(),
- storageManager);
+ getFault(createSequenceRMMsg, data, storageManager);
}
if (log.isDebugEnabled())
@@ -171,8 +170,7 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForLastMsgNumberExceeded, lastMessageNumberExceeded");
- getFault(applicationRMMessage, faultData, applicationRMMessage.getAddressingNamespaceValue(),
- storageManager);
+ getFault(applicationRMMessage, faultData, storageManager);
}
if (log.isDebugEnabled())
@@ -258,7 +256,7 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForUnknownSequence, Sequence unknown");
- getFault(rmMessageContext, data, rmMessageContext.getAddressingNamespaceValue(), storageManager);
+ getFault(rmMessageContext, data, storageManager);
}
if (log.isDebugEnabled())
@@ -331,8 +329,7 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForInvalidAcknowledgement, invalid ACK");
- getFault(ackRMMessageContext, data, ackRMMessageContext.getAddressingNamespaceValue(),
- storageManager);
+ getFault(ackRMMessageContext, data, storageManager);
}
}
@@ -380,7 +377,7 @@
if (log.isDebugEnabled())
log.debug("Exit: FaultManager::checkForSequenceClosed, sequence closed");
- getFault(referenceRMMessage, data, referenceRMMessage.getAddressingNamespaceValue(), storageManager);
+ getFault(referenceRMMessage, data, storageManager);
}
if (log.isDebugEnabled())
@@ -393,13 +390,12 @@
*
* @param referenceRMMsgContext - Message in reference to which the fault will be generated.
* @param data - data for the fault
- * @param addressingNamespaceURI
* @param storageManager
* @return - The dummy fault to be thrown out.
*
* @throws AxisFault
*/
- public static void getFault (RMMsgContext referenceRMMsgContext, FaultData data, String addressingNamespaceURI,
+ public static void getFault (RMMsgContext referenceRMMsgContext, FaultData data,
StorageManager storageManager) throws AxisFault {
SOAPFactory factory = (SOAPFactory) referenceRMMsgContext.getSOAPEnvelope().getOMFactory();
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java Tue Dec 19 22:35:09 2006
@@ -156,9 +156,6 @@
rmMsgContext.setRMNamespaceValue(rmNamespace);
- String addressingNamespaceValue = elements.getAddressingNamespaceValue();
- if (addressingNamespaceValue != null)
- rmMsgContext.setAddressingNamespaceValue(addressingNamespaceValue);
}
/**
@@ -229,7 +226,7 @@
} else if (closeSequenceResponse != null) {
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE_RESPONSE);
sequenceID = closeSequenceResponse.getIdentifier().getIdentifier();
- } else if (makeConnection != null){ {
+ } else if (makeConnection != null){
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.MAKE_CONNECTION_MSG);
if (makeConnection.getIdentifier()!=null) {
sequenceID = makeConnection.getIdentifier().getIdentifier();
@@ -239,7 +236,6 @@
throw new SandeshaException (
"Invalid MakeConnection message. Either Address or Identifier must be present");
}
- }
} else
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.UNKNOWN);
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RMMsgCreator.java Tue Dec 19 22:35:09 2006
@@ -30,6 +30,7 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.util.Utils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.RMMsgContext;
@@ -53,7 +54,7 @@
import org.apache.sandesha2.wsrm.CreateSequence;
import org.apache.sandesha2.wsrm.CreateSequenceResponse;
import org.apache.sandesha2.wsrm.Endpoint;
-import org.apache.sandesha2.wsrm.IOMRMElement;
+import org.apache.sandesha2.wsrm.IOMRMPart;
import org.apache.sandesha2.wsrm.Identifier;
import org.apache.sandesha2.wsrm.MakeConnection;
import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
@@ -118,10 +119,17 @@
String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
- String addressingNamespaceValue = SandeshaUtil.getSequenceProperty(sequencePropertyKey,
- Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, storageManager);
-
- CreateSequence createSequencePart = new CreateSequence(rmNamespaceValue, addressingNamespaceValue);
+ // Decide which addressing version to use. We copy the version that the application
+ // is already using (if set), and fall back to the level in the spec if that isn't
+ // found.
+ String addressingNamespace = (String) applicationMsgContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
+ if(addressingNamespace == null) addressingNamespace = SpecSpecificConstants.getAddressingNamespace(rmNamespaceValue);
+
+ // If acksTo has not been set, then default to anonaymous, using the correct spec level
+ String anon = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespace);
+ if(acksToEPR == null) acksToEPR = new EndpointReference(anon);
+
+ CreateSequence createSequencePart = new CreateSequence(rmNamespaceValue);
// Adding sequence offer - if present
OperationContext operationcontext = applicationMsgContext.getOperationContext();
@@ -140,7 +148,6 @@
}
// Finally fall back to using an anonymous endpoint
if (offeredEndpoint==null) {
- String anon = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceValue);
offeredEndpoint = new EndpointReference(anon);
}
if (offeredSequence != null && !"".equals(offeredSequence)) {
@@ -151,8 +158,7 @@
createSequencePart.setSequenceOffer(offerPart);
if (Sandesha2Constants.SPEC_2006_08.NS_URI.equals(rmNamespaceValue)) {
- Endpoint endpoint = new Endpoint (rmNamespaceValue,addressingNamespaceValue);
- endpoint.setEPR (offeredEndpoint);
+ Endpoint endpoint = new Endpoint (offeredEndpoint, rmNamespaceValue, addressingNamespace);
offerPart.setEndpoint(endpoint);
}
}
@@ -164,12 +170,6 @@
Sandesha2Constants.SequenceProperties.REPLY_TO_EPR,
storageManager);
- if (replyTo == null) {
- // using wsa:Anonymous as ReplyTo
- String addressingNamespace = applicationRMMsg.getAddressingNamespaceValue();
- replyTo = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespace);
- }
-
if (to == null) {
String message = SandeshaMessageHelper
.getMessage(SandeshaMessageKeys.toBeanNotSet);
@@ -178,18 +178,14 @@
// TODO store and retrieve a full EPR instead of just the address.
EndpointReference toEPR = new EndpointReference(to);
- EndpointReference replyToEPR = new EndpointReference(replyTo);
-
createSeqRMMsg.setTo(toEPR);
- createSeqRMMsg.setReplyTo(replyToEPR);
-
- String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceValue);
-
- if (acksToEPR==null || acksToEPR.getAddress() == null || "".equals(acksToEPR.getAddress()))
- acksToEPR = new EndpointReference(anonymousURI);
+ if(replyTo != null) {
+ EndpointReference replyToEPR = new EndpointReference(replyTo);
+ createSeqRMMsg.setReplyTo(replyToEPR);
+ }
- AcksTo acksTo = new AcksTo(acksToEPR,rmNamespaceValue,addressingNamespaceValue);
+ AcksTo acksTo = new AcksTo(acksToEPR, rmNamespaceValue, addressingNamespace);
createSequencePart.setAcksTo(acksTo);
createSeqRMMsg.setMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ, createSequencePart);
@@ -319,29 +315,14 @@
* @return
* @throws AxisFault
*/
- public static RMMsgContext createCreateSeqResponseMsg(RMMsgContext createSeqMessage, MessageContext outMessage,
- String newSequenceID, StorageManager storageManager) throws AxisFault {
-
- SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil.getSOAPVersion(createSeqMessage
- .getSOAPEnvelope()));
-
- IOMRMElement messagePart = createSeqMessage.getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ);
- CreateSequence cs = (CreateSequence) messagePart;
-
- String rmVersion = SandeshaUtil.getRMVersion(newSequenceID, storageManager);
- if (rmVersion == null)
- throw new SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotDecideRMVersion));
-
- String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
- String addressingNamespaceValue = SandeshaUtil.getSequenceProperty(newSequenceID,
- Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, storageManager);
+ public static RMMsgContext createCreateSeqResponseMsg(RMMsgContext createSeqMessage, String newSequenceID) throws AxisFault {
- CreateSequenceResponse response = new CreateSequenceResponse(rmNamespaceValue,
- addressingNamespaceValue);
+ CreateSequence cs = (CreateSequence) createSeqMessage.getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ);
+ String namespace = createSeqMessage.getRMNamespaceValue();
- Identifier identifier = new Identifier(rmNamespaceValue);
+ CreateSequenceResponse response = new CreateSequenceResponse(namespace);
+ Identifier identifier = new Identifier(namespace);
identifier.setIndentifer(newSequenceID);
-
response.setIdentifier(identifier);
SequenceOffer offer = cs.getSequenceOffer();
@@ -350,124 +331,99 @@
if (outSequenceId != null && !"".equals(outSequenceId)) {
- Accept accept = new Accept(rmNamespaceValue, addressingNamespaceValue);
- EndpointReference acksToEPR = SandeshaUtil.cloneEPR (createSeqMessage.getTo());
+ Accept accept = new Accept(namespace);
+
+ // Putting the To EPR as the AcksTo for the response sequence. We echo back the
+ // addressing version that the create used.
+ String addressingNamespace = cs.getAddressingNamespaceValue();
+ EndpointReference acksToEPR = createSeqMessage.getTo();
+ if(acksToEPR != null) {
+ acksToEPR = SandeshaUtil.cloneEPR(acksToEPR);
+ } else {
+ String anon = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespace);
+ acksToEPR = new EndpointReference(anon);
+ }
- //putting the To EPR as the AcksTo for the response sequence.
- AcksTo acksTo = new AcksTo(acksToEPR,rmNamespaceValue, addressingNamespaceValue);
+ AcksTo acksTo = new AcksTo(acksToEPR, namespace, cs.getAddressingNamespaceValue());
accept.setAcksTo(acksTo);
response.setAccept(accept);
}
-
}
- SOAPEnvelope envelope = factory.getDefaultEnvelope();
- response.toOMElement(envelope.getBody());
- outMessage.setWSAAction(SpecSpecificConstants.getCreateSequenceResponseAction(SandeshaUtil.getRMVersion(
- newSequenceID, storageManager)));
- outMessage.setSoapAction(SpecSpecificConstants.getCreateSequenceResponseSOAPAction(SandeshaUtil.getRMVersion(
- newSequenceID, storageManager)));
- outMessage.setProperty(AddressingConstants.WS_ADDRESSING_VERSION, addressingNamespaceValue);
-
- String newMessageId = SandeshaUtil.getUUID();
- outMessage.setMessageID(newMessageId);
+ String version = SpecSpecificConstants.getSpecVersionString(namespace);
+ String action = SpecSpecificConstants.getCreateSequenceResponseAction(version);
- outMessage.setEnvelope(envelope);
-
- RMMsgContext createSeqResponse = null;
- try {
- createSeqResponse = MsgInitializer.initializeMessage(outMessage);
- } catch (SandeshaException ex) {
- throw new AxisFault(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotInnitMessage), ex);
- }
-
- createSeqResponse.setMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE, response);
-
- createSeqMessage.getMessageContext().setServerSide(true);
-
- // Ensure the correct token is used to secure the create sequence response
- secureOutboundMessage(newSequenceID, outMessage);
-
- return createSeqResponse;
+ return createResponseMsg(createSeqMessage, response,
+ Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE,
+ newSequenceID, action);
}
- public static RMMsgContext createTerminateSeqResponseMsg(RMMsgContext terminateSeqRMMsg, MessageContext outMessage,
- StorageManager storageManager) throws AxisFault {
+ public static RMMsgContext createTerminateSeqResponseMsg(RMMsgContext terminateSeqRMMsg) throws AxisFault {
- RMMsgContext terminateSeqResponseRMMsg = new RMMsgContext(outMessage);
-
- SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil.getSOAPVersion(terminateSeqRMMsg
- .getSOAPEnvelope()));
-
TerminateSequence terminateSequence = (TerminateSequence) terminateSeqRMMsg
.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
String sequenceID = terminateSequence.getIdentifier().getIdentifier();
String namespace = terminateSeqRMMsg.getRMNamespaceValue();
- terminateSeqResponseRMMsg.setRMNamespaceValue(namespace);
TerminateSequenceResponse terminateSequenceResponse = new TerminateSequenceResponse(namespace);
Identifier identifier = new Identifier(namespace);
identifier.setIndentifer(sequenceID);
terminateSequenceResponse.setIdentifier(identifier);
- SOAPEnvelope envelope = factory.getDefaultEnvelope();
- terminateSeqResponseRMMsg.setSOAPEnvelop(envelope);
- terminateSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE,
- terminateSequenceResponse);
-
- outMessage.setWSAAction(SpecSpecificConstants.getTerminateSequenceResponseAction(SandeshaUtil.getRMVersion(
- sequenceID, storageManager)));
- outMessage.setSoapAction(SpecSpecificConstants.getTerminateSequenceResponseAction(SandeshaUtil.getRMVersion(
- sequenceID, storageManager)));
-
- terminateSeqResponseRMMsg.addSOAPEnvelope();
+ String version = SpecSpecificConstants.getSpecVersionString(namespace);
+ String action = SpecSpecificConstants.getTerminateSequenceResponseAction(version);
- terminateSeqResponseRMMsg.getMessageContext().setServerSide(true);
-
- // Ensure the correct token is used to secure the terminate sequence response
- secureOutboundMessage(sequenceID, outMessage);
-
- return terminateSeqResponseRMMsg;
+ return createResponseMsg(terminateSeqRMMsg, terminateSequenceResponse,
+ Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE,
+ sequenceID, action);
}
- public static RMMsgContext createCloseSeqResponseMsg(RMMsgContext closeSeqRMMsg, MessageContext outMessage,
- StorageManager storageManager) throws AxisFault {
-
- RMMsgContext closeSeqResponseRMMsg = new RMMsgContext(outMessage);
-
- SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil.getSOAPVersion(closeSeqRMMsg
- .getSOAPEnvelope()));
+ public static RMMsgContext createCloseSeqResponseMsg(RMMsgContext closeSeqRMMsg) throws AxisFault {
CloseSequence closeSequence = (CloseSequence) closeSeqRMMsg
.getMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE);
String sequenceID = closeSequence.getIdentifier().getIdentifier();
String namespace = closeSeqRMMsg.getRMNamespaceValue();
- closeSeqResponseRMMsg.setRMNamespaceValue(namespace);
CloseSequenceResponse closeSequenceResponse = new CloseSequenceResponse(namespace);
Identifier identifier = new Identifier(namespace);
identifier.setIndentifer(sequenceID);
closeSequenceResponse.setIdentifier(identifier);
+ String version = SpecSpecificConstants.getSpecVersionString(namespace);
+ String action = SpecSpecificConstants.getCloseSequenceResponseAction(version);
+
+ return createResponseMsg(closeSeqRMMsg, closeSequenceResponse,
+ Sandesha2Constants.MessageParts.CLOSE_SEQUENCE_RESPONSE,
+ sequenceID, action);
+ }
+
+ private static RMMsgContext createResponseMsg(RMMsgContext requestMsg, IOMRMPart part, int messagePartId,
+ String sequenceID, String action) throws AxisFault {
+
+ MessageContext outMessage = Utils.createOutMessageContext(requestMsg.getMessageContext());
+ RMMsgContext responseRMMsg = new RMMsgContext(outMessage);
+ SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil.getSOAPVersion(requestMsg.getSOAPEnvelope()));
+
+ String namespace = requestMsg.getRMNamespaceValue();
+ responseRMMsg.setRMNamespaceValue(namespace);
+
SOAPEnvelope envelope = factory.getDefaultEnvelope();
- closeSeqResponseRMMsg.setSOAPEnvelop(envelope);
- closeSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE_RESPONSE,
- closeSequenceResponse);
-
- outMessage.setWSAAction(SpecSpecificConstants.getCloseSequenceResponseAction(SandeshaUtil.getRMVersion(
- sequenceID, storageManager)));
- outMessage.setSoapAction(SpecSpecificConstants.getCloseSequenceResponseAction(SandeshaUtil.getRMVersion(
- sequenceID, storageManager)));
+ responseRMMsg.setSOAPEnvelop(envelope);
+ responseRMMsg.setMessagePart(messagePartId, part);
+
+ outMessage.setWSAAction(action);
+ outMessage.setSoapAction(action);
- closeSeqResponseRMMsg.addSOAPEnvelope();
- closeSeqResponseRMMsg.getMessageContext().setServerSide(true);
+ responseRMMsg.addSOAPEnvelope();
+ responseRMMsg.getMessageContext().setServerSide(true);
- // Ensure the correct token is used to secure the close sequence response
+ // Ensure the correct token is used to secure the message
secureOutboundMessage(sequenceID, outMessage);
- return closeSeqResponseRMMsg;
+ return responseRMMsg;
}
/**
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java Tue Dec 19 22:35:09 2006
@@ -587,8 +587,7 @@
newMessageContext.setProperty(MessageContext.TRANSPORT_OUT, referenceMessage
.getProperty(MessageContext.TRANSPORT_OUT));
-
- //copyint properties as configured in the module.xml properties. Module xml has several
+ //copying properties as configured in the module.xml properties. Module xml has several
//properties which gives comma seperated lists of property names that have to be copited
//from various places when creating related messages.
@@ -672,8 +671,10 @@
}
}
}
-
toMessage.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,addressingVersion);
+
+ toMessage.setProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES, fromMessage
+ .getProperty(AddressingConstants.DISABLE_ADDRESSING_FOR_OUT_MESSAGES));
}
//TODO change this method.
@@ -837,23 +838,6 @@
}
return executionChainStr;
- }
-
- // TODO complete below.
- public static ArrayList getExecutionChainFromString(String executionChainStr, ConfigurationContext configContext)
- throws SandeshaException {
- String[] nameStrs = executionChainStr.split(Sandesha2Constants.EXECUTIN_CHAIN_SEPERATOR);
-
- AxisConfiguration axisConfiguration = configContext.getAxisConfiguration();
-
- int length = nameStrs.length;
- for (int i = 0; i < length; i++) {
- String nameStr = nameStrs[i];
- // axisConfiguration.get
-
- }
-
- return null; // not complete yet.
}
public static void printSOAPEnvelope(SOAPEnvelope envelope, OutputStream out) throws SandeshaException {
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=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java Tue Dec 19 22:35:09 2006
@@ -12,7 +12,6 @@
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.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
@@ -90,21 +89,11 @@
SequencePropertyBean receivedMsgBean = new SequencePropertyBean(sequenceId,
Sandesha2Constants.SequenceProperties.SERVER_COMPLETED_MESSAGES, "");
- // setting the addressing version
- String addressingNamespaceValue = createSequenceMsg.getAddressingNamespaceValue();
- SequencePropertyBean addressingNamespaceBean = new SequencePropertyBean(sequenceId,
- Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, addressingNamespaceValue);
- seqPropMgr.insert(addressingNamespaceBean);
-
- String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceValue);
-
// If no replyTo value. Send responses as sync.
SequencePropertyBean toBean = null;
if (replyTo != null) {
toBean = new SequencePropertyBean(sequenceId, Sandesha2Constants.SequenceProperties.TO_EPR, replyTo
.getAddress());
- } else {
- toBean = new SequencePropertyBean(sequenceId, Sandesha2Constants.SequenceProperties.TO_EPR, anonymousURI);
}
SequencePropertyBean replyToBean = new SequencePropertyBean(sequenceId,
@@ -188,50 +177,12 @@
SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropertyBeanMgr();
- // setting the addressing version
- String addressingNamespace = (String) firstAplicationMsgCtx
- .getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
-
- if (addressingNamespace == null) {
- OperationContext opCtx = firstAplicationMsgCtx.getOperationContext();
- if (opCtx != null) {
- try {
- MessageContext requestMsg = opCtx.getMessageContext(WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- if (requestMsg != null)
- addressingNamespace = (String) requestMsg
- .getProperty(AddressingConstants.WS_ADDRESSING_VERSION);
- } catch (AxisFault e) {
- throw new SandeshaException(e);
- }
- }
- }
-
- if (addressingNamespace == null)
- addressingNamespace = AddressingConstants.Final.WSA_NAMESPACE; // defaults
- // to
- // Final.
- // Make
- // sure
- // this
- // is
- // synchronized
- // with
- // addressing.
-
- SequencePropertyBean addressingNamespaceBean = new SequencePropertyBean(sequencePropertyKey,
- Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE, addressingNamespace);
- seqPropMgr.insert(addressingNamespaceBean);
-
-
//setting the SOAPVersion Bean.
String SOAPVersion = firstAplicationMsgCtx.getOptions().getSoapVersionURI();
SequencePropertyBean SOAPVersionBean = new SequencePropertyBean (sequencePropertyKey,
Sandesha2Constants.SequenceProperties.SOAP_VERSION, SOAPVersion);
seqPropMgr.insert(SOAPVersionBean);
-
-
- String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespace);
EndpointReference toEPR = firstAplicationMsgCtx.getTo();
String acksTo = (String) firstAplicationMsgCtx.getProperty(SandeshaClientConstants.AcksTo);
@@ -290,29 +241,25 @@
throw new SandeshaException(message);
}
} else {
-
- //setting replyTo, which defaults to anonymous
- String replyTo = anonymousURI;
EndpointReference replyToEPR = firstAplicationMsgCtx.getReplyTo();
- if (replyToEPR!=null) replyTo = replyToEPR.getAddress();
-
- replyToBean = new SequencePropertyBean(sequencePropertyKey,
- Sandesha2Constants.SequenceProperties.REPLY_TO_EPR, replyTo);
+ if (replyToEPR!=null) {
+ replyToBean = new SequencePropertyBean(sequencePropertyKey,
+ Sandesha2Constants.SequenceProperties.REPLY_TO_EPR, replyToEPR.getAddress());
+ }
- //TODO set AcksToBean.
}
- // Default value for acksTo is anonymous (this happens only for the
- // client side)
- if (acksTo == null) {
- acksTo = anonymousURI;
+ // Default value for acksTo is anonymous (this happens only for the client side)
+ boolean anonAcks = true;
+ if (acksTo != null) {
+ acksToBean = new SequencePropertyBean(sequencePropertyKey, Sandesha2Constants.SequenceProperties.ACKS_TO_EPR,
+ acksTo);
+ EndpointReference epr = new EndpointReference(acksTo);
+ anonAcks = epr.hasAnonymousAddress();
}
- acksToBean = new SequencePropertyBean(sequencePropertyKey, Sandesha2Constants.SequenceProperties.ACKS_TO_EPR,
- acksTo);
-
// start the in listner for the client side, if acksTo is not anonymous.
- if (!firstAplicationMsgCtx.isServerSide() && !anonymousURI.equals(acksTo)) {
+ if (!firstAplicationMsgCtx.isServerSide() && !anonAcks) {
String transportInProtocol = firstAplicationMsgCtx.getOptions().getTransportInProtocol();
if (transportInProtocol == null) {
@@ -372,26 +319,23 @@
SandeshaUtil.startSenderForTheSequence(configurationContext, sequencePropertyKey);
- updateClientSideListnerIfNeeded(firstAplicationMsgCtx, anonymousURI);
+ updateClientSideListnerIfNeeded(firstAplicationMsgCtx, anonAcks);
}
- private static void updateClientSideListnerIfNeeded(MessageContext messageContext, String addressingAnonymousURI)
+ private static void updateClientSideListnerIfNeeded(MessageContext messageContext, boolean anonAcks)
throws SandeshaException {
if (messageContext.isServerSide())
return; // listners are updated only for the client side.
String transportInProtocol = messageContext.getOptions().getTransportInProtocol();
- String acksTo = (String) messageContext.getProperty(SandeshaClientConstants.AcksTo);
- String mep = messageContext.getAxisOperation().getMessageExchangePattern();
-
boolean startListnerForAsyncAcks = false;
boolean startListnerForAsyncControlMsgs = false; // For async
// createSerRes &
// terminateSeq.
- if (acksTo != null && !addressingAnonymousURI.equals(acksTo)) {
+ if (!anonAcks) {
// starting listner for async acks.
startListnerForAsyncAcks = true;
}
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SpecSpecificConstants.java Tue Dec 19 22:35:09 2006
@@ -304,6 +304,17 @@
addressingNSURI));
}
+ public static String getAddressingNamespace(String rmNamespace) throws SandeshaException {
+ if(Sandesha2Constants.SPEC_2006_08.NS_URI.equals(rmNamespace)) {
+ return Sandesha2Constants.SPEC_2006_08.ADDRESSING_NS_URI;
+ } else if(Sandesha2Constants.SPEC_2005_02.NS_URI.equals(rmNamespace)) {
+ return Sandesha2Constants.SPEC_2005_02.ADDRESSING_NS_URI;
+ }
+
+ throw new SandeshaException (SandeshaMessageHelper.getMessage(
+ SandeshaMessageKeys.unknownRMNamespace, rmNamespace));
+ }
+
public static String getSecurityNamespace (String rmNamespace) {
if(rmNamespace.equals(Sandesha2Constants.SPEC_2005_02.NS_URI)) {
return Sandesha2Constants.SPEC_2005_02.SEC_NS_URI;
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/workers/InvokerWorker.java Tue Dec 19 22:35:09 2006
@@ -133,8 +133,6 @@
if(!ignoreNextMsg){
// updating the next msg to invoke
-
- String s = invokerBean.getSequenceID();
RMDBean rMDBean = nextMsgMgr.retrieve(sequenceId);
long nextMsgNo = rMDBean.getNextMsgNoToProcess();
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Accept.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Accept.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Accept.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Accept.java Tue Dec 19 22:35:09 2006
@@ -40,23 +40,31 @@
private String rmNamespaceValue;
- private String addressingNamespaceValue;
-
-
- public Accept(String rmNamespaceValue, String addressingNamespaceValue) throws SandeshaException {
+ // Constructor used during parsing
+ public Accept(String rmNamespaceValue) throws SandeshaException {
if (!isNamespaceSupported(rmNamespaceValue))
throw new SandeshaException (SandeshaMessageHelper.getMessage(
SandeshaMessageKeys.unknownNamespace,
rmNamespaceValue));
- this.addressingNamespaceValue = addressingNamespaceValue;
this.rmNamespaceValue = rmNamespaceValue;
}
+
+ // Constructor used during writing
+ public Accept(String rmNamespace, AcksTo acksTo) throws SandeshaException {
+ this(rmNamespace);
+ this.acksTo = acksTo;
+ }
public String getNamespaceValue(){
return rmNamespaceValue;
}
-
+
+ public String getAddressingNamespaceValue() {
+ if(acksTo != null) return acksTo.getAddressingNamespaceValue();
+ return null;
+ }
+
public Object fromOMElement(OMElement element) throws OMException,AxisFault {
OMElement acceptPart = element.getFirstChildWithName(new QName(
@@ -66,7 +74,7 @@
SandeshaMessageKeys.noAcceptPartInElement,
element.toString()));
- acksTo = new AcksTo(rmNamespaceValue,addressingNamespaceValue);
+ acksTo = new AcksTo(rmNamespaceValue);
acksTo.fromOMElement(acceptPart);
return this;
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AcksTo.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AcksTo.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AcksTo.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AcksTo.java Tue Dec 19 22:35:09 2006
@@ -17,6 +17,8 @@
package org.apache.sandesha2.wsrm;
+import java.util.Iterator;
+
import javax.xml.namespace.QName;
import org.apache.axiom.om.OMElement;
@@ -42,25 +44,31 @@
private String rmNamespaceValue = null;
private String addressingNamespaceValue = null;
-
- public AcksTo (String rmNamespaceValue,String addressingNamespaceValue) throws AxisFault {
+
+ // Constructor used while parsing
+ public AcksTo (String rmNamespaceValue) throws AxisFault {
if (!isNamespaceSupported(rmNamespaceValue))
throw new SandeshaException (SandeshaMessageHelper.getMessage(
SandeshaMessageKeys.unknownSpec,
rmNamespaceValue));
this.rmNamespaceValue = rmNamespaceValue;
- this.addressingNamespaceValue = addressingNamespaceValue;
}
- public AcksTo (EndpointReference epr ,String rmNamespaceValue, String addressingNamespaceValue) throws AxisFault {
- this (rmNamespaceValue,addressingNamespaceValue);
+ // Constructor used while writing
+ public AcksTo (EndpointReference epr, String rmNamespaceValue, String addressingNamespaceValue) throws AxisFault {
+ this (rmNamespaceValue);
+ this.addressingNamespaceValue = addressingNamespaceValue;
this.epr = epr;
}
- public String getNamespaceValue(){
+ public String getNamespaceValue() {
return rmNamespaceValue;
}
+
+ public String getAddressingNamespaceValue() {
+ return addressingNamespaceValue;
+ }
public Object fromOMElement(OMElement element) throws OMException,AxisFault {
OMElement acksToPart = element.getFirstChildWithName(new QName(
@@ -73,6 +81,15 @@
epr = EndpointReferenceHelper.fromOM (acksToPart);
+ // Sniff the addressing namespace from the Address child of the EPR
+ Iterator children = acksToPart.getChildElements();
+ while(children.hasNext() && addressingNamespaceValue == null) {
+ OMElement child = (OMElement) children.next();
+ if("Address".equals(child.getLocalName())) {
+ addressingNamespaceValue = child.getNamespace().getNamespaceURI();
+ }
+ }
+
return this;
}
@@ -96,10 +113,6 @@
return epr;
}
- public void setAddress(EndpointReference epr) {
- this.epr = epr;
- }
-
public boolean isNamespaceSupported (String namespaceName) {
if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
return true;
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Address.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Address.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Address.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Address.java Tue Dec 19 22:35:09 2006
@@ -1,8 +1,18 @@
/*
- * Created on Sep 1, 2005
+ * Copyright 2005-2006 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
*
- * TODO To change the template for this generated file go to
- * Window - Preferences - Java - Code Style - Code Templates
*/
package org.apache.sandesha2.wsrm;
@@ -18,7 +28,7 @@
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
/**
- * Represents an Address element.
+ * Represents an Address element, that is contained within the MakeConnection message.
*/
public class Address implements IOMRMElement {
@@ -81,9 +91,6 @@
}
public boolean isNamespaceSupported (String namespaceName) {
- if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
- return true;
-
if (Sandesha2Constants.SPEC_2006_08.NS_URI.equals(namespaceName))
return true;
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequence.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequence.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequence.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequence.java Tue Dec 19 22:35:09 2006
@@ -47,31 +47,35 @@
private String rmNamespaceValue = null;
- private String addressingNamespaceValue = null;
-
private String secNamespaceValue = null;
private OMElement securityTokenReference = null;
- public CreateSequence(String rmNamespaceValue,String addressingNamespaceValue) throws SandeshaException {
+ // Constructor used while parsing
+ public CreateSequence(String rmNamespaceValue) throws SandeshaException {
if (!isNamespaceSupported(rmNamespaceValue))
throw new SandeshaException (SandeshaMessageHelper.getMessage(
SandeshaMessageKeys.unknownSpec,
rmNamespaceValue));
this.rmNamespaceValue = rmNamespaceValue;
- this.addressingNamespaceValue = addressingNamespaceValue;
this.secNamespaceValue = SpecSpecificConstants.getSecurityNamespace(rmNamespaceValue);
}
- public CreateSequence (AcksTo acksTo,SOAPFactory factory,String rmNamespaceValue,String addressingNamespaceValue) throws SandeshaException {
- this (rmNamespaceValue,addressingNamespaceValue);
+ // Constructor used while writing
+ public CreateSequence (AcksTo acksTo,SOAPFactory factory,String rmNamespaceValue) throws SandeshaException {
+ this (rmNamespaceValue);
this.acksTo = acksTo;
}
public String getNamespaceValue() {
return rmNamespaceValue;
}
+
+ public String getAddressingNamespaceValue() {
+ if(acksTo != null) return acksTo.getAddressingNamespaceValue();
+ return null;
+ }
public Object fromOMElement(OMElement bodyElement) throws OMException,AxisFault {
@@ -83,14 +87,13 @@
SandeshaMessageKeys.noCreateSeqPartInElement,
bodyElement.toString()));
- acksTo = new AcksTo(rmNamespaceValue,addressingNamespaceValue);
+ acksTo = new AcksTo(rmNamespaceValue);
acksTo.fromOMElement(createSequencePart);
OMElement offerPart = createSequencePart.getFirstChildWithName(new QName(rmNamespaceValue,
Sandesha2Constants.WSRM_COMMON.SEQUENCE_OFFER));
if (offerPart != null) {
sequenceOffer = new SequenceOffer(rmNamespaceValue);
- sequenceOffer.setAddressingNamespace(addressingNamespaceValue);
sequenceOffer.fromOMElement(createSequencePart);
}
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java Tue Dec 19 22:35:09 2006
@@ -45,16 +45,13 @@
private String rmNamespaceValue = null;
- private String addressingNamespaceValue = null;
-
- public CreateSequenceResponse(String rmNamespaceValue, String addressingNamespaceValue) throws SandeshaException {
+ public CreateSequenceResponse(String rmNamespaceValue) throws SandeshaException {
if (!isNamespaceSupported(rmNamespaceValue))
throw new SandeshaException (SandeshaMessageHelper.getMessage(
SandeshaMessageKeys.unknownSpec,
rmNamespaceValue));
this.rmNamespaceValue = rmNamespaceValue;
- this.addressingNamespaceValue = addressingNamespaceValue;
}
public String getNamespaceValue() {
@@ -91,7 +88,7 @@
new QName(rmNamespaceValue,
Sandesha2Constants.WSRM_COMMON.ACCEPT));
if (acceptPart != null) {
- accept = new Accept(rmNamespaceValue,addressingNamespaceValue);
+ accept = new Accept(rmNamespaceValue);
accept.fromOMElement(createSeqResponsePart);
}
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Endpoint.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Endpoint.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Endpoint.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/Endpoint.java Tue Dec 19 22:35:09 2006
@@ -21,18 +21,20 @@
private String addressingNamespaceValue = null;
- public Endpoint (String rmNamespaceValue,String addressingNamespaceValue) throws AxisFault {
+ // Constructor used while parsing
+ public Endpoint (String rmNamespaceValue) throws AxisFault {
if (!isNamespaceSupported(rmNamespaceValue))
throw new SandeshaException (SandeshaMessageHelper.getMessage(
SandeshaMessageKeys.unknownSpec,
rmNamespaceValue));
this.rmNamespaceValue = rmNamespaceValue;
- this.addressingNamespaceValue = addressingNamespaceValue;
}
+ // Constructor used while writing
public Endpoint (EndpointReference epr, String rmNamespaceValue, String addressingNamespaceValue) throws AxisFault {
- this (rmNamespaceValue,addressingNamespaceValue);
+ this (rmNamespaceValue);
+ this.addressingNamespaceValue = addressingNamespaceValue;
this.epr = epr;
}
@@ -64,7 +66,7 @@
OMFactory factory = element.getOMFactory();
QName endpoint = new QName (rmNamespaceValue,Sandesha2Constants.WSRM_COMMON.ENDPOINT, Sandesha2Constants.WSRM_COMMON.NS_PREFIX_RM);
- OMElement endpointElement = EndpointReferenceHelper.toOM (factory,epr, endpoint,addressingNamespaceValue);
+ OMElement endpointElement = EndpointReferenceHelper.toOM (factory, epr, endpoint, addressingNamespaceValue);
element.addChild(endpointElement);
return element;
@@ -74,14 +76,7 @@
return epr;
}
- public void setEPR(EndpointReference epr) {
- this.epr = epr;
- }
-
public boolean isNamespaceSupported (String namespaceName) {
- if (Sandesha2Constants.SPEC_2005_02.NS_URI.equals(namespaceName))
- return true;
-
if (Sandesha2Constants.SPEC_2006_08.NS_URI.equals(namespaceName))
return true;
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java Tue Dec 19 22:35:09 2006
@@ -25,13 +25,12 @@
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMException;
import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAPBody;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axiom.soap.SOAPHeader;
import org.apache.axis2.AxisFault;
-import org.apache.axis2.addressing.AddressingConstants;
import org.apache.sandesha2.Sandesha2Constants;
-import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.i18n.SandeshaMessageHelper;
import org.apache.sandesha2.i18n.SandeshaMessageKeys;
import org.apache.sandesha2.util.SOAPAbstractFactory;
@@ -60,7 +59,6 @@
private MessagePending messagePending = null;
private MakeConnection makeConnection = null;
private String rmNamespaceValue = null;
- private String addressingNamespaceValue = null;
public RMElements () {
sequenceAcknowledgements = new ArrayList ();
@@ -69,7 +67,6 @@
public RMElements (String addressingNamespace) {
this ();
- this.addressingNamespaceValue = addressingNamespace;
}
public void fromSOAPEnvelope(SOAPEnvelope envelope, String action) throws AxisFault {
@@ -93,17 +90,6 @@
return;
}
- String addressingNamespaceTmp = getAddressingNamespaceValue (envelope,action);
- if (addressingNamespaceTmp!=null) {
- addressingNamespaceValue = addressingNamespaceTmp;
- }
-
- if (addressingNamespaceValue==null) {
- String message = SandeshaMessageHelper.getMessage(
- SandeshaMessageKeys.unknownWSAVersion, envelope.toString());
- throw new SandeshaException (message);
- }
-
OMElement sequenceElement = envelope.getHeader().getFirstChildWithName(
new QName(rmNamespaceValue, Sandesha2Constants.WSRM_COMMON.SEQUENCE));
if (sequenceElement != null) {
@@ -116,7 +102,7 @@
Sandesha2Constants.WSRM_COMMON.CREATE_SEQUENCE));
if (createSeqElement != null) {
- createSequence = new CreateSequence(rmNamespaceValue,addressingNamespaceValue);
+ createSequence = new CreateSequence(rmNamespaceValue);
createSequence.fromOMElement(envelope.getBody());
}
@@ -125,7 +111,7 @@
new QName(rmNamespaceValue,
Sandesha2Constants.WSRM_COMMON.CREATE_SEQUENCE_RESPONSE));
if (createSeqResElement != null) {
- createSequenceResponse = new CreateSequenceResponse(rmNamespaceValue,addressingNamespaceValue);
+ createSequenceResponse = new CreateSequenceResponse(rmNamespaceValue);
createSequenceResponse.fromOMElement(envelope.getBody());
}
@@ -332,6 +318,7 @@
}
private String getRMNamespaceValue (SOAPEnvelope envelope, String action) {
+
SOAPHeader header = envelope.getHeader();
if (header!=null) {
ArrayList headers = header.getHeaderBlocksWithNSURI(Sandesha2Constants.SPEC_2005_02.NS_URI);
@@ -343,54 +330,34 @@
return Sandesha2Constants.SPEC_2006_08.NS_URI;
}
- //rm control messages with parts in the body will be identified by the wsa:action.
- if (action==null)
- return null;
-
- if (action.equals(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_CREATE_SEQUENCE))
- return Sandesha2Constants.SPEC_2005_02.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_CREATE_SEQUENCE_RESPONSE))
- return Sandesha2Constants.SPEC_2005_02.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_SEQUENCE_ACKNOWLEDGEMENT))
- return Sandesha2Constants.SPEC_2005_02.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2005_02.Actions.ACTION_TERMINATE_SEQUENCE))
- return Sandesha2Constants.SPEC_2005_02.NS_URI;
-
- if (action.equals(Sandesha2Constants.SPEC_2006_08.Actions.ACTION_CREATE_SEQUENCE))
- return Sandesha2Constants.SPEC_2006_08.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2006_08.Actions.ACTION_CREATE_SEQUENCE_RESPONSE))
- return Sandesha2Constants.SPEC_2006_08.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2006_08.Actions.ACTION_SEQUENCE_ACKNOWLEDGEMENT))
- return Sandesha2Constants.SPEC_2006_08.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2006_08.Actions.ACTION_TERMINATE_SEQUENCE))
- return Sandesha2Constants.SPEC_2006_08.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2006_08.Actions.ACTION_CLOSE_SEQUENCE))
- return Sandesha2Constants.SPEC_2006_08.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2006_08.Actions.ACTION_TERMINATE_SEQUENCE_RESPONSE))
- return Sandesha2Constants.SPEC_2006_08.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2006_08.Actions.ACTION_CLOSE_SEQUENCE_RESPONSE))
- return Sandesha2Constants.SPEC_2006_08.NS_URI;
- if (action.equals(Sandesha2Constants.SPEC_2006_08.Actions.ACTION_MAKE_CONNECTION))
- return Sandesha2Constants.SPEC_2006_08.NS_URI;
-
- return null; //a version could not be found
- }
-
- private String getAddressingNamespaceValue (SOAPEnvelope envelope, String action) {
- SOAPHeader header = envelope.getHeader();
- if (header!=null) {
- ArrayList headers = header.getHeaderBlocksWithNSURI(AddressingConstants.Submission.WSA_NAMESPACE);
- if (headers!=null && headers.size()>0)
- return AddressingConstants.Submission.WSA_NAMESPACE;
+ //rm control messages with parts in the body will be identified by the wsa:action,
+ //except when ws-addressing headers are turned off
+ if (action!=null) {
+ if(action.startsWith(Sandesha2Constants.SPEC_2005_02.NS_URI)) {
+ return Sandesha2Constants.SPEC_2005_02.NS_URI;
+ }
- headers = header.getHeaderBlocksWithNSURI(AddressingConstants.Final.WSA_NAMESPACE);
- if (headers!=null && headers.size()>0)
- return AddressingConstants.Final.WSA_NAMESPACE;
+ if (action.startsWith(Sandesha2Constants.SPEC_2006_08.NS_URI))
+ return Sandesha2Constants.SPEC_2006_08.NS_URI;
+ }
+
+ // As a final resort check the body namespace
+ SOAPBody body = envelope.getBody();
+ if(body != null) {
+ Iterator elements = body.getChildElements();
+ if(elements.hasNext()) {
+ OMElement firstBodyElement = (OMElement) elements.next();
+ String namespace = firstBodyElement.getNamespace().getNamespaceURI();
+ if(namespace.equals(Sandesha2Constants.SPEC_2005_02.NS_URI) ||
+ namespace.equals(Sandesha2Constants.SPEC_2006_08.NS_URI) ) {
+ return namespace;
+ }
+ }
}
return null; //a version could not be found
}
-
+
public CloseSequence getCloseSequence() {
return closeSequence;
}
@@ -413,10 +380,6 @@
public void setUsesSequenceSTR(UsesSequenceSTR header) {
usesSequenceSTR = header;
- }
-
- public String getAddressingNamespaceValue() {
- return addressingNamespaceValue;
}
public MakeConnection getMakeConnection() {
Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceOffer.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceOffer.java?view=diff&rev=488931&r1=488930&r2=488931
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceOffer.java (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceOffer.java Tue Dec 19 22:35:09 2006
@@ -44,8 +44,6 @@
private String namespaceValue = null;
- private String addressingNamespace = null;
-
public SequenceOffer(String namespaceValue) throws SandeshaException {
if (!isNamespaceSupported(namespaceValue))
throw new SandeshaException (SandeshaMessageHelper.getMessage(
@@ -82,12 +80,7 @@
OMElement endpointPart = sequenceOfferPart
.getFirstChildWithName(new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.ENDPOINT));
if (endpointPart != null) {
- if (addressingNamespace==null) {
- String message = SandeshaMessageHelper.getMessage(SandeshaMessageKeys.addressingNamespaceNotSet);
- throw new SandeshaException (message);
- }
-
- endpoint = new Endpoint (namespaceValue, addressingNamespace);
+ endpoint = new Endpoint (namespaceValue);
endpoint.fromOMElement (endpointPart);
}
@@ -154,12 +147,4 @@
return false;
}
- public String getAddressingNamespace() {
- return addressingNamespace;
- }
-
- public void setAddressingNamespace(String addressingNamespace) {
- this.addressingNamespace = addressingNamespace;
- }
-
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org