You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ch...@apache.org on 2006/03/31 06:15:11 UTC
svn commit: r390319 [1/3] - in
/webservices/sandesha/trunk/src/org/apache/sandesha2: ./ client/ handlers/
msgprocessors/ storage/ storage/beanmanagers/ storage/beans/
storage/inmemory/ util/ workers/ wsrm/
Author: chamikara
Date: Thu Mar 30 20:15:07 2006
New Revision: 390319
URL: http://svn.apache.org/viewcvs?rev=390319&view=rev
Log:
Support for both addressing versions (Submission and Final).
Bug fixes
Cleaned the code
Modified:
webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java
webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java
webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java
webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java
webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java
webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SequenceManager.java
webservices/sandesha/trunk/src/org/apache/sandesha2/workers/InOrderInvoker.java
webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Accept.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcksTo.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Address.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequence.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/AcknowledgementManager.java Thu Mar 30 20:15:07 2006
@@ -26,14 +26,13 @@
import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisOperationFactory;
-import org.apache.axis2.description.Parameter;
-import org.apache.axis2.engine.AxisEngine;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.storage.StorageManager;
@@ -44,13 +43,10 @@
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
import org.apache.sandesha2.transport.Sandesha2TransportOutDesc;
import org.apache.sandesha2.util.MsgInitializer;
-import org.apache.sandesha2.util.PropertyManager;
import org.apache.sandesha2.util.RMMsgCreator;
import org.apache.sandesha2.util.SOAPAbstractFactory;
-import org.apache.sandesha2.util.SandeshaPropertyBean;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
-import org.apache.sandesha2.wsrm.Sequence;
import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
/**
@@ -70,46 +66,24 @@
* @param applicationRMMsgContext
* @throws SandeshaException
*/
- public static void piggybackAckIfPresent(
- RMMsgContext applicationRMMsgContext) throws SandeshaException {
- ConfigurationContext configurationContext = applicationRMMsgContext
- .getMessageContext().getConfigurationContext();
- StorageManager storageManager = SandeshaUtil
- .getSandeshaStorageManager(configurationContext);
-
- SenderBeanMgr retransmitterBeanMgr = storageManager
- .getRetransmitterBeanMgr();
- SequencePropertyBeanMgr sequencePropertyBeanMgr = storageManager
- .getSequencePropretyBeanMgr();
-
- SenderBean findBean = new SenderBean();
-
- Sequence sequence = (Sequence) applicationRMMsgContext
- .getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
- if (sequence == null) {
- String message = "Application message does not contain a sequence part";
- log.debug(message);
- throw new SandeshaException(message);
- }
+ public static void piggybackAcksIfPresent(
+ RMMsgContext rmMessageContext) throws SandeshaException {
+
+ ConfigurationContext configurationContext = rmMessageContext.getConfigurationContext();
+ StorageManager storageManager = SandeshaUtil.getSandeshaStorageManager(configurationContext);
- String sequenceId = sequence.getIdentifier().getIdentifier();
+ SenderBeanMgr retransmitterBeanMgr = storageManager.getRetransmitterBeanMgr();
+ SequencePropertyBeanMgr sequencePropertyBeanMgr = storageManager.getSequencePropretyBeanMgr();
- SequencePropertyBean internalSequenceBean = sequencePropertyBeanMgr
- .retrieve(
- sequenceId,
- Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID);
- if (internalSequenceBean == null) {
- String message = "Temp Sequence is not set";
- log.debug(message);
- throw new SandeshaException(message);
- }
+ SenderBean findBean = new SenderBean();
- //String internalSequenceId = (String) internalSequenceBean.getValue();
+ String sequnceID = SandeshaUtil.getSequenceIDFromRMMessage (rmMessageContext);
+
findBean.setMessageType(Sandesha2Constants.MessageTypes.ACK);
findBean.setSend(true);
findBean.setReSend(false);
- String carrietTo = applicationRMMsgContext.getTo().getAddress();
+ String carrietTo = rmMessageContext.getTo().getAddress();
Collection collection = retransmitterBeanMgr.find(findBean);
@@ -125,20 +99,26 @@
//Piggybacking will happen only if the end of ack interval (timeToSend) is not reached.
MessageContext ackMsgContext = storageManager
- .retrieveMessageContext(ackBean
- .getMessageContextRefKey(),configurationContext);
+ .retrieveMessageContext(ackBean.getMessageContextRefKey(),configurationContext);
+ //wsa:To has to match for piggybacking.
String to = ackMsgContext.getTo().getAddress();
if (!carrietTo.equals(to)) {
continue piggybackLoop;
}
+ String ackSequenceID = ackBean.getSequenceID();
+
+ //sequenceID has to match for piggybacking
+ if (!ackSequenceID.equals(sequnceID)) {
+ continue piggybackLoop;
+ }
+
//deleting the ack entry.
retransmitterBeanMgr.delete(ackBean.getMessageID());
//Adding the ack to the application message
- RMMsgContext ackRMMsgContext = MsgInitializer
- .initializeMessage(ackMsgContext);
+ RMMsgContext ackRMMsgContext = MsgInitializer.initializeMessage(ackMsgContext);
if (ackRMMsgContext.getMessageType() != Sandesha2Constants.MessageTypes.ACK) {
String message = "Invalid ack message entry";
log.debug(message);
@@ -147,11 +127,11 @@
SequenceAcknowledgement sequenceAcknowledgement = (SequenceAcknowledgement) ackRMMsgContext
.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
- applicationRMMsgContext.setMessagePart(
+ rmMessageContext.setMessagePart(
Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT,
sequenceAcknowledgement);
- applicationRMMsgContext.addSOAPEnvelope();
+ rmMessageContext.addSOAPEnvelope();
break piggybackLoop;
}
}
@@ -246,6 +226,9 @@
MessageContext ackMsgCtx = SandeshaUtil.createNewRelatedMessageContext(
referenceRMMessage, ackOperation);
+ ackMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+ referenceMsg.getProperty(AddressingConstants.WS_ADDRESSING_VERSION)); //TODO do this in the RMMsgCreator
+
ackMsgCtx.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,"true");
@@ -270,8 +253,13 @@
//adding the SequenceAcknowledgement part.
RMMsgCreator.addAckMessage(ackRMMsgCtx, sequenceID);
+
+ ackMsgCtx.setProperty(MessageContext.TRANSPORT_IN,null);
- if (Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo.getAddress())) {
+ String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configurationContext);
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
+ if (anonymousURI.equals(acksTo.getAddress())) {
// AxisEngine engine = new AxisEngine(ackRMMsgCtx.getMessageContext()
// .getConfigurationContext());
@@ -298,6 +286,7 @@
referenceRMMessage.getMessageContext().setProperty(
Sandesha2Constants.ACK_WRITTEN, "true");
+ ackRMMsgCtx.getMessageContext().setServerSide(true);
return ackRMMsgCtx;
} else {
@@ -313,6 +302,7 @@
ackBean.setMessageContextRefKey(key);
ackBean.setMessageID(ackMsgCtx.getMessageID());
ackBean.setReSend(false);
+ ackBean.setSequenceID(sequenceID);
//this will be set to true in the sender.
ackBean.setSend(true);
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java Thu Mar 30 20:15:07 2006
@@ -22,9 +22,11 @@
import java.util.jar.Attributes.Name;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.addressing.RelatesTo;
import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.sandesha2.util.SOAPAbstractFactory;
@@ -51,6 +53,8 @@
private String rmNamespaceValue = null;
+ private String addressingNamespaceValue = null;
+
private String rmSpecVersion = null;
public RMMsgContext() {
@@ -222,13 +226,14 @@
return true;
}
- public AbstractContext getContext() {
+ public ConfigurationContext getConfigurationContext() {
if (msgContext == null)
return null;
return msgContext.getConfigurationContext();
}
+
public void setSOAPAction(String SOAPAction) {
msgContext.setSoapAction(SOAPAction);
}
@@ -267,5 +272,17 @@
public int getFlow () {
return msgContext.getFLOW();
+ }
+
+ public String getAddressingNamespaceValue() {
+ return addressingNamespaceValue;
+ }
+
+ public void setAddressingNamespaceValue(String addressingNamespaceValue) throws SandeshaException {
+ if (addressingNamespaceValue!=AddressingConstants.Submission.WSA_NAMESPACE &&
+ addressingNamespaceValue!=AddressingConstants.Final.WSA_NAMESPACE)
+ throw new SandeshaException ("Unknown addressing version");
+
+ this.addressingNamespaceValue = addressingNamespaceValue;
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPFaultEnvelopeCreator.java Thu Mar 30 20:15:07 2006
@@ -17,7 +17,9 @@
package org.apache.sandesha2;
-
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
import org.apache.axiom.om.OMConstants;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMNamespace;
@@ -30,8 +32,6 @@
import org.apache.axiom.soap.SOAPFaultSubCode;
import org.apache.axiom.soap.SOAPFaultText;
import org.apache.axiom.soap.SOAPFaultValue;
-import org.apache.axis2.AxisFault;
-import org.apache.axis2.context.MessageContext;
import org.apache.sandesha2.util.SOAPAbstractFactory;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.wsrm.FaultCode;
@@ -203,7 +203,8 @@
if (detailElement != null)
faultDetail.addChild(detailElement);
- faultMsgContext.setWSAAction(Sandesha2Constants.WSA.SOAP_FAULT_ACTION);
+
+ faultMsgContext.setWSAAction(AddressingConstants.Final.WSA_FAULT_ACTION);
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/Sandesha2Constants.java Thu Mar 30 20:15:07 2006
@@ -63,37 +63,39 @@
public interface SPEC_2005_10 {
- String NS_URI = "http://docs.oasis-open.org/ws-rx/wsrm/200510";
+ String NS_URI = "http://docs.oasis-open.org/ws-rx/wsrm/200602";
public interface Actions {
- String ACTION_CREATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequence";
+ String ACTION_CREATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CreateSequence";
- String ACTION_CREATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequenceResponse";
+ String ACTION_CREATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CreateSequenceResponse";
- String ACTION_SEQUENCE_ACKNOWLEDGEMENT = "http://docs.oasis-open.org/ws-rx/wsrm/200510/SequenceAcknowledgement";
+ String ACTION_SEQUENCE_ACKNOWLEDGEMENT = "http://docs.oasis-open.org/ws-rx/wsrm/200602/SequenceAcknowledgement";
- String ACTION_TERMINATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/TerminateSequence";
+ String ACTION_TERMINATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/TerminateSequence";
- String ACTION_TERMINATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/TerminateSequenceResponse";
+ String ACTION_TERMINATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/TerminateSequenceResponse";
- String ACTION_ACK_REQUEST = "http://docs.oasis-open.org/ws-rx/wsrm/200510/AckRequested";
+ String ACTION_ACK_REQUEST = "http://docs.oasis-open.org/ws-rx/wsrm/200602/AckRequested";
- String ACTION_CLOSE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CloseSequence";
+ String ACTION_CLOSE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CloseSequence";
- String ACTION_CLOSE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CloseSequenceResponse";
+ String ACTION_CLOSE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CloseSequenceResponse";
- String SOAP_ACTION_CREATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequence";
+ String SOAP_ACTION_CREATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CreateSequence";
- String SOAP_ACTION_CREATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CreateSequenceResponse";
+ String SOAP_ACTION_CREATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CreateSequenceResponse";
- String SOAP_ACTION_SEQUENCE_ACKNOWLEDGEMENT = "http://docs.oasis-open.org/ws-rx/wsrm/200510/SequenceAcknowledgement";
+ String SOAP_ACTION_SEQUENCE_ACKNOWLEDGEMENT = "http://docs.oasis-open.org/ws-rx/wsrm/200602/SequenceAcknowledgement";
- String SOAP_ACTION_TERMINATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/TerminateSequence";
+ String SOAP_ACTION_TERMINATE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/TerminateSequence";
- String SOAP_ACTION_ACK_REQUEST = "http://docs.oasis-open.org/ws-rx/wsrm/200510/AckRequested";
+ String SOAP_ACTION_TERMINATE_SEQUENCE_RESPONSE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/TerminateSequenceResponse";
- String SOAP_ACTION_CLOSE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200510/CloseSequence";
+ String SOAP_ACTION_ACK_REQUEST = "http://docs.oasis-open.org/ws-rx/wsrm/200602/AckRequested";
+
+ String SOAP_ACTION_CLOSE_SEQUENCE = "http://docs.oasis-open.org/ws-rx/wsrm/200602/CloseSequence";
}
}
@@ -153,15 +155,13 @@
}
public interface WSA {
- String NS_URI_ANONYMOUS = AddressingConstants.Final.WSA_ANONYMOUS_URL; // "http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous";
-
- String NS_URI_ADDRESSING = AddressingConstants.Final.WSA_NAMESPACE; //"http://schemas.xmlsoap.org/ws/2004/08/addressing";
-
+
String NS_PREFIX_ADDRESSING = "wsa";
String ADDRESS = "Address";
- String SOAP_FAULT_ACTION = "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
+// String SOAP_FAULT_ACTION = "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
+
}
public interface WSP {
@@ -226,6 +226,9 @@
// property. This is used as the
// sequenceId to share data b/w
// sequences
+
+ //Addressing version of a sequence. All messages of a sequence should have this addressing versio
+ String ADDRESSING_NAMESPACE_VALUE = "AddressingNamespaceValue";
//For incoming sequences this gives the msg no's of the messages that were
//received (may be an ack was sent - depending on the policy)
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SpecSpecificConstants.java Thu Mar 30 20:15:07 2006
@@ -1,5 +1,7 @@
package org.apache.sandesha2;
+import org.apache.axis2.addressing.AddressingConstants;
+
public class SpecSpecificConstants {
private static String unknownSpecErrorMessage = "Unknown specification version";
@@ -49,6 +51,13 @@
throw new SandeshaException (unknownSpecErrorMessage);
}
+ public static String getTerminateSequenceResponseAction (String specVersion) throws SandeshaException {
+ if (Sandesha2Constants.SPEC_VERSIONS.WSRX.equals(specVersion))
+ return Sandesha2Constants.SPEC_2005_10.Actions.ACTION_TERMINATE_SEQUENCE_RESPONSE;
+ else
+ throw new SandeshaException (unknownSpecErrorMessage);
+ }
+
public static String getCloseSequenceAction (String specVersion) throws SandeshaException {
if (Sandesha2Constants.SPEC_VERSIONS.WSRM.equals(specVersion))
throw new SandeshaException ("This rm spec version does not define a sequenceClose action");
@@ -57,6 +66,15 @@
else
throw new SandeshaException (unknownSpecErrorMessage);
}
+
+ public static String getCloseSequenceResponseAction (String specVersion) throws SandeshaException {
+ if (Sandesha2Constants.SPEC_VERSIONS.WSRM.equals(specVersion))
+ throw new SandeshaException ("This rm spec version does not define a sequenceClose action");
+ else if (Sandesha2Constants.SPEC_VERSIONS.WSRX.equals(specVersion))
+ return Sandesha2Constants.SPEC_2005_10.Actions.ACTION_CLOSE_SEQUENCE_RESPONSE;
+ else
+ throw new SandeshaException (unknownSpecErrorMessage);
+ }
public static String getAckRequestAction (String specVersion) throws SandeshaException {
if (Sandesha2Constants.SPEC_VERSIONS.WSRM.equals(specVersion))
@@ -103,6 +121,13 @@
throw new SandeshaException (unknownSpecErrorMessage);
}
+ public static String getTerminateSequenceResponseSOAPAction (String specVersion) throws SandeshaException {
+ if (Sandesha2Constants.SPEC_VERSIONS.WSRX.equals(specVersion))
+ return Sandesha2Constants.SPEC_2005_10.Actions.SOAP_ACTION_TERMINATE_SEQUENCE_RESPONSE;
+ else
+ throw new SandeshaException (unknownSpecErrorMessage);
+ }
+
public static String getAckRequestSOAPAction (String specVersion) throws SandeshaException {
if (Sandesha2Constants.SPEC_VERSIONS.WSRM.equals(specVersion))
throw new SandeshaException ("this spec version does not define a ackRequest SOAP action");
@@ -169,4 +194,23 @@
public static String getDefaultSpecVersion () {
return Sandesha2Constants.SPEC_VERSIONS.WSRM;
}
+
+ public static String getAddressingAnonymousURI (String addressingNSURI) throws SandeshaException {
+ if (AddressingConstants.Submission.WSA_NAMESPACE.equals(addressingNSURI))
+ return AddressingConstants.Submission.WSA_ANONYMOUS_URL;
+ else if (AddressingConstants.Final.WSA_NAMESPACE.equals(addressingNSURI))
+ return AddressingConstants.Final.WSA_ANONYMOUS_URL;
+ else
+ throw new SandeshaException ("Unknown addressing version");
+ }
+
+ public static String getAddressingFaultAction (String addressingNSURI) throws SandeshaException {
+ if (AddressingConstants.Submission.WSA_NAMESPACE.equals(addressingNSURI))
+ return "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault"; //this is not available in addressing constants )-:
+ else if (AddressingConstants.Final.WSA_NAMESPACE.equals(addressingNSURI))
+ return AddressingConstants.Final.WSA_FAULT_ACTION;
+ else
+ throw new SandeshaException ("Unknown addressing version");
+ }
+
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/TerminateManager.java Thu Mar 30 20:15:07 2006
@@ -279,9 +279,12 @@
String internalSequenceID = internalSequenceBean.getValue();
SequencePropertyBean acksToBean = sequencePropertyBeanMgr.retrieve(internalSequenceID,Sandesha2Constants.SequenceProperties.ACKS_TO_EPR);
+ String addressingNamespace = SandeshaUtil.getSequenceProperty(internalSequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configContext);
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespace);
+
if (acksToBean!=null) {
String acksTo = acksToBean.getValue();
- if (acksTo!=null && !Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo)) {
+ if (acksTo!=null && !anonymousURI.equals(acksTo)) {
stopListnerForAsyncAcks = true;
}
}
@@ -331,120 +334,6 @@
SandeshaUtil.stopSenderForTheSequence(internalSequenceId);
}
-// public void terminateSequence (String outSequenceID,String internalSequenceID,ConfigurationContext configCtx) {
-//
-//
-// StorageManager storageManager = SandeshaUtil
-// .getSandeshaStorageManager(configCtx);
-//
-// Transaction addTerminateSeqTransaction = storageManager.getTransaction();
-//
-// SequencePropertyBeanMgr seqPropMgr = storageManager
-// .getSequencePropretyBeanMgr();
-//
-// SequencePropertyBean terminated = seqPropMgr.retrieve(outSequenceID,
-// Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
-//
-// if (terminated != null && terminated.getValue() != null
-// && "true".equals(terminated.getValue())) {
-// String message = "Terminate was added previously.";
-// log.info(message);
-// return;
-// }
-//
-// RMMsgContext terminateRMMessage = RMMsgCreator
-// .createTerminateSequenceMessage(outSequenceID);
-// terminateRMMessage.setFlow(MessageContext.OUT_FLOW);
-// terminateRMMessage.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,"true");
-//
-// SequencePropertyBean toBean = seqPropMgr.retrieve(internalSequenceID,
-// Sandesha2Constants.SequenceProperties.TO_EPR);
-//
-// EndpointReference toEPR = new EndpointReference ( toBean.getValue());
-// if (toEPR == null) {
-// String message = "To EPR has an invalid value";
-// throw new SandeshaException(message);
-// }
-//
-// terminateRMMessage.setTo(new EndpointReference(toEPR.getAddress()));
-// terminateRMMessage.setFrom(new EndpointReference(
-// Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-// terminateRMMessage.setFaultTo(new EndpointReference(
-// Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-//
-// String rmVersion = SandeshaUtil.getRMVersion(internalSequenceID,configCtx);
-// if (rmVersion==null)
-// throw new SandeshaException ("Cant find the rmVersion of the given message");
-// terminateRMMessage.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(rmVersion));
-// terminateRMMessage.setSOAPAction(SpecSpecificConstants.getTerminateSequenceSOAPAction(rmVersion));
-//
-// SequencePropertyBean transportToBean = seqPropMgr.retrieve(internalSequenceID,Sandesha2Constants.SequenceProperties.TRANSPORT_TO);
-// if (transportToBean!=null) {
-// terminateRMMessage.setProperty(MessageContextConstants.TRANSPORT_URL,transportToBean.getValue());
-// }
-//
-// try {
-// terminateRMMessage.addSOAPEnvelope();
-// } catch (AxisFault e) {
-// throw new SandeshaException(e.getMessage());
-// }
-//
-// String key = SandeshaUtil.getUUID();
-//
-// SenderBean terminateBean = new SenderBean();
-// terminateBean.setMessageContextRefKey(key);
-//
-//
-// storageManager.storeMessageContext(key,terminateRMMessage.getMessageContext());
-//
-//
-// //Set a retransmitter lastSentTime so that terminate will be send with
-// // some delay.
-// //Otherwise this get send before return of the current request (ack).
-// //TODO: refine the terminate delay.
-// terminateBean.setTimeToSend(System.currentTimeMillis()
-// + Sandesha2Constants.TERMINATE_DELAY);
-//
-// terminateBean.setMessageID(terminateRMMessage.getMessageId());
-//
-// //this will be set to true at the sender.
-// terminateBean.setSend(true);
-//
-// terminateRMMessage.getMessageContext().setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING,
-// Sandesha2Constants.VALUE_FALSE);
-//
-// terminateBean.setReSend(false);
-//
-// SenderBeanMgr retramsmitterMgr = storageManager
-// .getRetransmitterBeanMgr();
-//
-// retramsmitterMgr.insert(terminateBean);
-//
-// SequencePropertyBean terminateAdded = new SequencePropertyBean();
-// terminateAdded.setName(Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
-// terminateAdded.setSequenceID(outSequenceID);
-// terminateAdded.setValue("true");
-//
-// seqPropMgr.insert(terminateAdded);
-//
-// //This should be dumped to the storage by the sender
-// TransportOutDescription transportOut = terminateRMMessage.getMessageContext().getTransportOut();
-// terminateRMMessage.setProperty(Sandesha2Constants.ORIGINAL_TRANSPORT_OUT_DESC,transportOut);
-// terminateRMMessage.setProperty(Sandesha2Constants.MESSAGE_STORE_KEY,key);
-// terminateRMMessage.setProperty(Sandesha2Constants.SET_SEND_TO_TRUE,Sandesha2Constants.VALUE_TRUE);
-// terminateRMMessage.getMessageContext().setTransportOut(new Sandesha2TransportOutDesc ());
-// addTerminateSeqTransaction.commit();
-//
-// AxisEngine engine = new AxisEngine (incomingAckRMMsg.getMessageContext().getConfigurationContext());
-// try {
-// engine.send(terminateRMMessage.getMessageContext());
-// } catch (AxisFault e) {
-// throw new SandeshaException (e.getMessage());
-// }
-//
-// }
-
-
public static void addTerminateSequenceMessage(RMMsgContext referenceMessage,
String outSequenceId, String internalSequenceId)
throws SandeshaException {
@@ -484,10 +373,12 @@
}
terminateRMMessage.setTo(new EndpointReference(toEPR.getAddress()));
- terminateRMMessage.setFrom(new EndpointReference(
- Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
- terminateRMMessage.setFaultTo(new EndpointReference(
- Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
+
+ String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(internalSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configurationContext);
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
+ terminateRMMessage.setFrom(new EndpointReference(anonymousURI));
+ terminateRMMessage.setFaultTo(new EndpointReference(anonymousURI));
String rmVersion = SandeshaUtil.getRMVersion(internalSequenceId,configurationContext);
if (rmVersion==null)
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/client/Sandesha2ClientAPI.java Thu Mar 30 20:15:07 2006
@@ -22,14 +22,11 @@
import javax.xml.namespace.QName;
-import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
-import org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.client.Options;
import org.apache.axis2.client.ServiceClient;
+import org.apache.axis2.client.async.AsyncResult;
+import org.apache.axis2.client.async.Callback;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -51,6 +48,12 @@
import org.apache.sandesha2.util.SequenceManager;
import org.apache.sandesha2.wsrm.Identifier;
import org.apache.sandesha2.wsrm.TerminateSequence;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.impl.llom.soap11.SOAP11Factory;
+import org.apache.axiom.soap.impl.llom.soap12.SOAP12Factory;
/**
* Contains all the Sandesha2Constants of Sandesha2.
@@ -389,7 +392,8 @@
String oldSequenceKey = (String) options.getProperty(Sandesha2ClientAPI.SEQUENCE_KEY);
options.setProperty(Sandesha2ClientAPI.SEQUENCE_KEY,sequenceKey);
try {
- serviceClient.fireAndForget(dummyEnvelope.getBody().getFirstChildWithName(new QName (rmNamespaceValue,Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE)));
+ DummyCallback callback = new Sandesha2ClientAPI().new DummyCallback();
+ serviceClient.fireAndForget(dummyEnvelope.getBody().getFirstChildWithName(new QName (rmNamespaceValue,Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE)));
} catch (AxisFault e) {
throw new SandeshaException ("Could not invoke the service client", e);
}
@@ -397,7 +401,22 @@
if (oldSequenceKey!=null)
options.setProperty(Sandesha2ClientAPI.SEQUENCE_KEY,oldSequenceKey);
- options.setAction(oldAction);
+// options.setAction(oldAction);
+ }
+
+ private class DummyCallback extends Callback {
+
+ public void onComplete(AsyncResult result) {
+ // TODO Auto-generated method stub
+ System.out.println("Error: dummy callback was called");
+ }
+
+ public void onError(Exception e) {
+ // TODO Auto-generated method stub
+ System.out.println("Error: dummy callback received an error");
+
+ }
+
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaGlobalInHandler.java Thu Mar 30 20:15:07 2006
@@ -22,7 +22,6 @@
import javax.xml.namespace.QName;
-import org.apache.axiom.soap.SOAPBody;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.RelatesTo;
import org.apache.axis2.context.ConfigurationContext;
@@ -30,6 +29,7 @@
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axiom.soap.SOAPBody;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.RMMsgContext;
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java Thu Mar 30 20:15:07 2006
@@ -20,23 +20,57 @@
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.context.AbstractContext;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
import org.apache.axis2.context.OperationContextFactory;
+import org.apache.axis2.context.ServiceContext;
+import org.apache.axis2.description.AxisOperationFactory;
import org.apache.axis2.description.AxisService;
+import org.apache.axis2.description.Parameter;
+import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.transport.TransportSender;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SpecSpecificConstants;
import org.apache.sandesha2.client.Sandesha2ClientAPI;
import org.apache.sandesha2.msgprocessors.ApplicationMsgProcessor;
import org.apache.sandesha2.msgprocessors.MsgProcessor;
import org.apache.sandesha2.msgprocessors.MsgProcessorFactory;
import org.apache.sandesha2.storage.StorageManager;
+import org.apache.sandesha2.storage.Transaction;
+import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beans.CreateSeqBean;
+import org.apache.sandesha2.storage.beans.SenderBean;
+import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.transport.Sandesha2TransportOutDesc;
import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.PropertyManager;
+import org.apache.sandesha2.util.RMMsgCreator;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SandeshaPropertyBean;
import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.util.SequenceManager;
+import org.apache.sandesha2.wsrm.AckRequested;
+import org.apache.sandesha2.wsrm.CreateSequence;
+import org.apache.sandesha2.wsrm.Identifier;
+import org.apache.sandesha2.wsrm.LastMessage;
+import org.apache.sandesha2.wsrm.MessageNumber;
import org.apache.sandesha2.wsrm.Sequence;
+import org.apache.sandesha2.wsrm.SequenceOffer;
+import org.apache.axiom.soap.SOAPBody;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.wsdl.WSDLConstants;
/**
* This is invoked in the outFlow of an RM endpoint
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java Thu Mar 30 20:15:07 2006
@@ -21,10 +21,9 @@
import java.util.Collection;
import java.util.Iterator;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.Constants;
+import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
@@ -38,6 +37,7 @@
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.Sandesha2Constants;
import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SpecSpecificConstants;
import org.apache.sandesha2.storage.StorageManager;
import org.apache.sandesha2.storage.Transaction;
import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
@@ -52,6 +52,8 @@
import org.apache.sandesha2.util.SandeshaPropertyBean;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.wsrm.AckRequested;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
/**
* Responsible for processing an incoming Application message.
@@ -70,6 +72,10 @@
throw new SandeshaException ("Message identified as of type ackRequested does not have an AckRequeted element");
}
+ //settting must understand to false.
+ ackRequested.setMustUnderstand(false);
+ rmMsgCtx.addSOAPEnvelope();
+
MessageContext msgContext = rmMsgCtx.getMessageContext();
String sequenceID = ackRequested.getIdentifier().getIdentifier();
@@ -131,8 +137,16 @@
ackMsgCtx.setTo(acksTo);
ackMsgCtx.setReplyTo(msgContext.getTo());
RMMsgCreator.addAckMessage(ackRMMsgCtx, sequenceID);
+ ackRMMsgCtx.getMessageContext().setServerSide(true);
+ ackMsgCtx.setProperty(AddressingConstants.WS_ADDRESSING_VERSION,
+ msgContext.getProperty(AddressingConstants.WS_ADDRESSING_VERSION)); //TODO do this in the RMMsgCreator
+
+// RMMsgContext ackRMMsgCtx = rmm
- if (Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo.getAddress())) {
+ String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configurationContext);
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
+ if (anonymousURI.equals(acksTo.getAddress())) {
AxisEngine engine = new AxisEngine(ackRMMsgCtx.getMessageContext()
.getConfigurationContext());
@@ -179,6 +193,7 @@
ackBean.setMessageContextRefKey(key);
ackBean.setMessageID(ackMsgCtx.getMessageID());
ackBean.setReSend(false);
+ ackBean.setSequenceID(sequenceID);
//this will be set to true in the sender.
ackBean.setSend(true);
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java Thu Mar 30 20:15:07 2006
@@ -77,13 +77,6 @@
MessageContext msgCtx = rmMsgCtx.getMessageContext();
ConfigurationContext configCtx = msgCtx.getConfigurationContext();
- AbstractContext context = rmMsgCtx.getContext();
- if (context == null) {
- String message = "Context is null";
- log.debug(message);
- throw new SandeshaException(message);
- }
-
//setting mustUnderstand to false.
sequenceAck.setMustUnderstand(false);
rmMsgCtx.addSOAPEnvelope();
@@ -231,27 +224,7 @@
String str = ackedMessagesList.toString();
allCompletedMsgsBean.setValue(str);
- seqPropMgr.update(allCompletedMsgsBean);
-
- //If all messages up to last message have been acknowledged. Add terminate Sequence message.
-// SequencePropertyBean lastOutMsgBean = seqPropMgr.retrieve(
-// internalSequenceId, Sandesha2Constants.SequenceProperties.LAST_OUT_MESSAGE);
-// if (lastOutMsgBean != null) {
-// Long lastOutMsgNoLng = new Long (lastOutMsgBean.getValue());
-// if (lastOutMsgNoLng == null) {
-// String message = "Invalid object set for the Last Out Message";
-// log.debug(message);
-// throw new SandeshaException(message);
-// }
-//
-// long lastOutMessageNo = lastOutMsgNoLng.longValue();
-// if (lastOutMessageNo <= 0) {
-// String message = "Invalid value set for the last out message";
-// log.debug(message);
-// throw new SandeshaException(message);
-// }
-
-
+ seqPropMgr.update(allCompletedMsgsBean);
//commiting transaction
ackTransaction.commit();
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -101,7 +101,11 @@
}
//TODO process embedded ack requests
-
+ AckRequested ackRequested = (AckRequested) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);
+ if (ackRequested!=null) {
+ ackRequested.setMustUnderstand(false);
+ rmMsgCtx.addSOAPEnvelope();
+ }
//Processing the application message.
MessageContext msgCtx = rmMsgCtx.getMessageContext();
@@ -147,8 +151,7 @@
return;
}
- SequencePropertyBeanMgr seqPropMgr = storageManager
- .getSequencePropretyBeanMgr();
+ SequencePropertyBeanMgr seqPropMgr = storageManager.getSequencePropretyBeanMgr();
//setting acked msg no range
Sequence sequence = (Sequence) rmMsgCtx
@@ -381,8 +384,6 @@
MessageContext msgCtx = rmMsgCtx.getMessageContext();
- SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil
- .getSOAPVersion(msgCtx.getEnvelope()));
StorageManager storageManager = SandeshaUtil
.getSandeshaStorageManager(msgCtx.getConfigurationContext());
SequencePropertyBeanMgr seqPropMgr = storageManager
@@ -430,6 +431,7 @@
}
public void processOutMessage(RMMsgContext rmMsgCtx) throws SandeshaException {
+
MessageContext msgContext = rmMsgCtx.getMessageContext();
ConfigurationContext configContext = msgContext .getConfigurationContext();
@@ -664,6 +666,9 @@
SequencePropertyBean responseCreateSeqAdded = seqPropMgr
.retrieve(internalSequenceId,Sandesha2Constants.SequenceProperties.OUT_CREATE_SEQUENCE_SENT);
+ String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(internalSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configContext);
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
if (responseCreateSeqAdded == null) {
responseCreateSeqAdded = new SequencePropertyBean(
internalSequenceId,Sandesha2Constants.SequenceProperties.OUT_CREATE_SEQUENCE_SENT,"true");
@@ -692,10 +697,10 @@
} else {
if (acksTo == null)
- acksTo = Sandesha2Constants.WSA.NS_URI_ANONYMOUS;
+ acksTo = anonymousURI;
}
- if (!Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo) && !serverSide) {
+ if (!anonymousURI.equals(acksTo) && !serverSide) {
String transportIn = (String) configContext //TODO verify
.getProperty(MessageContext.TRANSPORT_IN);
if (transportIn == null)
@@ -709,8 +714,7 @@
if (acksToEPR != null)
acksTo = (String) acksToEPR.getAddress();
}
- } else if (Sandesha2Constants.WSA.NS_URI_ANONYMOUS
- .equals(acksTo)) {
+ } else if (anonymousURI.equals(acksTo)) {
// set transport in.
Object trIn = msgContext.getProperty(MessageContext.TRANSPORT_IN);
if (trIn == null) {
@@ -819,8 +823,11 @@
CreateSeqBean createSeqBean = new CreateSeqBean(internalSequenceId,createSeqMsg.getMessageID(), null);
createSeqMgr.insert(createSeqBean);
+ String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(internalSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configCtx);
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
if (createSeqMsg.getReplyTo() == null)
- createSeqMsg.setReplyTo(new EndpointReference(Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
+ createSeqMsg.setReplyTo(new EndpointReference(anonymousURI));
String key = SandeshaUtil.getUUID(); //the key used to store the create sequence message.
@@ -929,7 +936,6 @@
String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
Sequence sequence = new Sequence(factory,rmNamespaceValue);
-
MessageNumber msgNumber = new MessageNumber(factory,rmNamespaceValue);
msgNumber.setMessageNumber(messageNumber);
sequence.setMessageNumber(msgNumber);
@@ -981,13 +987,6 @@
String specVersion = specVersionBean.getValue();
if (SpecSpecificConstants.isLastMessageIndicatorRequired(specVersion))
sequence.setLastMessage(new LastMessage(factory,rmNamespaceValue));
-
-// // saving the last message no.
-// SequencePropertyBean lastOutMsgBean = new SequencePropertyBean(
-// internalSequenceId,
-// Sandesha2Constants.SequenceProperties.LAST_OUT_MESSAGE,
-// new Long(messageNumber).toString());
-// sequencePropertyMgr.insert(lastOutMsgBean);
}
}
}
@@ -996,7 +995,7 @@
boolean addAckRequested = false;
//if (!lastMessage)
- addAckRequested = true; //TODO decide the policy to add the ackRequested tag
+// addAckRequested = true; //TODO decide the policy to add the ackRequested tag
// setting the Sequnece id.
// Set send = true/false depending on the availability of the out
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -17,7 +17,6 @@
package org.apache.sandesha2.msgprocessors;
-import java.util.ArrayList;
import java.util.Collection;
import org.apache.axis2.AxisFault;
@@ -31,6 +30,7 @@
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.Sandesha2Constants;
import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SpecSpecificConstants;
import org.apache.sandesha2.storage.StorageManager;
import org.apache.sandesha2.storage.Transaction;
import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
@@ -59,6 +59,7 @@
public void processInMessage(RMMsgContext createSeqRMMsg)
throws SandeshaException {
+
MessageContext createSeqMsg = createSeqRMMsg.getMessageContext();
CreateSequence createSeqPart = (CreateSequence) createSeqRMMsg.getMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ);
if (createSeqPart == null) {
@@ -116,7 +117,7 @@
String offeredSequenceID = offer.getIdentifer().getIdentifier(); //offered seq. id.
- boolean offerEcepted = offerAccepted (offeredSequenceID,context);
+ boolean offerEcepted = offerAccepted (offeredSequenceID,context,createSeqRMMsg);
if (offerEcepted) {
//Setting the CreateSequence table entry for the outgoing side.
@@ -186,8 +187,10 @@
EndpointReference toEPR = new EndpointReference (toBean.getValue());
- if (Sandesha2Constants.WSA.NS_URI_ANONYMOUS.equals(
- toEPR.getAddress())) {
+ String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(newSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,context);
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
+ if (anonymousURI.equals(toEPR.getAddress())) {
createSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "true");
} else {
createSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "false");
@@ -200,7 +203,7 @@
createSeqRMMsg.pause();
}
- private boolean offerAccepted (String sequenceID, ConfigurationContext configCtx) throws SandeshaException {
+ private boolean offerAccepted (String sequenceID, ConfigurationContext configCtx, RMMsgContext createSeqRMMsg) throws SandeshaException {
if ("".equals(sequenceID))
return false;
@@ -216,7 +219,7 @@
if (sequenceID.length()<=1)
return false; //Single character offers are NOT accepted.
-
+
return true;
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -19,12 +19,12 @@
import java.util.Iterator;
-import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.addressing.RelatesTo;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
+import org.apache.axiom.soap.SOAPFactory;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.sandesha2.RMMsgContext;
@@ -208,6 +208,14 @@
msgsBean.setName(Sandesha2Constants.SequenceProperties.CLIENT_COMPLETED_MESSAGES);
msgsBean.setValue("");
sequencePropMgr.insert(msgsBean);
+
+
+ //setting the addressing version.
+ String addressingNamespace = createSeqResponseRMMsgCtx.getAddressingNamespaceValue();
+ SequencePropertyBean addressingVersionBean = new SequencePropertyBean (
+ offeredSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,addressingNamespace);
+ sequencePropMgr.insert(addressingVersionBean);
+
}
offerProcessTransaction.commit();
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -17,6 +17,8 @@
package org.apache.sandesha2.msgprocessors;
+import javax.xml.namespace.QName;
+
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
@@ -25,6 +27,8 @@
import org.apache.axis2.context.MessageContextConstants;
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.context.OperationContextFactory;
+import org.apache.axis2.description.AxisOperation;
+import org.apache.axis2.description.OutInAxisOperation;
import org.apache.axis2.description.TransportOutDescription;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.util.Utils;
@@ -55,6 +59,8 @@
import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
import org.apache.sandesha2.wsrm.TerminateSequence;
+import com.sun.rsasign.ax;
+
/**
* Responsible for processing an incoming Terminate Sequence message.
*
@@ -123,7 +129,7 @@
//add the terminate sequence response if required.
if (SpecSpecificConstants.isTerminateSequenceResponseRequired (terminateSeqRMMsg.getRMSpecVersion()))
- addTerminateSequenceResponse (terminateSeqRMMsg);
+ addTerminateSequenceResponse (terminateSeqRMMsg,sequenceId);
@@ -160,7 +166,6 @@
terminateSeqRMMsg.pause();
}
-
private void setUpHighestMsgNumbers (ConfigurationContext configCtx, StorageManager storageManager, String sequenceID, RMMsgContext terminateRMMsg) throws SandeshaException {
@@ -229,9 +234,10 @@
}
- private void addTerminateSequenceResponse (RMMsgContext terminateSeqRMMsg) throws SandeshaException {
+ private void addTerminateSequenceResponse (RMMsgContext terminateSeqRMMsg, String sequenceID) throws SandeshaException {
MessageContext terminateSeqMsg = terminateSeqRMMsg.getMessageContext();
+ ConfigurationContext configCtx = terminateSeqMsg.getConfigurationContext();
MessageContext outMessage = null;
outMessage = Utils.createOutMessageContext(terminateSeqMsg);
@@ -239,6 +245,13 @@
RMMsgContext terminateSeqResponseRMMsg = RMMsgCreator
.createTerminateSeqResponseMsg(terminateSeqRMMsg, outMessage);
+ RMMsgContext ackRMMessage = AcknowledgementManager.generateAckMessage(terminateSeqRMMsg,sequenceID);
+ SequenceAcknowledgement seqAck = (SequenceAcknowledgement) ackRMMessage.getMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
+ terminateSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT,seqAck);
+
+ terminateSeqResponseRMMsg.addSOAPEnvelope();
+
+
terminateSeqResponseRMMsg.setFlow(MessageContext.OUT_FLOW);
terminateSeqResponseRMMsg.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,"true");
@@ -246,12 +259,24 @@
AxisEngine engine = new AxisEngine (terminateSeqMsg.getConfigurationContext());
+ EndpointReference toEPR = terminateSeqMsg.getTo();
+
try {
engine.send(outMessage);
} catch (AxisFault e) {
String message = "Could not send the terminate sequence response";
throw new SandeshaException (message,e);
}
+
+ String addressingNamespaceURI = SandeshaUtil.getSequenceProperty(sequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configCtx);
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
+ if (anonymousURI.equals(
+ toEPR.getAddress())) {
+ terminateSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "true");
+ } else {
+ terminateSeqMsg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN, "false");
+ }
}
public void processOutMessage(RMMsgContext rmMsgCtx) throws SandeshaException {
@@ -276,6 +301,30 @@
String terminated = SandeshaUtil.getSequenceProperty(outSequenceID,
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED,configurationContext);
+
+
+
+ //registring an InOutOperationContext for this.
+ //since the serviceContext.fireAndForget only sets a inOnly One
+ //this does not work when there is a terminateSequnceResponse
+ //TODO do processing of terminateMessagesCorrectly., create a new message instead of sendign the one given by the serviceClient
+ //TODO important
+ try {
+ AxisOperation oldOPeration = msgContext.getAxisOperation();
+ AxisOperation outInAxisOp = new OutInAxisOperation (new QName ("temp"));
+ //setting flows
+ outInAxisOp.setRemainingPhasesInFlow(oldOPeration.getRemainingPhasesInFlow());
+
+ OperationContext opcontext = OperationContextFactory.createOperationContext(OperationContextFactory.MEP_CONSTANT_OUT_IN,outInAxisOp);
+ opcontext.setParent(msgContext.getServiceContext());
+ configurationContext.registerOperationContext(rmMsgCtx.getMessageId(),opcontext);
+ } catch (AxisFault e1) {
+ throw new SandeshaException ("Could not register an outInAxisOperation");
+ }
+
+
+
+
if (terminated != null
&& "true".equals(terminated)) {
@@ -284,31 +333,14 @@
return;
}
-// RMMsgContext terminateRMMessage = RMMsgCreator
-// .createTerminateSequenceMessage(incomingAckRMMsg, outSequenceId,internalSequenceId);
-
TerminateSequence terminateSequencePart = (TerminateSequence) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
terminateSequencePart.getIdentifier().setIndentifer(outSequenceID);
rmMsgCtx.setFlow(MessageContext.OUT_FLOW);
msgContext.setProperty(Sandesha2Constants.APPLICATION_PROCESSING_DONE,"true");
-// String toAddress = SandeshaUtil.getSequenceProperty(internalSeqenceID,Sandesha2Constants.SequenceProperties.TO_EPR,configurationContext);
-
-// EndpointReference toEPR = new EndpointReference ( toBean.getValue());
-// if (toEPR == null) {
-// String message = "To EPR has an invalid value";
-// throw new SandeshaException(message);
-// }
-
rmMsgCtx.setTo(new EndpointReference(toAddress));
-
-// terminateRMMessage.setFrom(new EndpointReference(
-// Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-// terminateRMMessage.setFaultTo(new EndpointReference(
-// Sandesha2Constants.WSA.NS_URI_ANONYMOUS));
-
String rmVersion = SandeshaUtil.getRMVersion(internalSeqenceID,configurationContext);
if (rmVersion==null)
throw new SandeshaException ("Cant find the rmVersion of the given message");
@@ -316,7 +348,6 @@
rmMsgCtx.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(rmVersion));
rmMsgCtx.setSOAPAction(SpecSpecificConstants.getTerminateSequenceSOAPAction(rmVersion));
- //SequencePropertyBean transportToBean = seqPropMgr.retrieve(internalSequenceId,Sandesha2Constants.SequenceProperties.TRANSPORT_TO);
String transportTo = SandeshaUtil.getSequenceProperty(internalSeqenceID,Sandesha2Constants.SequenceProperties.TRANSPORT_TO,configurationContext);
if (transportTo!=null) {
rmMsgCtx.setProperty(MessageContextConstants.TRANSPORT_URL,transportTo);
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/TerminateSeqResponseMsgProcessor.java Thu Mar 30 20:15:07 2006
@@ -31,11 +31,14 @@
private Log log = LogFactory.getLog(getClass());
- public void processInMessage(RMMsgContext createSeqRMMsg)
+ public void processInMessage(RMMsgContext terminateResRMMsg)
throws SandeshaException {
//TODO add processing logic
+ System.out.println("");
+
+ terminateResRMMsg.pause();
}
public void processOutMessage(RMMsgContext rmMsgCtx) throws SandeshaException {
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/StorageManager.java Thu Mar 30 20:15:07 2006
@@ -69,9 +69,4 @@
public abstract void updateMessageContext (String storageKey,MessageContext msgContext) throws SandeshaStorageException;
public abstract MessageContext retrieveMessageContext (String storageKey, ConfigurationContext configContext) throws SandeshaStorageException;
-
-// public abstract void storeSOAPEnvelope (SOAPEnvelope envelope,String key) throws SandeshaStorageException;
-//
-// public abstract SOAPEnvelope retrieveSOAPEnvelope (String key) throws SandeshaStorageException;
-
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SenderBeanMgr.java Thu Mar 30 20:15:07 2006
@@ -46,7 +46,7 @@
public SenderBean findUnique (SenderBean bean) throws SandeshaException;
- public Collection findMsgsToSend() throws SandeshaStorageException;
+ public SenderBean getNextMsgToSend() throws SandeshaStorageException;
public boolean update(SenderBean bean) throws SandeshaStorageException;
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/SenderBean.java Thu Mar 30 20:15:07 2006
@@ -83,6 +83,13 @@
*/
private int messageType =0;
+ /**
+ * The sequenceID of the sequence this message belong to.
+ * this may be null for some messages (e.g. create sequence);
+ */
+ //TODO fill this property correctly
+ private String sequenceID;
+
public SenderBean() {
}
@@ -169,5 +176,13 @@
public void setMessageType(int messagetype) {
this.messageType = messagetype;
+ }
+
+ public String getSequenceID() {
+ return sequenceID;
+ }
+
+ public void setSequenceID(String sequenceID) {
+ this.sequenceID = sequenceID;
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemorySenderBeanMgr.java Thu Mar 30 20:15:07 2006
@@ -130,29 +130,87 @@
return beans;
}
- public synchronized Collection findMsgsToSend() {
- ArrayList beans = new ArrayList();
+ public synchronized SenderBean getNextMsgToSend() {
+// ArrayList beans = new ArrayList();
Iterator iterator = table.keySet().iterator();
- SenderBean temp;
-
+// long lowestAppMsgNo = 0;
+// while (iterator.hasNext()) {
+// Object key = iterator.next();
+// temp = (SenderBean) table.get(key);
+//
+// if (temp.isSend()) {
+// long timeToSend = temp.getTimeToSend();
+// long timeNow = System.currentTimeMillis();
+// if ((timeNow >= timeToSend)) {
+// if (temp.getMessageType()==Sandesha2Constants.MessageTypes.APPLICATION) {
+// long msgNo = temp.getMessageNumber();
+// if (lowestAppMsgNo==0) {
+// lowestAppMsgNo=msgNo;
+// }else {
+// if (msgNo<lowestAppMsgNo)
+// lowestAppMsgNo = msgNo;
+// }
+// }
+// }
+// }
+// }
+
+ iterator = table.keySet().iterator();
while (iterator.hasNext()) {
Object key = iterator.next();
- temp = (SenderBean) table.get(key);
+ SenderBean temp = (SenderBean) table.get(key);
if (temp.isSend()) {
long timeToSend = temp.getTimeToSend();
long timeNow = System.currentTimeMillis();
if ((timeNow >= timeToSend)) {
- beans.add(temp);
+// if (temp.getMessageType()==Sandesha2Constants.MessageTypes.APPLICATION) {
+// if (temp.getMessageNumber()==lowestAppMsgNo)
+// beans.add(temp);
+// }else {
+// beans.add(temp);
+// }
+ updateNextSendingTime (temp);
+ return temp;
}
}
}
-
- return beans;
+
+ return null;
+
+//
+// return beans;
}
+ private void updateNextSendingTime (SenderBean bean) {
+
+ }
+
+// public synchronized Collection findMsgsToSend() {
+// ArrayList beans = new ArrayList();
+// Iterator iterator = table.keySet().iterator();
+//
+// SenderBean temp;
+//
+// while (iterator.hasNext()) {
+// Object key = iterator.next();
+// temp = (SenderBean) table.get(key);
+//
+// if (temp.isSend()) {
+//
+// long timeToSend = temp.getTimeToSend();
+// long timeNow = System.currentTimeMillis();
+// if ((timeNow >= timeToSend)) {
+// beans.add(temp);
+// }
+// }
+// }
+//
+// return beans;
+// }
+
private synchronized ArrayList findBeansWithMsgNo(ArrayList list, long msgNo) {
ArrayList beans = new ArrayList();
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemoryStorageManager.java Thu Mar 30 20:15:07 2006
@@ -19,10 +19,10 @@
import java.util.HashMap;
-import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.AxisModule;
+import org.apache.axiom.soap.SOAPEnvelope;
import org.apache.sandesha2.storage.SandeshaStorageException;
import org.apache.sandesha2.storage.StorageManager;
import org.apache.sandesha2.storage.Transaction;
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultManager.java Thu Mar 30 20:15:07 2006
@@ -21,12 +21,6 @@
import java.util.Iterator;
import java.util.List;
import javax.xml.namespace.QName;
-
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.soap.SOAP11Constants;
-import org.apache.axiom.soap.SOAP12Constants;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPFactory;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
@@ -36,12 +30,19 @@
import org.apache.axis2.context.ServiceGroupContext;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisOperationFactory;
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAP12Constants;
+import org.apache.axiom.soap.SOAPEnvelope;
+import org.apache.axiom.soap.SOAPFactory;
+import org.apache.axiom.soap.SOAPHeader;
import org.apache.axis2.util.Utils;
import org.apache.sandesha2.Sandesha2Constants;
import org.apache.sandesha2.FaultData;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.SOAPFaultEnvelopeCreator;
import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.SpecSpecificConstants;
import org.apache.sandesha2.storage.StorageManager;
import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
@@ -147,7 +148,7 @@
data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.CREATE_SEQUENCE_REFUSED);
data.setReason(reason);
- return getFault(createSequenceRMMsg, data);
+ return getFault(createSequenceRMMsg, data,createSequenceRMMsg.getAddressingNamespaceValue());
}
return null;
@@ -192,7 +193,7 @@
faultData.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.LAST_MESSAGE_NO_EXCEEDED);
faultData.setReason(reason);
- return getFault(applicationRMMessage, faultData);
+ return getFault(applicationRMMessage, faultData, applicationRMMessage.getAddressingNamespaceValue());
} else
return null;
}
@@ -280,7 +281,7 @@
data.setDetail(identifierOMElem);
data.setReason("A sequence with the given sequenceID has NOT been established");
- return getFault(rmMessageContext, data);
+ return getFault(rmMessageContext, data,rmMessageContext.getAddressingNamespaceValue());
}
return null;
@@ -336,7 +337,7 @@
data.setReason(reason);
data.setDetail(sequenceAcknowledgement.getOMElement());
- return getFault(ackRMMessageContext, data);
+ return getFault(ackRMMessageContext, data,ackRMMessageContext.getAddressingNamespaceValue());
}
return null;
@@ -368,7 +369,7 @@
data.setSubcode(Sandesha2Constants.SOAPFaults.Subcodes.SEQUENCE_CLOSED);
data.setReason(reason);
- return getFault(referenceRMMessage, data);
+ return getFault(referenceRMMessage, data, referenceRMMessage.getAddressingNamespaceValue());
}
return null;
@@ -383,12 +384,11 @@
* @throws SandeshaException
*/
public RMMsgContext getFault(RMMsgContext referenceRMMsgContext,
- FaultData data) throws SandeshaException {
+ FaultData data, String addressingNamespaceURI) throws SandeshaException {
try {
-
- MessageContext referenceMessage = referenceRMMsgContext
- .getMessageContext();
+ MessageContext referenceMessage = referenceRMMsgContext.getMessageContext();
+ ConfigurationContext configCtx = referenceRMMsgContext.getConfigurationContext();
//This is to hack to remove NPE. TODO remove this.
if (referenceMessage.getServiceGroupContext()==null) {
@@ -455,16 +455,15 @@
}
}
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceURI);
+
if (acksToStr != null
- && !acksToStr.equals(Sandesha2Constants.WSA.NS_URI_ANONYMOUS)) {
+ && !acksToStr.equals(anonymousURI)) {
faultMsgContext.setTo(new EndpointReference(acksToStr));
}
- int SOAPVersion = SandeshaUtil.getSOAPVersion(referenceMessage
- .getEnvelope());
-
- SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMsgContext,
- SOAPVersion, data,referenceRMMsgContext.getRMNamespaceValue());
+ int SOAPVersion = SandeshaUtil.getSOAPVersion(referenceMessage.getEnvelope());
+ SOAPFaultEnvelopeCreator.addSOAPFaultEnvelope(faultMsgContext,SOAPVersion, data,referenceRMMsgContext.getRMNamespaceValue());
RMMsgContext faultRMMsgCtx = MsgInitializer.initializeMessage(faultMsgContext);
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java Thu Mar 30 20:15:07 2006
@@ -17,6 +17,7 @@
package org.apache.sandesha2.util;
+import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.sandesha2.Sandesha2Constants;
@@ -138,7 +139,10 @@
}
rmMsgContext.setRMNamespaceValue(rmNamespace);
-
+
+ String addressingNamespaceValue = elements.getAddressingNamespaceValue();
+ if (addressingNamespaceValue!=null)
+ rmMsgContext.setAddressingNamespaceValue(addressingNamespaceValue);
}
/**
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java?rev=390319&r1=390318&r2=390319&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java Thu Mar 30 20:15:07 2006
@@ -24,6 +24,7 @@
import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.client.Options;
import org.apache.axis2.context.ConfigurationContext;
@@ -122,11 +123,10 @@
}
} catch (AxisFault e) {
- log
- .error("Could not copy parameters when creating the new RM Message");
+ log.error("Could not copy parameters when creating the new RM Message");
throw new SandeshaException(e.getMessage());
- }
-
+ }
+
// TODO optimize by cloning the Map rather than copying one by one.
// operationContext properties
@@ -157,7 +157,7 @@
}
}
}
-
+
// setting an options with properties copied from the old one.
Options relatesMessageOptions = relatedMessage.getOptions();
if (relatesMessageOptions != null) {
@@ -273,7 +273,9 @@
String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
- CreateSequence createSequencePart = new CreateSequence(factory,rmNamespaceValue);
+ String addressingNamespaceValue = SandeshaUtil.getSequenceProperty(internalSequenceId,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,context);
+
+ CreateSequence createSequencePart = new CreateSequence(factory,rmNamespaceValue,addressingNamespaceValue);
// Adding sequence offer - if present
OperationContext operationcontext = applicationMsgContext
@@ -303,22 +305,25 @@
EndpointReference replyToEPR = null;
EndpointReference acksToEPR = null;
+ String anonymousURI = SpecSpecificConstants.getAddressingAnonymousURI(addressingNamespaceValue);
+
if (acksTo == null || "".equals(acksTo))
- acksTo = Sandesha2Constants.WSA.NS_URI_ANONYMOUS;
+ acksTo = anonymousURI;
acksToEPR = new EndpointReference(acksTo);
if (replyToBean != null && replyToBean.getValue() != null)
replyToEPR = new EndpointReference(replyToBean.getValue());
- createSeqRMMsg.setTo(toEPR);
+ if(createSeqRMMsg.getTo()==null)
+ createSeqRMMsg.setTo(toEPR);
// ReplyTo will be set only if not null.
if (replyToEPR != null)
createSeqRMMsg.setReplyTo(replyToEPR);
createSequencePart.setAcksTo(new AcksTo(
- new Address(acksToEPR, factory), factory,rmNamespaceValue));
+ new Address(acksToEPR, factory, addressingNamespaceValue), factory,rmNamespaceValue,addressingNamespaceValue));
createSeqRMMsg.setMessagePart(
Sandesha2Constants.MessageParts.CREATE_SEQ, createSequencePart);
@@ -328,12 +333,13 @@
} catch (AxisFault e1) {
throw new SandeshaException(e1.getMessage());
}
+
createSeqRMMsg.setAction(SpecSpecificConstants.getCreateSequenceAction(SandeshaUtil.getRMVersion(internalSequenceId,context)));
createSeqRMMsg.setSOAPAction(SpecSpecificConstants.getCreateSequenceSOAPAction(SandeshaUtil.getRMVersion(internalSequenceId,context)));
finalizeCreation(applicationMsgContext, createSeqmsgContext);
-
+
return createSeqRMMsg;
}
@@ -398,6 +404,10 @@
initializeCreation(referenceMessage, terminateMessage);
+ if (!SpecSpecificConstants.isTerminateSequenceResponseRequired(rmVersion)) {
+ terminateMessage.setProperty(MessageContext.TRANSPORT_IN,null);
+ }
+
RMMsgContext terminateRMMessage = MsgInitializer
.initializeMessage(terminateMessage);
@@ -405,7 +415,7 @@
throw new SandeshaException("MessageContext is null");
// setUpMessage(referenceMessage, terminateMessage);
-
+
SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(SandeshaUtil
.getSOAPVersion(referenceMessage.getEnvelope()));
@@ -466,9 +476,10 @@
if (rmVersion==null)
throw new SandeshaException ("Cant find the rmVersion of the given message");
- String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
+ String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmVersion);
+ String addressingNamespaceValue = SandeshaUtil.getSequenceProperty(newSequenceID,Sandesha2Constants.SequenceProperties.ADDRESSING_NAMESPACE_VALUE,configurationContext);
- CreateSequenceResponse response = new CreateSequenceResponse(factory,rmNamespaceValue);
+ CreateSequenceResponse response = new CreateSequenceResponse(factory,rmNamespaceValue,addressingNamespaceValue);
Identifier identifier = new Identifier(factory,rmNamespaceValue);
identifier.setIndentifer(newSequenceID);
@@ -481,10 +492,10 @@
if (outSequenceId != null && !"".equals(outSequenceId)) {
- Accept accept = new Accept(factory,rmNamespaceValue);
+ Accept accept = new Accept(factory,rmNamespaceValue,addressingNamespaceValue);
EndpointReference acksToEPR = createSeqMessage.getTo();
- AcksTo acksTo = new AcksTo(factory,rmNamespaceValue);
- Address address = new Address(factory);
+ AcksTo acksTo = new AcksTo(factory,rmNamespaceValue,addressingNamespaceValue);
+ Address address = new Address(factory,addressingNamespaceValue);
address.setEpr(acksToEPR);
acksTo.setAddress(address);
accept.setAcksTo(acksTo);
@@ -511,9 +522,12 @@
} catch (SandeshaException ex) {
throw new AxisFault("Cant initialize the message");
}
+
+ createSeqResponse.setMessagePart(Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE,response);
finalizeCreation(createSeqMessage.getMessageContext(), outMessage);
+ createSeqMessage.getMessageContext().setServerSide(true);
return createSeqResponse;
}
@@ -541,8 +555,8 @@
terminateSeqResponseRMMsg.setSOAPEnvelop(envelope);
terminateSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE,terminateSequenceResponse);
- outMessage.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
- outMessage.setSoapAction(SpecSpecificConstants.getTerminateSequenceAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
+ outMessage.setWSAAction(SpecSpecificConstants.getTerminateSequenceResponseAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
+ outMessage.setSoapAction(SpecSpecificConstants.getTerminateSequenceResponseAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
initializeCreation(terminateSeqRMMsg.getMessageContext(),outMessage);
@@ -551,6 +565,7 @@
finalizeCreation(terminateSeqRMMsg.getMessageContext(), outMessage);
+ terminateSeqResponseRMMsg.getMessageContext().setServerSide(true);
return terminateSeqResponseRMMsg;
}
@@ -578,8 +593,8 @@
closeSeqResponseRMMsg.setSOAPEnvelop(envelope);
closeSeqResponseRMMsg.setMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE_RESPONSE,closeSequenceResponse);
- outMessage.setWSAAction(SpecSpecificConstants.getCloseSequenceAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
- outMessage.setSoapAction(SpecSpecificConstants.getCloseSequenceAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
+ outMessage.setWSAAction(SpecSpecificConstants.getCloseSequenceResponseAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
+ outMessage.setSoapAction(SpecSpecificConstants.getCloseSequenceResponseAction(SandeshaUtil.getRMVersion(sequenceID,configurationContext)));
initializeCreation(closeSeqRMMsg.getMessageContext(),outMessage);
@@ -587,7 +602,7 @@
finalizeCreation(closeSeqRMMsg.getMessageContext(), outMessage);
-
+ closeSeqResponseRMMsg.getMessageContext().setServerSide(true);
return closeSeqResponseRMMsg;
}
@@ -674,36 +689,32 @@
* @return
* @throws SandeshaException
*/
- public static RMMsgContext createAckMessage(RMMsgContext applicationRMMsgCtx, String rmNamespaceValue)
+ public static RMMsgContext createAckMessage(RMMsgContext relatedRMMessage, String sequenceID, String rmNamespaceValue)
throws SandeshaException {
try {
- MessageContext applicationMsgCtx = applicationRMMsgCtx
+ MessageContext applicationMsgCtx = relatedRMMessage
.getMessageContext();
AxisOperation ackOperation = AxisOperationFactory
.getAxisOperation(AxisOperationFactory.MEP_CONSTANT_OUT_ONLY);
MessageContext ackMsgCtx = SandeshaUtil
- .createNewRelatedMessageContext(applicationRMMsgCtx,
+ .createNewRelatedMessageContext(relatedRMMessage,
ackOperation);
+
RMMsgContext ackRMMsgCtx = MsgInitializer
.initializeMessage(ackMsgCtx);
initializeCreation(applicationMsgCtx, ackMsgCtx);
- Sequence reqSequence = (Sequence) applicationRMMsgCtx
- .getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
- if (reqSequence == null)
- throw new SandeshaException(
- "Sequence part of application message is null");
-
- String sequenceId = reqSequence.getIdentifier().getIdentifier();
-
- addAckMessage(ackRMMsgCtx, sequenceId);
+ addAckMessage(ackRMMsgCtx, sequenceID);
+ ackMsgCtx.setProperty(MessageContext.TRANSPORT_IN,null);
+
finalizeCreation(applicationMsgCtx, ackMsgCtx);
+ ackRMMsgCtx.getMessageContext().setServerSide(true);
return ackRMMsgCtx;
} catch (AxisFault e) {
throw new SandeshaException(e.getMessage());
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org