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 2005/10/25 08:03:37 UTC
svn commit: r328267 [1/2] - in
/webservices/sandesha/trunk/src/org/apache/sandesha2: ./ handlers/
msgprocessors/ storage/beanmanagers/ util/ workers/ wsrm/
Author: chamikara
Date: Mon Oct 24 23:01:50 2005
New Revision: 328267
URL: http://svn.apache.org/viewcvs?rev=328267&view=rev
Log:
Refactored source classes.
Added:
webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgValidator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SOAPAbstractFactory.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SequenceManager.java
webservices/sandesha/trunk/src/org/apache/sandesha2/workers/
webservices/sandesha/trunk/src/org/apache/sandesha2/workers/InOrderInvoker.java
webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
Removed:
webservices/sandesha/trunk/src/org/apache/sandesha2/FaultMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java
webservices/sandesha/trunk/src/org/apache/sandesha2/MsgInitializer.java
webservices/sandesha/trunk/src/org/apache/sandesha2/MsgValidator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/SOAPAbstractFactory.java
webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java
webservices/sandesha/trunk/src/org/apache/sandesha2/SequenceMenager.java
Modified:
webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.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/storage/beanmanagers/RetransmitterBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.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/AcknowledgementRange.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/Expires.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Identifier.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/LastMessage.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/MessageNumber.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Nack.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Sequence.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceFault.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceOffer.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/TerminateSequence.java
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=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java Mon Oct 24 23:01:50 2005
@@ -30,6 +30,7 @@
import org.apache.axis2.context.AbstractContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.wsrm.CreateSequence;
import org.apache.sandesha2.wsrm.IOMRMElement;
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaInHandler.java Mon Oct 24 23:01:50 2005
@@ -31,13 +31,13 @@
import org.apache.axis2.handlers.AbstractHandler;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.MsgInitializer;
-import org.apache.sandesha2.MsgValidator;
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.msgprocessors.MsgProcessor;
import org.apache.sandesha2.msgprocessors.MsgProcessorFactory;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.MsgValidator;
import org.apache.sandesha2.util.SandeshaUtil;
/**
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=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java Mon Oct 24 23:01:50 2005
@@ -30,12 +30,8 @@
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.axis2.util.UUIDGenerator;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.MsgInitializer;
-import org.apache.sandesha2.SOAPAbstractFactory;
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.RMMsgContext;
-import org.apache.sandesha2.RMMsgCreator;
-import org.apache.sandesha2.SequenceMenager;
import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.RetransmitterBeanMgr;
@@ -43,7 +39,11 @@
import org.apache.sandesha2.storage.beans.CreateSeqBean;
import org.apache.sandesha2.storage.beans.RetransmitterBean;
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.RMMsgCreator;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.util.SequenceManager;
import org.apache.sandesha2.wsrm.CreateSequence;
import org.apache.sandesha2.wsrm.Identifier;
import org.apache.sandesha2.wsrm.LastMessage;
@@ -163,7 +163,7 @@
//if fist message - setup the sequence for the client side
if (!serverSide && sendCreateSequence) {
try {
- SequenceMenager.setUpNewClientSequence(msgCtx, tempSequenceId);
+ SequenceManager.setupNewClientSequence(msgCtx, tempSequenceId);
} catch (SandeshaException e1) {
throw new AxisFault(e1.getMessage());
}
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=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java Mon Oct 24 23:01:50 2005
@@ -34,7 +34,6 @@
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
import org.apache.sandesha2.RMMsgContext;
-import org.apache.sandesha2.RMMsgCreator;
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.handlers.SandeshaOutHandler;
import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
@@ -42,6 +41,7 @@
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
import org.apache.sandesha2.storage.beans.RetransmitterBean;
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.util.RMMsgCreator;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
import org.apache.sandesha2.wsrm.LastMessage;
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=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Mon Oct 24 23:01:50 2005
@@ -34,12 +34,7 @@
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.InOrderInvoker;
-import org.apache.sandesha2.MsgInitializer;
-import org.apache.sandesha2.MsgValidator;
import org.apache.sandesha2.RMMsgContext;
-import org.apache.sandesha2.RMMsgCreator;
-import org.apache.sandesha2.SOAPAbstractFactory;
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.handlers.SandeshaOutHandler;
import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
@@ -50,7 +45,12 @@
import org.apache.sandesha2.storage.beans.NextMsgBean;
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
import org.apache.sandesha2.storage.beans.StorageMapBean;
+import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.MsgValidator;
+import org.apache.sandesha2.util.RMMsgCreator;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.workers.InOrderInvoker;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
import org.apache.sandesha2.wsrm.Sequence;
import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
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=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqMsgProcessor.java Mon Oct 24 23:01:50 2005
@@ -27,15 +27,15 @@
import org.apache.axis2.util.Utils;
import org.apache.sandesha2.Constants;
import org.apache.sandesha2.RMMsgContext;
-import org.apache.sandesha2.RMMsgCreator;
import org.apache.sandesha2.SandeshaException;
-import org.apache.sandesha2.SequenceMenager;
import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
import org.apache.sandesha2.storage.beans.CreateSeqBean;
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.util.RMMsgCreator;
import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.util.SequenceManager;
import org.apache.sandesha2.wsrm.Accept;
import org.apache.sandesha2.wsrm.CreateSequence;
import org.apache.sandesha2.wsrm.CreateSequenceResponse;
@@ -66,7 +66,7 @@
try {
- String newSequenceId = SequenceMenager.setUpNewSequence(createSeqRMMsg);
+ String newSequenceId = SequenceManager.setupNewSequence(createSeqRMMsg);
ConfigurationContext context = createSeqRMMsg.getMessageContext().getSystemContext();
if (newSequenceId == null)
throw new AxisFault("Internal error - Generated sequence id is null");
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=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java Mon Oct 24 23:01:50 2005
@@ -18,7 +18,6 @@
package org.apache.sandesha2.msgprocessors;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.MsgInitializer;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
@@ -30,6 +29,7 @@
import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.RetransmitterBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.util.MsgInitializer;
import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.wsrm.Accept;
import org.apache.sandesha2.wsrm.CreateSequenceResponse;
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/RetransmitterBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/RetransmitterBeanMgr.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/RetransmitterBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/RetransmitterBeanMgr.java Mon Oct 24 23:01:50 2005
@@ -25,9 +25,9 @@
import org.apache.axis2.context.AbstractContext;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.MsgInitializer;
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.storage.beans.RetransmitterBean;
+import org.apache.sandesha2.util.MsgInitializer;
/**
* @author Chamikara Jayalath <ch...@wso2.com>
Added: webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultMgr.java?rev=328267&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultMgr.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/FaultMgr.java Mon Oct 24 23:01:50 2005
@@ -0,0 +1,510 @@
+package org.apache.sandesha2.util;
+
+import java.math.BigInteger;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.om.OMAttribute;
+import org.apache.axis2.om.OMElement;
+import org.apache.axis2.om.OMNamespace;
+import org.apache.axis2.soap.SOAP11Constants;
+import org.apache.axis2.soap.SOAP12Constants;
+import org.apache.axis2.soap.SOAPBody;
+import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.soap.SOAPFactory;
+import org.apache.axis2.soap.SOAPFault;
+import org.apache.axis2.soap.SOAPFaultCode;
+import org.apache.axis2.soap.SOAPFaultDetail;
+import org.apache.axis2.soap.SOAPFaultReason;
+import org.apache.axis2.soap.SOAPFaultSubCode;
+import org.apache.axis2.soap.SOAPFaultText;
+import org.apache.axis2.soap.SOAPFaultValue;
+import org.apache.axis2.soap.SOAPHeader;
+import org.apache.axis2.soap.impl.llom.SOAPConstants;
+import org.apache.axis2.soap.impl.llom.soap12.SOAP12Factory;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMMsgContext;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.Constants.MessageTypes;
+import org.apache.sandesha2.Constants.SOAPVersion;
+import org.apache.sandesha2.Constants.SequenceProperties;
+import org.apache.sandesha2.Constants.WSRM;
+import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
+import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.StorageMapBeanMgr;
+import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.wsrm.FaultCode;
+import org.apache.sandesha2.wsrm.SequenceFault;
+
+/**
+ * @author Sanka
+ * @author Chamikara
+ */
+
+public class FaultMgr {
+
+ private static final String WSA_ACTION_FAULT
+ = "http://schemas.xmlsoap.org/ws/2004/08/addressing/fault";
+
+ public static final int UNKNOWN_SEQUENCE_TYPE = 1;
+ public static final int MESSAGE_NUMBER_ROLLOVER_TYPE = 2;
+ public static final int INVALID_ACKNOWLEDGEMENT_TYPE = 3;
+
+
+ public static final String UNKNOW_SEQUENCE_CODE = "Sender";
+ public static final String UNKNOW_SEQUENCE_SUBCODE
+ = "wsrm:UnknowSequence";
+ public static final String UNKNOW_SEQUENCE_RESON
+ = "The vaule of wsrm:Identifier is not a known Sequence Identifer";
+
+ public static final String MESSAGE_NUMBER_ROLLOVER_CODE = "Sender";
+ public static final String MESSAGE_NUMBER_ROLLOVER_SUBCODE
+ = "wsrm:MessageNumberRollover";
+ public static final String MESSAGE_NUMBER_ROLLOVER_REASON
+ = "The maximum value of wsrm:MessageNumber has been exceeded.";
+
+ public static final String INVALID_ACKNOWLEDGEMENT_CODE = "Sender";
+ public static final String INVALID_ACKNOWLEDGEMENT_SUBCODE
+ = "wsrm:InvalidAcknowledgement";
+ public static final String INVALID_ACKNOWLEDGEMENT_REASON
+ = "The SequenceAcknowledgement violates the cumlative acknowledgement";
+
+ protected class FaultData {
+ int type;
+ String code;
+ String subcode;
+ String reason;
+ OMElement detail;
+ MessageContext msgCtx;
+ }
+
+ public FaultMgr() {
+ }
+
+ /**
+ *
+ * @param msgCtx
+ * @return
+ * @throws SandeshaException
+ */
+ public RMMsgContext check(MessageContext msgCtx) throws SandeshaException {
+ int msgType = getMessageType(msgCtx);
+
+ switch (msgType) {
+
+ case Constants.MessageTypes.APPLICATION:
+
+ /* Sequence*/
+ return checkSequenceMsg(msgCtx);
+
+ case Constants.MessageTypes.ACK:
+
+ /* SequenceAcknowledgement */
+ return checkSequenceAcknowledgementMsg(msgCtx);
+
+ default:
+
+ /* TODO check for other message types */
+ return null;
+ }
+ }
+
+ /**
+ * Check whether a Sequence message
+ * (a) belongs to a unknown sequence (generates an UnknownSequence fault)
+ * (b) message number exceeds a predifined limit ( genenrates a Message
+ * Number Rollover fault)
+ *
+ * @param msgCtx
+ * @return
+ * @throws SandeshaException
+ */
+ public RMMsgContext checkSequenceMsg(MessageContext msgCtx)
+ throws SandeshaException {
+
+ NextMsgBeanMgr mgr =
+ AbstractBeanMgrFactory.getInstance(msgCtx).getNextMsgBeanMgr();
+ SOAPEnvelope envelope = msgCtx.getEnvelope();
+
+ OMElement element = envelope.getHeader().getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE));
+ OMElement identifier = element.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.IDENTIFIER));
+
+ String identifierString = identifier.getText().trim();
+
+ if (mgr.retrieve(identifierString) == null) {
+
+ // should throw an UnknownSequence fault
+ return getFault(FaultMgr.UNKNOWN_SEQUENCE_TYPE, msgCtx);
+ }
+
+ OMElement msgNumber = element.getFirstChildWithName(
+ new QName (Constants.WSRM.NS_URI_RM,Constants.WSRM.MSG_NUMBER));
+
+ BigInteger bigInteger = new BigInteger(msgNumber.getText().trim());
+
+ // throws new MessageNumberRollover fault
+ if (bigInteger.compareTo(BigInteger.valueOf(Long.MAX_VALUE)) == 1) {
+ return getFault(FaultMgr.MESSAGE_NUMBER_ROLLOVER_TYPE,
+ msgCtx);
+ }
+
+ // Phew !! no faults ..
+ return null;
+ }
+
+ /**
+ *
+ * @param msgCtx
+ * @return
+ * @throws SandeshaException
+ */
+ public RMMsgContext checkSequenceAcknowledgementMsg(MessageContext msgCtx)
+ throws SandeshaException {
+ NextMsgBeanMgr mgr
+ = AbstractBeanMgrFactory.getInstance(msgCtx).getNextMsgBeanMgr();
+ StorageMapBeanMgr smgr
+ = AbstractBeanMgrFactory.getInstance(msgCtx).getStorageMapBeanMgr();
+ SequencePropertyBeanMgr propertyBeanMgr
+ = AbstractBeanMgrFactory.getInstance(msgCtx).getSequencePropretyBeanMgr();
+
+ SOAPEnvelope envelope = msgCtx.getEnvelope();
+ // this is a SequenceAcknowledgement message
+ OMElement element = envelope.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE_ACK));
+ OMElement identifier = element.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.IDENTIFIER));
+
+ if (mgr.retrieve(identifier.getText()) == null) {
+ //throw UnknownSequenceFault
+ return getFault(FaultMgr.UNKNOWN_SEQUENCE_TYPE, msgCtx);
+ }
+
+ String identifierString = identifier.getText().trim();
+ SequencePropertyBean propertyBean =
+ propertyBeanMgr.retrieve(identifierString,
+ Constants.SequenceProperties.TEMP_SEQUENCE_ID);
+
+ //TODO
+ String acksString = ""; //propertyBean.getAcksString();
+ String[] msgNumberStrs = acksString.split(",");
+
+ //TODO move this to a util class
+ long[] msgNumbers = new long[msgNumberStrs.length];
+ for (int i=0; i < msgNumbers.length; i++) {
+ msgNumbers[i] = Long.parseLong(msgNumberStrs[i]);
+ }
+
+ Iterator acks = element.getChildrenWithName(new QName(
+ Constants.WSRM.NS_URI_RM, Constants.WSRM.ACK_RANGE));
+ while (acks.hasNext()) {
+ OMElement ack = (OMElement) acks.next();
+
+ OMAttribute lowerAttrib = ack.getAttribute(
+ new QName(Constants.WSRM.LOWER));
+ long lower = Long.parseLong(lowerAttrib.getAttributeValue());
+
+ OMAttribute upperAttrib = ack.getAttribute(
+ new QName(Constants.WSRM.UPPER));
+ long upper = Long.parseLong(upperAttrib.getAttributeValue());
+
+ for (; lower <= upper; lower++) {
+ boolean found = false;
+ for (int j = 0; j < msgNumbers.length; j++) {
+ if (lower == msgNumbers[j]) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ //TODO throw new InvalidAcknowledgement
+ }
+ }
+ }
+
+ Iterator nacks = element.getChildrenWithName(new QName(
+ Constants.WSRM.NS_URI_RM, Constants.WSRM.NACK));
+
+ while (nacks.hasNext()) {
+ OMElement nack = (OMElement) nacks.next();
+ long msgNo = Long.parseLong(nack.getText());
+
+ boolean found = false;
+ for (int j = 0; j < msgNumbers.length; j++) {
+ if (msgNo == msgNumbers[j]) {
+ found = true;
+ break;
+ }
+ }
+ if (!found) {
+ //TODO throw new InvalidAcknowledgement
+ }
+ }
+ return null;
+ }
+
+ /**
+ *
+ * @param type
+ * @param msgCtx
+ * @return
+ * @throws SandeshaException
+ */
+ public RMMsgContext getFault(int type, MessageContext msgCtx)
+ throws SandeshaException {
+
+ FaultData data = new FaultData();
+
+ switch (type) {
+ case FaultMgr.UNKNOWN_SEQUENCE_TYPE:
+ data.code = FaultMgr.UNKNOW_SEQUENCE_CODE;
+ data.subcode = FaultMgr.UNKNOW_SEQUENCE_SUBCODE;
+ data.reason = FaultMgr.UNKNOW_SEQUENCE_RESON;
+ data.msgCtx = msgCtx;
+ break;
+
+ case FaultMgr.MESSAGE_NUMBER_ROLLOVER_TYPE:
+ data.code = FaultMgr.MESSAGE_NUMBER_ROLLOVER_CODE;
+ data.subcode = FaultMgr.MESSAGE_NUMBER_ROLLOVER_SUBCODE;
+ data.reason = FaultMgr.MESSAGE_NUMBER_ROLLOVER_REASON;
+ data.msgCtx = msgCtx;
+ break;
+
+ case FaultMgr.INVALID_ACKNOWLEDGEMENT_TYPE:
+ data.code = FaultMgr.INVALID_ACKNOWLEDGEMENT_CODE;
+ data.subcode = FaultMgr.INVALID_ACKNOWLEDGEMENT_SUBCODE;
+ data.reason = FaultMgr.INVALID_ACKNOWLEDGEMENT_REASON;
+ data.msgCtx = msgCtx;
+ break;
+ }
+
+ data.type = getMessageType(msgCtx);
+
+ MessageContext newMsgCtx = SandeshaUtil.shallowCopy(msgCtx);
+ newMsgCtx.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
+ newMsgCtx.setServiceContext(msgCtx.getServiceContext());
+ RMMsgContext newRMMsgCtx = new RMMsgContext(newMsgCtx);
+
+ SequenceFault seqFault = new SequenceFault();
+ FaultCode faultCode = new FaultCode();
+ faultCode.setFaultCode(data.code);
+ seqFault.setFaultCode(faultCode);
+
+ //TODO
+ //newRMMsgCtx.setMessagePart(Constants.MessageParts.SEQUENCE_FAULT, seqFault);
+
+ String str = msgCtx.getEnvelope().getNamespace().getName();
+
+ if (SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(
+ msgCtx.getEnvelope().getNamespace().getName())) {
+ doSOAP11Encoding(data, newMsgCtx);
+
+ } else if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(
+ msgCtx.getEnvelope().getNamespace().getName())) {
+ doSOAP12Encoding(data, newMsgCtx);
+
+ } else {
+ //TODO should I throw an exception ?
+ }
+
+ return newRMMsgCtx;
+ }
+
+ /**
+ *
+ * @param data
+ * @param msgCtx
+ * @throws SandeshaException
+ */
+ public void doSOAP11Encoding(FaultData data, MessageContext msgCtx)
+ throws SandeshaException {
+
+
+ SOAPFactory factory = SOAPAbstractFactory.getSOAPFactory(Constants.SOAPVersion.v1_1);
+ SOAPEnvelope faultMsgEnvelope = factory.getDefaultFaultEnvelope();
+
+ SOAPFault fault;
+ SOAPFaultCode faultCode;
+ SOAPFaultReason faultReason;
+ SOAPFaultText faultText;
+
+ switch (data.type) {
+ case Constants.MessageTypes.CREATE_SEQ:
+
+ /* CreateSequence */
+ fault = faultMsgEnvelope.getBody().getFault();
+ faultCode = fault.getCode();
+ faultCode.getValue().setText(data.subcode);
+
+ faultReason = fault.getReason();
+ faultReason.getSOAPText().setText(data.reason);
+ // TODO
+ OMNamespace namespace =
+ factory.createOMNamespace(
+ SOAP11Constants.XMLNS_URI,
+ SOAP11Constants.XMLNS_PREFIX);
+ faultReason.getSOAPText().addAttribute("lang", "en", namespace);
+ break;
+
+ default:
+
+ /* */
+ fault = faultMsgEnvelope.getBody().getFault();
+ faultCode = fault.getCode();
+ faultCode.getValue().setText(data.code);
+
+ faultReason = fault.getReason();
+ faultReason.getSOAPText().setText(data.reason);
+ break;
+ }
+
+ try {
+ msgCtx.setEnvelope(faultMsgEnvelope);
+
+ } catch (AxisFault axisFault) {
+ throw new SandeshaException(axisFault.getMessage());
+ }
+ }
+
+ /**
+ *
+ * @param msgCtx
+ * @return
+ */
+ public void doSOAP12Encoding(FaultData data, MessageContext msgCtx)
+ throws SandeshaException{
+
+ SOAPFactory factory =
+ SOAPAbstractFactory.getSOAPFactory(Constants.SOAPVersion.v1_2);
+ SOAPEnvelope envelope = factory.getDefaultFaultEnvelope();
+
+ SOAPFault fault = envelope.getBody().getFault();
+ SOAPFaultCode faultCode = fault.getCode();
+ SOAPFaultValue codeValue = faultCode.getValue();
+ codeValue.setText(data.code);
+
+ SOAPFaultSubCode faultSubCode = factory.createSOAPFaultSubCode(faultCode);
+ SOAPFaultValue subCodeValue = factory.createSOAPFaultValue(faultSubCode);
+ subCodeValue.setText(data.subcode);
+
+ SOAPFaultReason faultReason = fault.getReason();
+ SOAPFaultText faultText = faultReason.getSOAPText();
+ faultText.setText(data.reason);
+
+ SOAPFaultDetail faultDetail = fault.getDetail();
+
+ SOAPEnvelope ienvelope = data.msgCtx.getEnvelope();
+
+ switch (data.type) {
+ case Constants.MessageTypes.APPLICATION:
+
+ /* Sequence */
+ OMElement sequence = ienvelope.getHeader().getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM,
+ Constants.WSRM.SEQUENCE));
+ OMElement sidentifier = sequence.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM,
+ Constants.WSRM.IDENTIFIER));
+
+ OMNamespace snamespace =
+ factory.createOMNamespace(
+ Constants.WSRM.NS_URI_RM,
+ Constants.WSRM.NS_PREFIX_RM);
+ OMElement selement = factory.createOMElement(
+ Constants.WSRM.IDENTIFIER, snamespace);
+
+ selement.setText(sidentifier.getText());
+ faultDetail.addChild(selement);
+ break;
+
+ case Constants.MessageTypes.ACK:
+
+ /* SequenceAcknowledge */
+
+ OMElement sequenceAck
+ = ienvelope.getHeader().getFirstChildWithName(
+ new QName(
+ Constants.WSRM.NS_URI_RM,
+ Constants.WSRM.SEQUENCE_ACK));
+ OMElement aidentifier
+ = sequenceAck.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM,
+ Constants.WSRM.IDENTIFIER));
+ OMNamespace anamespace =
+ factory.createOMNamespace(
+ Constants.WSRM.NS_URI_RM,
+ Constants.WSRM.NS_PREFIX_RM);
+ OMElement aelement = factory.createOMElement(
+ Constants.WSRM.IDENTIFIER, anamespace);
+
+ aelement.setText(aidentifier.getText());
+ faultDetail.addChild(aelement);
+ break;
+
+ default:
+
+ /* TODO for other message types */
+ break;
+
+ }
+
+ msgCtx.setProperty(AddressingConstants.WSA_ACTION, WSA_ACTION_FAULT);
+
+ try {
+ msgCtx.setEnvelope(envelope);
+ } catch (AxisFault e) {
+ throw new SandeshaException(e.getMessage());
+ }
+ }
+
+
+ public int getMessageType(MessageContext msgCtx) {
+
+ SOAPHeader header = msgCtx.getEnvelope().getHeader();
+ SOAPBody body = msgCtx.getEnvelope().getBody();
+
+ if (header.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE))
+ != null) {
+ return Constants.MessageTypes.APPLICATION;
+
+ } else if (header.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.SEQUENCE_ACK))
+ != null) {
+ return Constants.MessageTypes.ACK;
+
+ } else if (body.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.CREATE_SEQUENCE))
+ != null) {
+ return Constants.MessageTypes.CREATE_SEQ;
+
+ } else if (body.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.CREATE_SEQUENCE_RESPONSE))
+ != null) {
+ return Constants.MessageTypes.CREATE_SEQ_RESPONSE;
+
+ } else if (body.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.TERMINATE_SEQUENCE))
+ != null) {
+ return Constants.MessageTypes.TERMINATE_SEQ;
+
+ } else if (header.getFirstChildWithName(
+ new QName(Constants.WSRM.NS_URI_RM, Constants.WSRM.ACK_REQUESTED))
+ != null) {
+ //TODO fix this ..
+ return Constants.MessageTypes.UNKNOWN;
+
+ } else {
+ return Constants.MessageTypes.UNKNOWN;
+ }
+
+
+ }
+
+}
Added: 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=328267&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgInitializer.java Mon Oct 24 23:01:50 2005
@@ -0,0 +1,108 @@
+/*
+ * Copyright 1999-2004 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.
+ *
+ */
+
+package org.apache.sandesha2.util;
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.axis2.addressing.om.AddressingHeaders;
+import org.apache.axis2.context.MessageContext;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMMsgContext;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.Constants.MessageParts;
+import org.apache.sandesha2.Constants.MessageTypes;
+import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
+import org.apache.sandesha2.wsrm.RMElements;
+
+/**
+ * @author Chamikara
+ * @author Sanka
+ * @author Jaliya
+ */
+
+public class MsgInitializer {
+
+ public static RMMsgContext initializeMessage(MessageContext ctx)
+ throws SandeshaException {
+ RMMsgContext rmMsgCtx = new RMMsgContext(ctx);
+ populateRMMsgContext(ctx, rmMsgCtx);
+ validateMessage(rmMsgCtx);
+ return rmMsgCtx;
+ }
+
+ private static void populateRMMsgContext(MessageContext msgCtx,
+ RMMsgContext rmMsgContext) {
+ //TODO set message parts
+
+ RMElements elements = new RMElements();
+ elements.fromSOAPEnvelope(msgCtx.getEnvelope());
+
+ if (elements.getCreateSequence() != null)
+ rmMsgContext.setMessagePart(Constants.MessageParts.CREATE_SEQ,
+ elements.getCreateSequence());
+
+ if (elements.getCreateSequenceResponse() != null)
+ rmMsgContext.setMessagePart(
+ Constants.MessageParts.CREATE_SEQ_RESPONSE, elements
+ .getCreateSequenceResponse());
+
+ if (elements.getSequence() != null)
+ rmMsgContext.setMessagePart(Constants.MessageParts.SEQUENCE,
+ elements.getSequence());
+
+ if (elements.getSequenceAcknowledgement() != null)
+ rmMsgContext.setMessagePart(
+ Constants.MessageParts.SEQ_ACKNOWLEDGEMENT, elements
+ .getSequenceAcknowledgement());
+
+ if (elements.getTerminateSequence() != null)
+ rmMsgContext.setMessagePart(Constants.MessageParts.TERMINATE_SEQ,
+ elements.getTerminateSequence());
+
+ if (elements.getAckRequested() != null)
+ rmMsgContext.setMessagePart(Constants.MessageParts.ACK_REQUEST,
+ elements.getAckRequested());
+
+ }
+
+ private static boolean validateMessage(RMMsgContext rmMsgCtx)
+ throws SandeshaException {
+
+ //TODO: performa validation
+
+ int a = 1;
+ //Setting message type.
+ if (rmMsgCtx.getMessagePart(Constants.MessageParts.CREATE_SEQ) != null)
+ rmMsgCtx.setMessageType(Constants.MessageTypes.CREATE_SEQ);
+ else if (rmMsgCtx
+ .getMessagePart(Constants.MessageParts.CREATE_SEQ_RESPONSE) != null)
+ rmMsgCtx.setMessageType(Constants.MessageTypes.CREATE_SEQ_RESPONSE);
+ else if (rmMsgCtx.getMessagePart(Constants.MessageParts.TERMINATE_SEQ) != null)
+ rmMsgCtx.setMessageType(Constants.MessageTypes.TERMINATE_SEQ);
+ else if (rmMsgCtx.getMessagePart(Constants.MessageParts.SEQUENCE) != null)
+ rmMsgCtx.setMessageType(Constants.MessageTypes.APPLICATION);
+ else if (rmMsgCtx.getMessagePart(Constants.MessageParts.SEQ_ACKNOWLEDGEMENT)!=null)
+ rmMsgCtx.setMessageType(Constants.MessageTypes.ACK);
+ else
+ rmMsgCtx.setMessageType(Constants.MessageTypes.UNKNOWN);
+
+ return true;
+ }
+
+}
\ No newline at end of file
Added: webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgValidator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgValidator.java?rev=328267&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgValidator.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/MsgValidator.java Mon Oct 24 23:01:50 2005
@@ -0,0 +1,39 @@
+/*
+ * Copyright 1999-2004 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.
+ *
+ */
+
+package org.apache.sandesha2.util;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.sandesha2.RMMsgContext;
+
+/**
+ * @author Chamikara
+ * @author Sanka
+ * @author Jaliya
+ */
+
+//TODO remove this class.
+public class MsgValidator {
+
+
+ private static void validateMessage(RMMsgContext rmMsgCtx) throws AxisFault{
+
+ //no need of this method any more.
+ //Validation is done in the message initialized
+ }
+}
Added: 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=328267&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java Mon Oct 24 23:01:50 2005
@@ -0,0 +1,402 @@
+/*
+ * Copyright 1999-2004 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.
+ *
+ */
+
+package org.apache.sandesha2.util;
+
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.EndpointReference;
+import org.apache.axis2.addressing.MessageInformationHeaders;
+import org.apache.axis2.addressing.om.AddressingHeaders;
+import org.apache.axis2.clientapi.Call;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.OperationDescription;
+import org.apache.axis2.description.OperationDescriptionFactory;
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.om.impl.MIMEOutputUtils;
+import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.soap.SOAPFactory;
+import org.apache.axis2.wsdl.builder.wsdl4j.WSDL11MEPFinder;
+import org.apache.log4j.spi.Configurator;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMMsgContext;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.Constants.MessageParts;
+import org.apache.sandesha2.Constants.SOAPVersion;
+import org.apache.sandesha2.Constants.SequenceProperties;
+import org.apache.sandesha2.Constants.WSA;
+import org.apache.sandesha2.Constants.WSRM;
+import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
+import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
+import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.wsrm.Accept;
+import org.apache.sandesha2.wsrm.AckRequested;
+import org.apache.sandesha2.wsrm.AcknowledgementRange;
+import org.apache.sandesha2.wsrm.AcksTo;
+import org.apache.sandesha2.wsrm.Address;
+import org.apache.sandesha2.wsrm.CreateSequence;
+import org.apache.sandesha2.wsrm.CreateSequenceResponse;
+import org.apache.sandesha2.wsrm.IOMRMElement;
+import org.apache.sandesha2.wsrm.IOMRMPart;
+import org.apache.sandesha2.wsrm.Identifier;
+import org.apache.sandesha2.wsrm.Sequence;
+import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
+import org.apache.sandesha2.wsrm.SequenceOffer;
+import org.apache.sandesha2.wsrm.TerminateSequence;
+import org.apache.wsdl.WSDLConstants;
+
+
+/**
+ * @author Chamikara
+ * @author Sanka
+ * @author Jaliya
+ */
+
+public class RMMsgCreator {
+
+ public static RMMsgContext createCreateSeqMsg(RMMsgContext applicationRMMsg, String tempSequenceId, String acksTo)
+ throws SandeshaException {
+
+ MessageContext applicationMsgContext = applicationRMMsg
+ .getMessageContext();
+ if (applicationMsgContext == null)
+ throw new SandeshaException("Application message is null");
+ ConfigurationContext context = applicationMsgContext.getSystemContext();
+ if (context == null)
+ throw new SandeshaException("Configuration Context is null");
+
+ SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getInstance(context).getSequencePropretyBeanMgr();
+ MessageContext createSeqmsgContext;
+ try {
+ //creating by copying common contents. (this will not set contexts
+ // except for configCtx).
+ createSeqmsgContext = SandeshaUtil
+ .shallowCopy(applicationMsgContext);
+ } catch (SandeshaException e) {
+ throw new SandeshaException(e.getMessage());
+ }
+
+ //setting contexts
+ createSeqmsgContext.setServiceGroupContext(applicationMsgContext
+ .getServiceGroupContext());
+ createSeqmsgContext.setServiceGroupContextId(applicationMsgContext
+ .getServiceGroupContextId());
+ createSeqmsgContext.setServiceContext(applicationMsgContext
+ .getServiceContext());
+ createSeqmsgContext.setServiceContextID(applicationMsgContext
+ .getServiceContextID());
+
+ String createSeqMsgId = SandeshaUtil.getUUID();
+ try {
+ OperationDescription appMsgOperationDesc = applicationMsgContext.getOperationDescription();
+ OperationDescription createSeqOperationDesc = OperationDescriptionFactory.getOperetionDescription(OperationDescriptionFactory.MEP_CONSTANT_OUT_IN);
+ createSeqOperationDesc.setPhasesOutFlow(appMsgOperationDesc.getPhasesOutFlow());
+ createSeqOperationDesc.setPhasesOutFaultFlow(appMsgOperationDesc.getPhasesOutFaultFlow());
+ createSeqOperationDesc.setPhasesInFaultFlow(appMsgOperationDesc.getPhasesInFaultFlow());
+ createSeqOperationDesc.setRemainingPhasesInFlow(appMsgOperationDesc.getRemainingPhasesInFlow());
+
+ createSeqmsgContext.setOperationDescription(createSeqOperationDesc);
+ //TODO set a suitable ope. description
+ OperationContext createSeqOpContext = new OperationContext(
+ createSeqmsgContext.getOperationDescription());
+ createSeqmsgContext.setOperationContext(createSeqOpContext);
+ createSeqOpContext.addMessageContext(createSeqmsgContext);
+ //registering opearion context
+ context.registerOperationContext(createSeqMsgId,createSeqOpContext);
+
+
+ //Setting a new SOAP Envelop.
+ SOAPEnvelope envelope = SOAPAbstractFactory.getSOAPFactory(
+ Constants.SOAPVersion.DEFAULT).getDefaultEnvelope();
+
+ createSeqmsgContext.setEnvelope(envelope);
+// createSeqOpContext.addMessageContext(createSeqmsgContext);
+// createSeqmsgContext.setOperationContext(createSeqOpContext);
+ } catch (AxisFault e2) {
+ throw new SandeshaException(e2.getMessage());
+ }
+
+ createSeqmsgContext.setTo(applicationRMMsg.getTo());
+ createSeqmsgContext.setReplyTo(applicationRMMsg.getReplyTo());
+
+ RMMsgContext createSeqRMMsg = new RMMsgContext(createSeqmsgContext);
+
+ CreateSequence createSequencePart = new CreateSequence();
+
+
+ //Adding sequence offer - if present
+ String offeredSequence = (String) context.getProperty(Constants.OFFERED_SEQUENCE_ID);
+ if (offeredSequence!=null && !"".equals(offeredSequence))
+ {
+ SequenceOffer offerPart = new SequenceOffer ();
+ Identifier identifier = new Identifier ();
+ identifier.setIndentifer(offeredSequence);
+ offerPart.setIdentifier(identifier);
+ createSequencePart.setSequenceOffer(offerPart);
+ }
+
+ //TODO decide - where to send create seq. Acksto or replyTo
+ SequencePropertyBean replyToBean = seqPropMgr.retrieve(tempSequenceId, Constants.SequenceProperties.REPLY_TO_EPR);
+ SequencePropertyBean toBean = seqPropMgr.retrieve(tempSequenceId,Constants.SequenceProperties.TO_EPR);
+
+ if (toBean==null || toBean.getValue()==null)
+ throw new SandeshaException ("To EPR is not set.");
+
+ EndpointReference toEPR = (EndpointReference) toBean.getValue();
+ EndpointReference replyToEPR = null;
+ EndpointReference acksToEPR = null;
+
+ //AcksTo value is replyto value (if set). Otherwise anonymous.
+// if (replyToBean==null || replyToBean.getValue()==null){
+// if (acksTo==null)
+// acksToEPR = new EndpointReference (Constants.WSA.NS_URI_ANONYMOUS);
+// }else {
+// acksToEPR = (EndpointReference) replyToBean.getValue();
+// }
+
+ if (acksTo==null || "".equals(acksTo))
+ acksTo = Constants.WSA.NS_URI_ANONYMOUS;
+
+ acksToEPR = new EndpointReference (acksTo);
+
+ if (replyToBean!=null && replyToBean.getValue()!=null)
+ replyToEPR = (EndpointReference) replyToBean.getValue();
+
+ createSeqRMMsg.setTo(toEPR);
+
+ //ReplyTo will be set only if not null.
+ if(replyToEPR!=null)
+ createSeqRMMsg.setReplyTo(replyToEPR);
+
+
+ //FIXME - Give user a seperate way to set acksTo (client side)
+ createSequencePart.setAcksTo(new AcksTo(new Address(acksToEPR)));
+
+ createSeqRMMsg.setMessagePart(Constants.MessageParts.CREATE_SEQ,
+ createSequencePart);
+
+ try {
+ createSeqRMMsg.addSOAPEnvelope();
+ } catch (AxisFault e1) {
+ throw new SandeshaException(e1.getMessage());
+ }
+
+ createSeqRMMsg.setAction(Constants.WSRM.ACTION_CREATE_SEQ);
+
+ createSeqRMMsg.setMessageId(createSeqMsgId);
+
+ MessageContext createSeqMsg = createSeqRMMsg.getMessageContext();
+ MessageContext applicationMsg = applicationRMMsg.getMessageContext();
+ createSeqMsg.setServiceGroupContext(applicationMsg
+ .getServiceGroupContext());
+ createSeqMsg.setServiceGroupContextId(applicationMsg
+ .getServiceGroupContextId());
+ createSeqMsg.setServiceContext(applicationMsg.getServiceContext());
+ createSeqMsg.setServiceContextID(applicationMsg.getServiceContextID());
+
+ return createSeqRMMsg;
+ }
+
+ public static RMMsgContext createTerminateSequenceMessage (RMMsgContext referenceRMMessage, String sequenceId) throws SandeshaException {
+ MessageContext referenceMessage = referenceRMMessage.getMessageContext();
+ if (referenceMessage==null)
+ throw new SandeshaException ("MessageContext is null");
+
+ RMMsgContext terminateRMMessage = SandeshaUtil.shallowCopy(referenceRMMessage);
+ MessageContext terminateMessage = terminateRMMessage.getMessageContext();
+ if (terminateMessage==null)
+ throw new SandeshaException ("MessageContext is null");
+
+ MessageInformationHeaders newMessageInfoHeaders = new MessageInformationHeaders ();
+ terminateMessage.setMessageInformationHeaders(newMessageInfoHeaders);
+ terminateMessage.setMessageID(SandeshaUtil.getUUID());
+
+ terminateMessage.setServiceGroupContext(referenceMessage
+ .getServiceGroupContext());
+ terminateMessage.setServiceGroupContextId(referenceMessage
+ .getServiceGroupContextId());
+ terminateMessage.setServiceContext(referenceMessage
+ .getServiceContext());
+ terminateMessage.setServiceContextID(referenceMessage
+ .getServiceContextID());
+
+ terminateMessage.setOperationDescription(referenceMessage.getOperationDescription());
+ OperationContext newOperationCtx = new OperationContext (terminateMessage.getOperationDescription());
+ try {
+ newOperationCtx.addMessageContext(terminateMessage);
+ } catch (AxisFault e) {
+ throw new SandeshaException (e.getMessage());
+ }
+
+ terminateMessage.setOperationContext(newOperationCtx);
+
+ ConfigurationContext configCtx = terminateMessage.getSystemContext();
+ if (configCtx==null)
+ throw new SandeshaException ("Configuration Context is null");
+ configCtx.registerOperationContext(terminateMessage.getMessageID(),newOperationCtx);
+
+ SOAPEnvelope envelope = SOAPAbstractFactory.getSOAPFactory(Constants.SOAPVersion.DEFAULT).getDefaultEnvelope();
+ terminateRMMessage.setSOAPEnvelop(envelope);
+
+ TerminateSequence terminateSequencePart = new TerminateSequence ();
+ Identifier identifier = new Identifier ();
+ identifier.setIndentifer(sequenceId);
+ terminateSequencePart.setIdentifier(identifier);
+ terminateRMMessage.setMessagePart(Constants.MessageParts.TERMINATE_SEQ,terminateSequencePart);
+
+ return terminateRMMessage;
+ }
+
+ public static RMMsgContext createCreateSeqResponseMsg(
+ RMMsgContext createSeqMessage, MessageContext outMessage, String newSequenceID)
+ throws AxisFault {
+
+ IOMRMElement messagePart = createSeqMessage
+ .getMessagePart(Constants.MessageParts.CREATE_SEQ);
+ CreateSequence cs = (CreateSequence) messagePart;
+
+ CreateSequenceResponse response = new CreateSequenceResponse();
+
+ Identifier identifier = new Identifier();
+ identifier.setIndentifer(newSequenceID);
+
+ response.setIdentifier(identifier);
+
+ SequenceOffer offer = cs.getSequenceOffer();
+ if (offer!=null) {
+ String outSequenceId = offer.getIdentifer().getIdentifier();
+
+ //TODO do a better validation for the offered out sequence id.
+ if (outSequenceId!=null && !"".equals(outSequenceId)) {
+
+ Accept accept = new Accept();
+ EndpointReference acksToEPR = createSeqMessage.getTo();
+ AcksTo acksTo = new AcksTo();
+ Address address = new Address();
+ address.setEpr(acksToEPR);
+ acksTo.setAddress(address);
+ accept.setAcksTo(acksTo);
+ response.setAccept(accept);
+ }
+
+
+ }
+
+
+ SOAPEnvelope envelope = SOAPAbstractFactory.getSOAPFactory(
+ Constants.SOAPVersion.DEFAULT).getDefaultEnvelope();
+ response.toOMElement(envelope.getBody());
+ outMessage.setWSAAction(Constants.WSRM.NS_URI_CREATE_SEQ_RESPONSE);
+
+ String newMessageId = SandeshaUtil.getUUID();
+ outMessage.setMessageID(newMessageId);
+
+ outMessage.setEnvelope(envelope);
+
+ RMMsgContext createSeqResponse = null;
+ try {
+ createSeqResponse = MsgInitializer.initializeMessage(outMessage);
+ } catch (SandeshaException ex) {
+ throw new AxisFault("Cant initialize the message");
+ }
+
+ return createSeqResponse;
+ }
+
+ //Adds a ack message to the following message.
+ public static void addAckMessage(RMMsgContext applicationMsg,
+ String sequenceId) throws SandeshaException {
+ SOAPEnvelope envelope = applicationMsg.getSOAPEnvelope();
+ if (envelope == null) {
+ SOAPEnvelope newEnvelope = SOAPAbstractFactory.getSOAPFactory(
+ Constants.SOAPVersion.DEFAULT).getDefaultEnvelope();
+ applicationMsg.setSOAPEnvelop(newEnvelope);
+ }
+ envelope = applicationMsg.getSOAPEnvelope();
+
+ SequenceAcknowledgement sequenceAck = new SequenceAcknowledgement();
+ Identifier id = new Identifier();
+ id.setIndentifer(sequenceId);
+ sequenceAck.setIdentifier(id);
+
+ ConfigurationContext ctx = applicationMsg.getMessageContext()
+ .getSystemContext();
+ SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory
+ .getInstance(ctx).getSequencePropretyBeanMgr();
+
+ SequencePropertyBean seqBean = seqPropMgr.retrieve(sequenceId,
+ Constants.SequenceProperties.RECEIVED_MESSAGES);
+ String msgNoList = (String) seqBean.getValue();
+
+ AcknowledgementRange[] ackRangeArr = SandeshaUtil
+ .getAckRangeArray(msgNoList);
+
+ int length = ackRangeArr.length;
+
+ for (int i = 0; i < length; i++)
+ sequenceAck.addAcknowledgementRanges(ackRangeArr[i]);
+
+ sequenceAck.toOMElement(envelope.getHeader());
+ applicationMsg.setAction(Constants.WSRM.ACTION_SEQ_ACK);
+ applicationMsg.setMessageId(SandeshaUtil.getUUID());
+
+ }
+
+ public static RMMsgContext createAckMessage(RMMsgContext applicationRMMsgCtx)
+ throws SandeshaException {
+ try {
+ MessageContext applicationMsgCtx = applicationRMMsgCtx
+ .getMessageContext();
+ MessageContext ackMsgCtx = SandeshaUtil
+ .shallowCopy(applicationMsgCtx);
+ ackMsgCtx.setServiceGroupContext(applicationMsgCtx
+ .getServiceGroupContext());
+ ackMsgCtx.setServiceGroupContextId(applicationMsgCtx
+ .getServiceGroupContextId());
+ ackMsgCtx.setServiceContext(applicationMsgCtx.getServiceContext());
+ ackMsgCtx.setServiceContextID(applicationMsgCtx
+ .getServiceContextID());
+
+ RMMsgContext ackRMMsgCtx = new RMMsgContext(ackMsgCtx);
+
+ //TODO set a suitable description
+ OperationContext ackOpCtx = new OperationContext(applicationMsgCtx
+ .getOperationDescription());
+
+ ackMsgCtx.setOperationContext(ackOpCtx);
+ ackOpCtx.addMessageContext(ackMsgCtx);
+
+ Sequence reqSequence = (Sequence) applicationRMMsgCtx
+ .getMessagePart(Constants.MessageParts.SEQUENCE);
+ if (reqSequence == null)
+ throw new SandeshaException(
+ "Sequence part of application message is null");
+
+ String sequenceId = reqSequence.getIdentifier().getIdentifier();
+
+ addAckMessage(ackRMMsgCtx, sequenceId);
+ return ackRMMsgCtx;
+ } catch (AxisFault e) {
+ throw new SandeshaException(e.getMessage());
+ }
+ }
+}
\ No newline at end of file
Added: webservices/sandesha/trunk/src/org/apache/sandesha2/util/SOAPAbstractFactory.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/SOAPAbstractFactory.java?rev=328267&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SOAPAbstractFactory.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SOAPAbstractFactory.java Mon Oct 24 23:01:50 2005
@@ -0,0 +1,42 @@
+/*
+ * Copyright 1999-2004 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.
+ *
+ */
+
+package org.apache.sandesha2.util;
+
+import org.apache.axis2.om.OMAbstractFactory;
+import org.apache.axis2.soap.SOAPFactory;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.Constants.SOAPVersion;
+
+/**
+ * @author Chamikara
+ * @author Sanka
+ * @author Jaliya
+ */
+
+
+public class SOAPAbstractFactory {
+
+ public static SOAPFactory getSOAPFactory (int SOAPVersion) {
+ if (SOAPVersion==Constants.SOAPVersion.v1_1)
+ return OMAbstractFactory.getSOAP11Factory();
+ else if(SOAPVersion==Constants.SOAPVersion.v1_2)
+ return OMAbstractFactory.getSOAP12Factory();
+ else
+ return null;
+ }
+}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java Mon Oct 24 23:01:50 2005
@@ -53,11 +53,11 @@
import org.apache.axis2.util.UUIDGenerator;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.InOrderInvoker;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.SandeshaException;
-import org.apache.sandesha2.Sender;
import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
+import org.apache.sandesha2.workers.InOrderInvoker;
+import org.apache.sandesha2.workers.Sender;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
/**
Added: webservices/sandesha/trunk/src/org/apache/sandesha2/util/SequenceManager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/SequenceManager.java?rev=328267&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SequenceManager.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SequenceManager.java Mon Oct 24 23:01:50 2005
@@ -0,0 +1,136 @@
+/*
+ * Created on Sep 5, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.apache.sandesha2.util;
+
+import java.util.ArrayList;
+
+import javax.naming.Context;
+
+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.sandesha2.Constants;
+import org.apache.sandesha2.RMMsgContext;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.Constants.ClientProperties;
+import org.apache.sandesha2.Constants.MessageParts;
+import org.apache.sandesha2.Constants.SequenceProperties;
+import org.apache.sandesha2.Constants.WSA;
+import org.apache.sandesha2.handlers.SandeshaInHandler;
+import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
+import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beans.NextMsgBean;
+import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.wsrm.AcksTo;
+import org.apache.sandesha2.wsrm.CreateSequence;
+
+/**
+ * @author Chamikara
+ * @author Sanka
+ * @author Jaliya
+ */
+public class SequenceManager {
+
+ public static String setupNewSequence(RMMsgContext createSequenceMsg) throws AxisFault {
+ // SequencePropertyBean seqPropBean = new SequencePropertyBean
+ // (sequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES,"");
+ // SequencePropertyBeanMgr beanMgr = new SequencePropertyBeanMgr
+ // (Constants.DEFAULT_STORAGE_TYPE);
+ // beanMgr.create(seqPropBean);
+
+ String sequenceId = SandeshaUtil.getUUID();
+ AbstractContext context = createSequenceMsg.getContext();
+
+ EndpointReference to = createSequenceMsg.getTo();
+ if (to==null)
+ throw new AxisFault ("To is null");
+
+
+ EndpointReference replyTo = createSequenceMsg.getReplyTo();
+ if (replyTo == null)
+ throw new AxisFault("ReplyTo is null");
+
+ CreateSequence createSequence = (CreateSequence) createSequenceMsg
+ .getMessagePart(Constants.MessageParts.CREATE_SEQ);
+ if (createSequence == null)
+ throw new AxisFault("Create Sequence Part is null");
+
+ EndpointReference acksTo = createSequence.getAcksTo().getAddress()
+ .getEpr();
+
+ if (acksTo == null)
+ throw new AxisFault("AcksTo is null");
+
+ SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory
+ .getInstance(context).getSequencePropretyBeanMgr();
+
+ //TODO - recheck following
+ //incoming To - reply address of response messages
+ //imcoming replyTo - to address of response messages
+ SequencePropertyBean receivedMsgBean = new SequencePropertyBean(
+ sequenceId, Constants.SequenceProperties.RECEIVED_MESSAGES, "");
+ SequencePropertyBean toBean = new SequencePropertyBean (sequenceId,
+ Constants.SequenceProperties.TO_EPR,replyTo);
+ SequencePropertyBean replyToBean = new SequencePropertyBean(sequenceId,
+ Constants.SequenceProperties.REPLY_TO_EPR, to);
+ SequencePropertyBean acksToBean = new SequencePropertyBean(sequenceId,
+ Constants.SequenceProperties.ACKS_TO_EPR, acksTo);
+
+ seqPropMgr.insert(receivedMsgBean);
+ seqPropMgr.insert(toBean);
+ seqPropMgr.insert(replyToBean);
+ seqPropMgr.insert(acksToBean);
+
+ NextMsgBeanMgr nextMsgMgr = AbstractBeanMgrFactory.getInstance(context)
+ .getNextMsgBeanMgr();
+ nextMsgMgr.insert(new NextMsgBean(sequenceId, 1)); // 1 will be the next
+ // message to invoke
+ //this will apply for only in-order invocations.
+
+ return sequenceId;
+ }
+
+ public void removeSequence(String sequence) {
+
+ }
+
+ public static void setupNewClientSequence (MessageContext firstAplicationMsgCtx, String tempSequenceId) throws SandeshaException {
+
+ AbstractContext context = firstAplicationMsgCtx.getSystemContext();
+ SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getInstance(context).getSequencePropretyBeanMgr();
+
+
+ EndpointReference toEPR = firstAplicationMsgCtx.getTo();
+ EndpointReference replyToEPR = firstAplicationMsgCtx.getReplyTo();
+ String acksTo = (String) firstAplicationMsgCtx.getProperty(Constants.ClientProperties.AcksTo);
+
+ if (toEPR==null)
+ throw new SandeshaException ("WS-Addressing To is null");
+
+ SequencePropertyBean toBean = new SequencePropertyBean (tempSequenceId, Constants.SequenceProperties.TO_EPR,toEPR);
+
+ //Default value for acksTo is anonymous
+ if (acksTo==null)
+ acksTo = Constants.WSA.NS_URI_ANONYMOUS;
+
+ EndpointReference acksToEPR = new EndpointReference (acksTo);
+ SequencePropertyBean acksToBean = new SequencePropertyBean (tempSequenceId, Constants.SequenceProperties.ACKS_TO_EPR,acksToEPR);
+
+// //TODO - make default for replyTo anonymous
+// if (replyToEPR==null)
+// replyToEPR = new EndpointReference (Constants.WSA.NS_URI_ANONYMOUS);
+
+ seqPropMgr.insert(toBean);
+ seqPropMgr.insert(acksToBean);
+
+
+
+ }
+}
\ No newline at end of file
Added: webservices/sandesha/trunk/src/org/apache/sandesha2/workers/InOrderInvoker.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/workers/InOrderInvoker.java?rev=328267&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/workers/InOrderInvoker.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/workers/InOrderInvoker.java Mon Oct 24 23:01:50 2005
@@ -0,0 +1,159 @@
+/*
+ * Copyright 1999-2004 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.
+ *
+ */
+
+package org.apache.sandesha2.workers;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMMsgContext;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.Constants.MessageParts;
+import org.apache.sandesha2.Constants.SequenceProperties;
+import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
+import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.StorageMapBeanMgr;
+import org.apache.sandesha2.storage.beans.NextMsgBean;
+import org.apache.sandesha2.storage.beans.SequencePropertyBean;
+import org.apache.sandesha2.storage.beans.StorageMapBean;
+import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.wsrm.Sequence;
+import org.ietf.jgss.MessageProp;
+
+/**
+ * @author Chamikara
+ * @author Sanka
+ * @author Jaliya
+ */
+
+//TODO rename to Invoker
+public class InOrderInvoker extends Thread {
+ boolean invokerStarted = false;
+
+ ConfigurationContext context = null;
+
+ public synchronized void stopInvoker() {
+ invokerStarted = false;
+ }
+
+ public synchronized boolean isInvokerStarted() {
+ return invokerStarted;
+ }
+
+ public void setConfugurationContext(ConfigurationContext context) {
+ this.context = context;
+ }
+
+ public void start (ConfigurationContext context) {
+ invokerStarted = true;
+ this.context = context;
+ super.start();
+ }
+
+ public void run() {
+
+ while (isInvokerStarted()) {
+
+ try {
+ Thread.sleep(1000);
+ } catch (InterruptedException ex) {
+ System.out.println("Invoker was Inturrepted....");
+ }
+
+
+ try {
+ NextMsgBeanMgr nextMsgMgr = AbstractBeanMgrFactory.getInstance(
+ context).getNextMsgBeanMgr();
+
+ StorageMapBeanMgr storageMapMgr = AbstractBeanMgrFactory
+ .getInstance(context).getStorageMapBeanMgr();
+
+ SequencePropertyBeanMgr sequencePropMgr = AbstractBeanMgrFactory
+ .getInstance(context).getSequencePropretyBeanMgr();
+
+
+
+ //Getting the incomingSequenceIdList
+ SequencePropertyBean sequencePropertyBean = (SequencePropertyBean) sequencePropMgr.retrieve(Constants.SequenceProperties.ALL_SEQUENCES,Constants.SequenceProperties.INCOMING_SEQUENCE_LIST);
+ if (sequencePropertyBean==null)
+ continue;
+
+
+ ArrayList seqPropList = (ArrayList) sequencePropertyBean.getValue();
+ Iterator seqPropIt = seqPropList.iterator();
+
+ while (seqPropIt.hasNext()){
+
+ String sequenceId = (String) seqPropIt.next();
+
+ NextMsgBean nextMsgBean = nextMsgMgr.retrieve(sequenceId);
+ if (nextMsgBean==null)
+ throw new SandeshaException ("Next message not set correctly");
+
+ long nextMsgno = nextMsgBean.getNextMsgNoToProcess();
+ if (nextMsgno<=0)
+ throw new SandeshaException ("Invalid messaage number for the nextMsgNo");
+
+ Iterator stMapIt = storageMapMgr.find(new StorageMapBean (null,nextMsgno,sequenceId)).iterator();
+
+ while (stMapIt.hasNext()) {
+
+ StorageMapBean stMapBean = (StorageMapBean) stMapIt.next();
+ String key = stMapBean.getKey();
+
+ MessageContext msgToInvoke = SandeshaUtil.getStoredMessageContext(key);
+
+ //removing the storage map entry.
+ storageMapMgr.delete(key);
+
+ RMMsgContext rmMsg = MsgInitializer.initializeMessage(msgToInvoke);
+ Sequence seq = (Sequence) rmMsg.getMessagePart(Constants.MessageParts.SEQUENCE);
+ long msgNo = seq.getMessageNumber().getMessageNumber();
+
+ System.out.println("Invoking message number " + msgNo + " of the sequence " + sequenceId);
+ try {
+ //Invoking the message.
+ new AxisEngine (msgToInvoke.getSystemContext()).receive(msgToInvoke);
+ } catch (AxisFault e) {
+ throw new SandeshaException (e.getMessage());
+ }
+
+ //undating the next mst to invoke
+ nextMsgno++;
+ stMapIt = storageMapMgr.find(new StorageMapBean (null,nextMsgno,sequenceId)).iterator();
+ }
+
+ nextMsgBean.setNextMsgNoToProcess(nextMsgno);
+ nextMsgMgr.update(nextMsgBean);
+ }
+ } catch (SandeshaException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+ }
+ }
+}
\ No newline at end of file
Added: webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java?rev=328267&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java Mon Oct 24 23:01:50 2005
@@ -0,0 +1,212 @@
+/*
+ * Copyright 1999-2004 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.
+ *
+ */
+package org.apache.sandesha2.workers;
+
+import java.lang.reflect.InvocationTargetException;
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.clientapi.Call;
+import org.apache.axis2.clientapi.InOutMEPClient;
+import org.apache.axis2.clientapi.MessageSender;
+import org.apache.axis2.clientapi.TwoWayTransportBasedSender;
+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.description.OperationDescription;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.axis2.i18n.Messages;
+import org.apache.axis2.om.OMException;
+import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.axis2.transport.TransportUtils;
+import org.apache.axis2.wsdl.WSDLConstants;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMMsgContext;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.Constants.MessageTypes;
+import org.apache.sandesha2.client.SandeshaMepClient;
+import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
+import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
+import org.apache.sandesha2.storage.beanmanagers.RetransmitterBeanMgr;
+import org.apache.sandesha2.storage.beans.RetransmitterBean;
+import org.apache.sandesha2.util.MsgInitializer;
+import org.apache.sandesha2.util.SandeshaUtil;
+import org.apache.sandesha2.wsrm.Sequence;
+
+/**
+ * @author Chamikara
+ * @author Sanka
+ */
+
+public class Sender extends Thread {
+
+ private boolean senderStarted = false;
+
+ private ConfigurationContext context = null;
+
+ public synchronized void stopSender() {
+ senderStarted = false;
+ }
+
+ public synchronized boolean isSenderStarted() {
+ return senderStarted;
+ }
+
+ public void run() {
+
+ while (senderStarted) {
+ try {
+ if (context == null)
+ throw new SandeshaException(
+ "Can't continue the Sender. Context is null");
+ } catch (SandeshaException e) {
+ e.printStackTrace();
+ return;
+ }
+
+ RetransmitterBeanMgr mgr = AbstractBeanMgrFactory.getInstance(
+ context).getRetransmitterBeanMgr();
+ Collection coll = mgr.findMsgsToSend();
+ Iterator iter = coll.iterator();
+ while (iter.hasNext()) {
+ RetransmitterBean bean = (RetransmitterBean) iter.next();
+ String key = (String) bean.getKey();
+ MessageContext msgCtx = SandeshaUtil
+ .getStoredMessageContext(key);
+
+ try {
+ RMMsgContext rmMsgCtx = MsgInitializer
+ .initializeMessage(msgCtx);
+ updateMessage(msgCtx);
+
+ new AxisEngine(context).send(msgCtx);
+ //if (!msgCtx.isServerSide())
+ checkForSyncResponses(msgCtx);
+
+ } catch (AxisFault e1) {
+ e1.printStackTrace();
+ } catch (SandeshaException e2) {
+ e2.printStackTrace();
+ }
+
+ //changing the values of the sent bean.
+ bean.setLastSentTime(System.currentTimeMillis());
+ bean.setSentCount(bean.getSentCount() + 1);
+
+ //update if resend=true otherwise delete. (reSend=false means
+ // send only once).
+ if (bean.isReSend())
+ mgr.update(bean);
+ else
+ mgr.delete(bean.getMessageId());
+
+ }
+
+ try {
+ Thread.sleep(2000);
+ } catch (InterruptedException e1) {
+ //e1.printStackTrace();
+ System.out.println("Sender was interupted...");
+ }
+ }
+
+ }
+
+ private boolean isResponseExpected(RMMsgContext rmMsgCtx) {
+ boolean responseExpected = false;
+
+ if (rmMsgCtx.getMessageType() == Constants.MessageTypes.CREATE_SEQ) {
+ responseExpected = true;
+ }
+ if (rmMsgCtx.getMessageType() == Constants.MessageTypes.APPLICATION) {
+ //a ack may arrive. (not a application response)
+ if (rmMsgCtx.getMessageContext().getOperationDescription()
+ .getMessageExchangePattern().equals(
+ org.apache.wsdl.WSDLConstants.MEP_URI_IN_OUT)) {
+ responseExpected = true;
+ }
+ }
+
+ return true;
+ }
+
+ public void start(ConfigurationContext context) {
+ senderStarted = true;
+ this.context = context;
+ super.start();
+ }
+
+ private void updateMessage(MessageContext msgCtx1) throws SandeshaException {
+ try {
+ RMMsgContext rmMsgCtx1 = MsgInitializer.initializeMessage(msgCtx1);
+ rmMsgCtx1.addSOAPEnvelope();
+
+ } catch (AxisFault e) {
+ throw new SandeshaException("Exception in updating contexts");
+ }
+
+ }
+
+ private void checkForSyncResponses(MessageContext msgCtx) throws AxisFault {
+
+ boolean responsePresent = (msgCtx
+ .getProperty(MessageContext.TRANSPORT_IN) != null);
+
+ if (responsePresent) {
+ //create the response
+ MessageContext response = new MessageContext(msgCtx
+ .getSystemContext(), msgCtx.getSessionContext(), msgCtx
+ .getTransportIn(), msgCtx.getTransportOut());
+ response.setProperty(MessageContext.TRANSPORT_IN, msgCtx
+ .getProperty(MessageContext.TRANSPORT_IN));
+
+ response.setServerSide(false);
+
+ //If request is REST we assume the response is REST, so set the
+ // variable
+ response.setDoingREST(msgCtx.isDoingREST());
+ response.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
+ response.setServiceGroupContext(msgCtx.getServiceGroupContext());
+ response.setServiceContext(msgCtx.getServiceContext());
+ response.setServiceDescription(msgCtx.getServiceDescription());
+ response.setServiceGroupDescription(msgCtx.getServiceGroupDescription());
+
+ //Changed following from TransportUtils to SandeshaUtil since op. context is anavailable.
+ SOAPEnvelope resenvelope = null;
+ try {
+ resenvelope = SandeshaUtil.createSOAPMessage(
+ response, msgCtx.getEnvelope().getNamespace().getName());
+ } catch (AxisFault e) {
+ //TODO: change to log.debug
+ }
+
+ if (resenvelope != null) {
+ AxisEngine engine = new AxisEngine(msgCtx.getSystemContext());
+ response.setEnvelope(resenvelope);
+ engine.receive(response);
+ }
+ }
+ }
+
+}
\ No newline at end of file
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Accept.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Accept.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Accept.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Accept.java Mon Oct 24 23:01:50 2005
@@ -27,7 +27,7 @@
import org.apache.axis2.om.OMNamespace;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.java Mon Oct 24 23:01:50 2005
@@ -26,7 +26,7 @@
import org.apache.axis2.soap.SOAPHeader;
import org.apache.axis2.soap.SOAPHeaderBlock;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java Mon Oct 24 23:01:50 2005
@@ -33,7 +33,7 @@
import org.apache.axis2.om.OMNode;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcksTo.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcksTo.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcksTo.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcksTo.java Mon Oct 24 23:01:50 2005
@@ -31,7 +31,7 @@
import org.apache.axis2.om.OMNode;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Address.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Address.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Address.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Address.java Mon Oct 24 23:01:50 2005
@@ -16,7 +16,7 @@
import org.apache.axis2.om.OMException;
import org.apache.axis2.om.OMNamespace;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequence.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequence.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequence.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequence.java Mon Oct 24 23:01:50 2005
@@ -28,7 +28,7 @@
import org.apache.axis2.soap.SOAPBody;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java Mon Oct 24 23:01:50 2005
@@ -25,7 +25,7 @@
import org.apache.axis2.soap.SOAPBody;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Expires.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Expires.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Expires.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Expires.java Mon Oct 24 23:01:50 2005
@@ -24,7 +24,7 @@
import org.apache.axis2.om.OMException;
import org.apache.axis2.om.OMNamespace;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/FaultCode.java Mon Oct 24 23:01:50 2005
@@ -24,7 +24,7 @@
import org.apache.axis2.om.OMNamespace;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Identifier.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Identifier.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Identifier.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Identifier.java Mon Oct 24 23:01:50 2005
@@ -37,7 +37,7 @@
import org.apache.axis2.om.OMNode;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
public class Identifier implements Constants, IOMRMElement {
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/LastMessage.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/LastMessage.java?rev=328267&r1=328266&r2=328267&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/LastMessage.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/LastMessage.java Mon Oct 24 23:01:50 2005
@@ -27,7 +27,7 @@
import org.apache.axis2.om.OMNode;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
-import org.apache.sandesha2.SOAPAbstractFactory;
+import org.apache.sandesha2.util.SOAPAbstractFactory;
/**
* @author Saminda
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org