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/09/21 11:35:38 UTC
svn commit: r290667 - in /webservices/sandesha/trunk: ./ config/
samples/interop/ src/org/apache/sandesha2/
src/org/apache/sandesha2/handlers/ src/org/apache/sandesha2/msgprocessors/
src/org/apache/sandesha2/msgreceivers/ src/org/apache/sandesha2/stora...
Author: chamikara
Date: Wed Sep 21 02:34:02 2005
New Revision: 290667
URL: http://svn.apache.org/viewcvs?rev=290667&view=rev
Log:
Changed storage classes to store in ConfigurationContext (instead of static objects).
Added:
webservices/sandesha/trunk/samples/interop/services.xml
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/IOMRMPart.java
Removed:
webservices/sandesha/trunk/samples/interop/service.xml
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/
Modified:
webservices/sandesha/trunk/config/module.xml
webservices/sandesha/trunk/maven.xml
webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java
webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java
webservices/sandesha/trunk/src/org/apache/sandesha2/RMException.java
webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java
webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaModule.java
webservices/sandesha/trunk/src/org/apache/sandesha2/SequenceMenager.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/AbstractBeanMgrFactory.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/CreateSeqBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/NextMsgBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/RetransmitterBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SequencePropertyBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/StorageMapBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemBeanMgrFactory.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemCreateSeqBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemNextMsgBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemRetransmitterBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemSequencePropretyBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemStorageMapBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.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/Sequence.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/TerminateSequence.java
Modified: webservices/sandesha/trunk/config/module.xml
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/config/module.xml?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/config/module.xml (original)
+++ webservices/sandesha/trunk/config/module.xml Wed Sep 21 02:34:02 2005
@@ -13,18 +13,19 @@
</outflow>
-
- <operation name="CreateSequence" mep="http://www.w3.org/2004/08/wsdl/in-out">
- <messageReceiver class="org.apache.sandesha2.msgreceivers.RMMessageReceiver"/>
- <parameter name="wsamapping" locked="xsd:false">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</parameter>
- </operation>
-
<operation name="TerminateSequence" mep="http://www.w3.org/2004/08/wsdl/in-only">
<messageReceiver class="org.apache.sandesha2.msgreceivers.RMMessageReceiver"/>
<parameter name="wsamapping" locked="xsd:false">http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence</parameter>
</operation>
+
+ <operation name="CreateSequence" mep="http://www.w3.org/2004/08/wsdl/in-out">
+ <messageReceiver class="org.apache.sandesha2.msgreceivers.RMMessageReceiver"/>
+ <parameter name="wsamapping" locked="xsd:false">http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</parameter>
+ </operation>
<!--
+http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence
+http://schemas.xmlsoap.org/ws/2005/02/rm/TerminateSequence
<operation name="CreateSequence" mep="http://www.w3.org/2004/08/wsdl/in-out">
<parameter name="wsamapping" >http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequence</parameter>
<messageReceiver class="org.apache.sandesha2.msgreceivers.RMMessageReceiver"/>
Modified: webservices/sandesha/trunk/maven.xml
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/maven.xml?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/maven.xml (original)
+++ webservices/sandesha/trunk/maven.xml Wed Sep 21 02:34:02 2005
@@ -26,7 +26,7 @@
<ant:property name="service.jar.name" value="InteropService.jar"/>
<ant:mkdir dir="${basedir}/target/dist" />
<ant:mkdir dir="${basedir}/target/samples/classes/META-INF" />
- <ant:copy file="${dir.samples}/interop/service.xml" todir="${basedir}/target/samples/classes/META-INF" />
+ <ant:copy file="${dir.samples}/interop/services.xml" todir="${basedir}/target/samples/classes/META-INF" />
<ant:jar jarfile="${basedir}/target/dist/${service.jar.name}" basedir="${maven.build.dir}/samples/classes" />
</goal>
Added: webservices/sandesha/trunk/samples/interop/services.xml
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/samples/interop/services.xml?rev=290667&view=auto
==============================================================================
--- webservices/sandesha/trunk/samples/interop/services.xml (added)
+++ webservices/sandesha/trunk/samples/interop/services.xml Wed Sep 21 02:34:02 2005
@@ -0,0 +1,22 @@
+<service name="InteropService">
+ <parameter name="ServiceClass" locked="xsd:false">org.apache.sandesha2.samples.RMInteropService</parameter>
+
+ <description>
+ This is a testing service , to test the system is working or not
+ </description>
+
+ <module ref="sandesha" />
+
+ <operation name="ping">
+ <messageReceiver class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" />
+ </operation>
+
+ <operation name="echoString" />
+
+<!--
+ <operation name="ping">
+ <messageReceiver class="org.apache.sandesha2.msgreceivers.RMMessageReceiver" />
+ </operation>
+-->
+
+</service>
\ No newline at end of file
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java Wed Sep 21 02:34:02 2005
@@ -34,6 +34,7 @@
String ACTION_SEQ_ACK = "http://schemas.xmlsoap.org/ws/2005/02/rm/SequenceAcknowledgement";
+ String ACTION_CREATE_SEQ = "http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse";
String NS_URI_CREATE_SEQ_RESPONSE = "http://schemas.xmlsoap.org/ws/2005/02/rm/CreateSequenceResponse";
@@ -153,13 +154,15 @@
String SEQ_PROPERTY_ACKS_TO = "acksToProperty";
+ String SEQ_PROPERTY_OUT_SEQUENCE_ID = "OutSequenceId";
+
//SOAP versions
int SOAP_1_1 = 1;
int SOAP_1_2 = 2;
- int DEFAULT_SOAP_VERSION = SOAP_1_2;
+ int DEFAULT_SOAP_VERSION = SOAP_1_1;
//message context properties
@@ -181,5 +184,15 @@
String DEFAULT_INVOCATION_TYPE = EXACTLY_ONCE;
+
+ String CREATE_SEQUECE_BEAN_MAP = "CreateSequenceBeanMap";
+
+ String RETRANSMITTER_BEAN_MAP = "RetransmitterBeanMap";
+
+ String SEQUENCE_PROPERTY_BEAN_MAP = "SequencePropertyBeanMap";
+
+ String STORAGE_MAP_BEAN_MAP = "StorageMapBeanMap";
+
+ String NEXT_MESSAGE_BEAN_MAP = "NextMsgBeanMap";
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java Wed Sep 21 02:34:02 2005
@@ -24,6 +24,7 @@
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.msgprocessors.MsgProcessorException;
@@ -43,6 +44,7 @@
public class InOrderInvoker extends Thread {
boolean stopInvoker = false;
+ ConfigurationContext context = null;
public synchronized void stopWork() {
stopInvoker = true;
@@ -52,16 +54,18 @@
return stopInvoker;
}
+ public void setConfugurationContext (ConfigurationContext context) {
+ this.context = context;
+ }
+
public void run (){
while (!isStopped()) {
System.out.print ("|");
- NextMsgBeanMgr nextMsgMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getNextMsgBeanMgr();
+ NextMsgBeanMgr nextMsgMgr = AbstractBeanMgrFactory.getInstance(context).getNextMsgBeanMgr();
- StorageMapBeanMgr storageMapMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getStorageMapBeanMgr();
+ StorageMapBeanMgr storageMapMgr = AbstractBeanMgrFactory.getInstance(context).getStorageMapBeanMgr();
Collection coll = nextMsgMgr.retrieveAll ();
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/RMException.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/RMException.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMException.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMException.java Wed Sep 21 02:34:02 2005
@@ -14,4 +14,7 @@
*/
public class RMException extends Exception {
+ public RMException (String message) {
+ super (message);
+ }
}
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=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java Wed Sep 21 02:34:02 2005
@@ -18,6 +18,7 @@
package org.apache.sandesha2;
import java.util.HashMap;
+import java.util.Iterator;
import javax.xml.stream.XMLOutputFactory;
import javax.xml.stream.XMLStreamWriter;
@@ -26,12 +27,16 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.addressing.miheaders.RelatesTo;
import org.apache.axis2.addressing.om.AddressingHeaders;
+import org.apache.axis2.context.AbstractContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.sandesha2.util.SandeshaUtil;
import org.apache.sandesha2.wsrm.CreateSequence;
import org.apache.sandesha2.wsrm.IOMRMElement;
+import org.apache.sandesha2.wsrm.IOMRMPart;
import org.apache.sandesha2.wsrm.TerminateSequence;
import org.apache.wsdl.WSDLConstants;
+import org.ietf.jgss.MessageProp;
/**
* @author Chamikara
@@ -50,12 +55,27 @@
messageType = Constants.MESSAGE_TYPE_UNKNOWN;
}
- public RMMsgContext (MessageContext ctx){
+ public RMMsgContext (MessageContext ctx) {
this ();
this.msgContext = ctx;
+
//MsgInitializer.populateRMMsgContext(ctx,this);
}
+ public void addSOAPEnvelope () throws AxisFault {
+ if (msgContext.getEnvelope()==null) {
+ msgContext.setEnvelope(SOAPAbstractFactory.getSOAPFactory(Constants.DEFAULT_SOAP_VERSION).getDefaultEnvelope());
+ }
+
+ SOAPEnvelope envelope = msgContext.getEnvelope();
+ Iterator keys = rmMessageParts.keySet().iterator();
+ while (keys.hasNext()) {
+ Object key = keys.next();
+ IOMRMPart rmPart = (IOMRMPart) rmMessageParts.get(key);
+ rmPart.toSOAPEnvelope(envelope);
+ }
+ }
+
public int getMessageType (){
return messageType;
}
@@ -65,7 +85,7 @@
this.messageType = msgType;
}
- public void setMessagePart (int partId, IOMRMElement part){
+ public void setMessagePart (int partId, IOMRMPart part){
if (partId>=0 && partId<=Constants.MAX_MSG_PART_ID)
rmMessageParts.put(new Integer (partId),part);
}
@@ -125,6 +145,10 @@
msgContext.setTo(epr);
}
+ public void setReplyTo (EndpointReference epr) {
+ msgContext.setReplyTo(epr);
+ }
+
public void setMessageId (String messageId){
msgContext.setMessageID(messageId);
}
@@ -154,6 +178,13 @@
msgContext.setProperty(key,val);
return true;
+ }
+
+ public AbstractContext getContext () {
+ if (msgContext==null)
+ return null;
+
+ return msgContext.getSystemContext();
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java Wed Sep 21 02:34:02 2005
@@ -24,12 +24,14 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.addressing.MessageInformationHeaders;
import org.apache.axis2.addressing.om.AddressingHeaders;
+import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
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.msgreceivers.RMMessageReceiver;
import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
@@ -43,6 +45,7 @@
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;
@@ -55,7 +58,37 @@
*/
public class RMMsgCreator {
+
+ public static RMMsgContext createCreateSeqMsg (RMMsgContext applicationMsg) throws AxisFault {
+ ConfigurationContext context = applicationMsg.getMessageContext().getSystemContext();
+ if (context==null)
+ throw new AxisFault ("Configuration Context is null");
+
+ MessageContext msgContext = new MessageContext (context);
+ RMMsgContext createSeqMsg = new RMMsgContext (msgContext);
+
+ IOMRMPart createSeqiuencePart = new CreateSequence ();
+ createSeqMsg.setMessagePart(Constants.MESSAGE_PART_CREATE_SEQ,createSeqiuencePart);
+ createSeqMsg.addSOAPEnvelope();
+
+ createSeqMsg.setAction(Constants.WSRM.ACTION_CREATE_SEQ);
+ EndpointReference to = applicationMsg.getTo();
+ if (to==null || to.getAddress()==null || to.getAddress()==null || to.getAddress()=="")
+ throw new AxisFault ("To value of the Application Message is not set correctly");
+
+ createSeqMsg.setTo(to);
+
+ EndpointReference replyTo = applicationMsg.getReplyTo();
+ if (replyTo==null || replyTo.getAddress()==null || replyTo.getAddress()==null || to.getAddress()=="")
+ throw new AxisFault ("ReplyTo value of the Application Message is not set correctly");
+
+ createSeqMsg.setTo(replyTo);
+ createSeqMsg.setReplyTo(replyTo);
+
+ return createSeqMsg;
+ }
+
public static RMMsgContext createCreateSeqResponseMsg (RMMsgContext createSeqMessage, MessageContext outMessage) throws AxisFault {
IOMRMElement messagePart =
@@ -130,13 +163,14 @@
id.setIndentifer(sequenceId);
sequenceAck.setIdentifier(id);
- //SequencePropertyBean seqPropBean = new SequencePropertyBean (newSequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES,acksTo);
+// SequencePropertyBean seqPropBean = new SequencePropertyBean (newSequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES,acksTo);
// SequencePropertyBeanMgr beanMgr = new SequencePropertyBeanMgr (Constants.DEFAULT_STORAGE_TYPE);
// SequencePropertyBean msgNosBean = (SequencePropertyBean) beanMgr.retrieve(sequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES);
// String msgNoList = (String) msgNosBean.getValue();
- SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getSequencePropretyBeanMgr();
+ ConfigurationContext ctx = applicationMsg.getMessageContext().getSystemContext();
+ SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getInstance(ctx).
+ getSequencePropretyBeanMgr();
SequencePropertyBean seqBean = seqPropMgr.retrieve(sequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES);
String msgNoList = (String) seqBean.getValue();
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaModule.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaModule.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaModule.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaModule.java Wed Sep 21 02:34:02 2005
@@ -35,7 +35,7 @@
public void init(AxisConfiguration axisSystem) throws AxisFault {
//Start invoker thread
-
+ //axisSystem.get
//inorderInvoker.start();
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/SequenceMenager.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/SequenceMenager.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SequenceMenager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SequenceMenager.java Wed Sep 21 02:34:02 2005
@@ -8,6 +8,10 @@
import java.util.ArrayList;
+import javax.naming.Context;
+
+import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
@@ -21,23 +25,21 @@
*/
public class SequenceMenager {
- public static void setUpNewSequence (String sequenceId) {
+ public static void setUpNewSequence (String sequenceId,ConfigurationContext context) {
// SequencePropertyBean seqPropBean = new SequencePropertyBean (sequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES,"");
// SequencePropertyBeanMgr beanMgr = new SequencePropertyBeanMgr (Constants.DEFAULT_STORAGE_TYPE);
// beanMgr.create(seqPropBean);
SequencePropertyBean seqPropBean = new SequencePropertyBean (sequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES,"");
- SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getSequencePropretyBeanMgr();
+ SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getInstance(context).getSequencePropretyBeanMgr();
seqPropMgr.insert(seqPropBean);
- NextMsgBeanMgr nextMsgMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getNextMsgBeanMgr();
+ 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.
+ //this will apply for only in-order invocations.
}
public void removeSequence (String sequence) {
-
+
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java Wed Sep 21 02:34:02 2005
@@ -17,9 +17,16 @@
package org.apache.sandesha2.handlers;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamWriter;
+
import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.axis2.soap.SOAPEnvelope;
+import org.apache.log4j.lf5.viewer.configure.MRUFileManager;
import org.apache.sandesha2.Constants;
import org.apache.sandesha2.MsgInitializer;
import org.apache.sandesha2.MsgValidator;
@@ -28,6 +35,10 @@
import org.apache.sandesha2.RMMsgCreator;
import org.apache.sandesha2.msgprocessors.MsgProcessorException;
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.Sequence;
import org.apache.wsdl.MessageReference;
import org.apache.wsdl.WSDLConstants;
@@ -57,11 +68,65 @@
}catch (RMException ex) {
throw new AxisFault ("Cant initialize the message");
}
-
-
-
+
+
if (requestRMMsgCtx.getMessageType()!=Constants.MESSAGE_TYPE_CREATE_SEQ)
RMMsgCreator.addAckMessage(rmMsgCtx);
+
+ if (rmMsgCtx.getMessageType()==Constants.MESSAGE_TYPE_UNKNOWN) {
+ //This is a possible response message.
+ System.out.println ("GOT Possible Response Message");
+
+ processResponseMessage(rmMsgCtx,requestRMMsgCtx);
+ }
+
+ SOAPEnvelope env = msgCtx.getEnvelope();
+
+ try {
+ XMLStreamWriter writer = XMLOutputFactory.newInstance().createXMLStreamWriter(System.out);
+ //env.serialize(writer);
+ }catch (Exception ex) {
+ ex.printStackTrace();
+ }
+ }
+
+ private void processResponseMessage (RMMsgContext msg,RMMsgContext reqMsg) throws AxisFault {
+ if (msg==null || reqMsg==null)
+ throw new AxisFault ("Message or reques message is null");
+
+ Sequence sequence = (Sequence) reqMsg.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
+ //check weather the seq is is available.
+
+ if (sequence==null)
+ throw new AxisFault ("Sequence part is null");
+
+ String incomingSeqId = sequence.getIdentifier().getIdentifier();
+ if (incomingSeqId==null || incomingSeqId=="")
+ throw new AxisFault ("Invalid seqence Id");
+
+ AbstractContext context = msg.getContext ();
+ if (context==null)
+ throw new AxisFault ("Context is null");
+
+ System.out.println ("INCOMING SEQUENCE ID:" + incomingSeqId);
+ SequencePropertyBeanMgr mgr = AbstractBeanMgrFactory.getInstance(context).getSequencePropretyBeanMgr();
+
+ SequencePropertyBean bean = mgr.retrieve(incomingSeqId,Constants.SEQ_PROPERTY_OUT_SEQUENCE_ID);
+
+ if(bean.getValue()==null) {
+ //sequence id is not present
+ //add a create sequence
+
+ RMMsgContext createSeqMessage = RMMsgCreator.createCreateSeqMsg (reqMsg);
+
+
+ //add msg to retransmitter with send=false;
+ }else {
+ //Sequence id is present
+ //set sequence part
+ //add message to retransmitter table with send=true;
+ }
+
}
}
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=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Wed Sep 21 02:34:02 2005
@@ -22,6 +22,7 @@
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;
@@ -59,8 +60,8 @@
//setting acked msg no range
Sequence sequence = (Sequence) rmMsgCtx.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
String sequenceId = sequence.getIdentifier().getIdentifier();
- SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getSequencePropretyBeanMgr();
+ ConfigurationContext configCtx = rmMsgCtx.getMessageContext().getSystemContext();
+ SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getInstance(configCtx).getSequencePropretyBeanMgr();
SequencePropertyBean msgsBean = seqPropMgr.retrieve( sequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES);
long msgNo = sequence.getMessageNumber().getMessageNumber();
@@ -113,15 +114,13 @@
// Pause the messages bean if not the right message to invoke.
- NextMsgBeanMgr mgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getNextMsgBeanMgr();
+ NextMsgBeanMgr mgr = AbstractBeanMgrFactory.getInstance(configCtx).getNextMsgBeanMgr();
NextMsgBean bean = mgr.retrieve(sequenceId);
if (bean==null)
throw new MsgProcessorException ("Error- The sequence does not exist");
- StorageMapBeanMgr storageMapMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getStorageMapBeanMgr();
+ StorageMapBeanMgr storageMapMgr = AbstractBeanMgrFactory.getInstance(configCtx).getStorageMapBeanMgr();
long nextMsgno = bean.getNextMsgNoToProcess();
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgreceivers/RMMessageReceiver.java Wed Sep 21 02:34:02 2005
@@ -27,6 +27,7 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.addressing.MessageInformationHeaders;
import org.apache.axis2.addressing.miheaders.RelatesTo;
+import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.om.OMAbstractFactory;
@@ -91,7 +92,8 @@
if (newSequenceId==null)
throw new AxisFault ("Internal error - Generated sequence id is null");
- SequenceMenager.setUpNewSequence(newSequenceId);
+ ConfigurationContext configCtx = inMessage.getSystemContext();
+ SequenceMenager.setUpNewSequence(newSequenceId,configCtx);
CreateSequence createSeq = (CreateSequence) createSeqMsg.getMessagePart(Constants.MESSAGE_PART_CREATE_SEQ);
if (createSeq==null)
@@ -105,8 +107,7 @@
// SequencePropertyBeanMgr beanMgr = new SequencePropertyBeanMgr (Constants.DEFAULT_STORAGE_TYPE);
// beanMgr.create(seqPropBean);
- SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
- getSequencePropretyBeanMgr();
+ SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getInstance(configCtx).getSequencePropretyBeanMgr();
seqPropMgr.insert(seqPropBean);
outMessage.setResponseWritten(true);
@@ -205,6 +206,9 @@
if (rmMsgCtx.getMessageType()==Constants.MESSAGE_TYPE_CREATE_SEQ) {
//TODO handle async create seq.
setCreateSequence(inMessage,outMessage);
+ ConfigurationContext configCtx = outMessage.getSystemContext();
+ AxisEngine engine = new AxisEngine (configCtx);
+ engine.send(outMessage);
}
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/AbstractBeanMgrFactory.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/AbstractBeanMgrFactory.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/AbstractBeanMgrFactory.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/AbstractBeanMgrFactory.java Wed Sep 21 02:34:02 2005
@@ -16,6 +16,8 @@
*/
package org.apache.sandesha2.storage;
+import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
import org.apache.sandesha2.Constants;
import org.apache.sandesha2.storage.beanmanagers.CreateSeqBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
@@ -23,7 +25,6 @@
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.StorageMapBeanMgr;
import org.apache.sandesha2.storage.inmemory.InMemBeanMgrFactory;
-import org.apache.sandesha2.storage.persistent.PersistentBeanMgrFactory;
import com.sun.corba.se.internal.core.Constant;
@@ -31,27 +32,56 @@
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public abstract class AbstractBeanMgrFactory {
+public class AbstractBeanMgrFactory {
+ AbstractContext context = null;
- public abstract CreateSeqBeanMgr getCreateSeqBeanMgr();
+ private static AbstractBeanMgrFactory instance = null;
- public abstract NextMsgBeanMgr getNextMsgBeanMgr();
+ public CreateSeqBeanMgr getCreateSeqBeanMgr() {
+ return new CreateSeqBeanMgr (context);
+ }
- public abstract RetransmitterBeanMgr getRetransmitterBeanMgr();
+ public NextMsgBeanMgr getNextMsgBeanMgr() {
+ return new NextMsgBeanMgr (context);
+ }
- public abstract SequencePropertyBeanMgr getSequencePropretyBeanMgr();
+ public RetransmitterBeanMgr getRetransmitterBeanMgr() {
+ return new RetransmitterBeanMgr (context);
+ }
- public abstract StorageMapBeanMgr getStorageMapBeanMgr();
+ public SequencePropertyBeanMgr getSequencePropretyBeanMgr() {
+ return new SequencePropertyBeanMgr (context);
+ }
+
+ public StorageMapBeanMgr getStorageMapBeanMgr() {
+ return new StorageMapBeanMgr (context);
+ }
+
+// public static AbstractBeanMgrFactory getBeanMgrFactory (int storageType) {
+// switch (storageType) {
+// case Constants.STORAGE_TYPE_PERSISTANCE:
+// return new PersistentBeanMgrFactory();
+// case Constants.STORAGE_TYPE_IN_MEMORY:
+// return new InMemBeanMgrFactory();
+// default:
+// return null;
+// }
+// }
+
+
+ private AbstractBeanMgrFactory (AbstractContext context) {
+ this.context = context;
+ }
+
+ public void init (ConfigurationContext context) {
+ this.context = context;
+ }
+
+ public static AbstractBeanMgrFactory getInstance (AbstractContext context) {
+ if (instance==null)
+ instance = new AbstractBeanMgrFactory (context);
- public static AbstractBeanMgrFactory getBeanMgrFactory (int storageType) {
- switch (storageType) {
- case Constants.STORAGE_TYPE_PERSISTANCE:
- return new PersistentBeanMgrFactory();
- case Constants.STORAGE_TYPE_IN_MEMORY:
- return new InMemBeanMgrFactory();
- default:
- return null;
- }
+ return instance;
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/CreateSeqBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/CreateSeqBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/CreateSeqBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/CreateSeqBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -17,19 +17,76 @@
package org.apache.sandesha2.storage.beanmanagers;
import java.sql.ResultSet;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Iterator;
+import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMException;
import org.apache.sandesha2.storage.beans.CreateSeqBean;
/**
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public interface CreateSeqBeanMgr {
- public boolean insert(CreateSeqBean bean);
- public boolean delete(String msgId);
- public CreateSeqBean retrieve(String msgId);
- public boolean update(CreateSeqBean bean);
- public Collection find(CreateSeqBean bean);
- public ResultSet find(String query);
+
+public class CreateSeqBeanMgr {
+
+ private Hashtable table = null;
+
+ /**
+ *
+ */
+ public CreateSeqBeanMgr(AbstractContext context) {
+ Object obj = context.getProperty(Constants.CREATE_SEQUECE_BEAN_MAP);
+ if (obj!=null) {
+ table = (Hashtable) obj;
+ }else {
+ table = new Hashtable ();
+ context.setProperty(Constants.CREATE_SEQUECE_BEAN_MAP,table);
+ }
+ }
+
+ public boolean insert(CreateSeqBean bean) {
+ table.put(bean.getCreateSeqMsgId(), bean);
+ return true;
+ }
+
+ public boolean delete(String msgId) {
+ return table.remove(msgId) != null;
+ }
+
+ public CreateSeqBean retrieve(String msgId) {
+ return (CreateSeqBean) table.get(msgId);
+ }
+
+ public boolean update(CreateSeqBean bean){
+ return table.put(bean.getCreateSeqMsgId(), bean) != null;
+ }
+
+ public Collection find(CreateSeqBean bean) {
+ ArrayList beans = new ArrayList();
+ Iterator iterator = table.values().iterator();
+
+ CreateSeqBean temp;
+ while (iterator.hasNext()) {
+ temp = (CreateSeqBean) iterator.next();
+ if ( (bean.getCreateSeqMsgId() != null
+ && bean.getCreateSeqMsgId().equals(temp.getCreateSeqMsgId()))
+ && (bean.getSequenceId() != null
+ && bean.getSequenceId().equals(bean.getSequenceId()))) {
+ beans.add(temp);
+
+ }
+ }
+ return beans;
+ }
+
+ public ResultSet find(String query) {
+ throw new UnsupportedOperationException("selectRS() is not supported");
+ }
+
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/NextMsgBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/NextMsgBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/NextMsgBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/NextMsgBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -17,20 +17,85 @@
package org.apache.sandesha2.storage.beanmanagers;
import java.sql.ResultSet;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Iterator;
+import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMException;
import org.apache.sandesha2.storage.beans.NextMsgBean;
+
/**
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public interface NextMsgBeanMgr {
- public boolean delete(String sequenceId);
- public NextMsgBean retrieve(String sequenceId);
- public boolean insert(NextMsgBean bean);
- public ResultSet find(String query);
- public Collection find(NextMsgBean bean);
- public boolean update(NextMsgBean bean);
- public Collection retrieveAll ();
+public class NextMsgBeanMgr {
+
+ private Hashtable table = null;
+
+ /**
+ *
+ */
+ public NextMsgBeanMgr(AbstractContext context) {
+ Object obj = context.getProperty(Constants.STORAGE_MAP_BEAN_MAP);
+
+ if (obj!=null) {
+ table = (Hashtable) obj;
+ }else {
+ table = new Hashtable ();
+ context.setProperty(Constants.STORAGE_MAP_BEAN_MAP,table);
+ }
+ }
+
+ public boolean delete(String sequenceId) {
+ return table.remove(sequenceId) != null;
+ }
+
+ public NextMsgBean retrieve(String sequenceId) {
+ return (NextMsgBean) table.get(sequenceId);
+ }
+
+ public boolean insert(NextMsgBean bean) {
+ table.put(bean.getSequenceId(), bean);
+ return true;
+ }
+
+ public ResultSet find(String query){
+ throw new UnsupportedOperationException("selectRS() is not supported");
+ }
+
+ public Collection find(NextMsgBean bean) {
+ ArrayList beans = new ArrayList();
+ Iterator iterator = table.values().iterator();
+
+ NextMsgBean temp;
+ while (iterator.hasNext()) {
+ temp = (NextMsgBean) iterator.next();
+
+ if ((bean.getSequenceId() != null
+ && bean.getSequenceId().equals(temp.getSequenceId()))
+ /*&& (bean.getNextMsgNoToProcess() != null
+ && bean.getNextMsgNoToProcess().equals(temp.getNextMsgNoToProcess()))*/
+ && (bean.getNextMsgNoToProcess() > 0)
+ ) {
+
+ beans.add(temp);
+ }
+
+ }
+ return beans;
+ }
+
+ public boolean update(NextMsgBean bean) {
+ return table.put(bean.getSequenceId(), bean) != null ;
+ }
+
+
+ public Collection retrieveAll() {
+ return table.values();
+ }
}
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=290667&r1=290666&r2=290667&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 Wed Sep 21 02:34:02 2005
@@ -17,21 +17,79 @@
package org.apache.sandesha2.storage.beanmanagers;
import java.sql.ResultSet;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Iterator;
+import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMException;
import org.apache.sandesha2.storage.beans.RetransmitterBean;
/**
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public interface RetransmitterBeanMgr {
- public boolean delete(String MessageId);
- public RetransmitterBean retrieve(String MessageId);
- public boolean insert(RetransmitterBean bean);
- public ResultSet find(String query);
- public Collection find(RetransmitterBean bean);
- public boolean update(RetransmitterBean bean);
+public class RetransmitterBeanMgr {
+ private Hashtable table = null;
+ /**
+ *
+ */
+ public RetransmitterBeanMgr(AbstractContext context) {
+ Object obj = context.getProperty(Constants.RETRANSMITTER_BEAN_MAP);
+ if (obj!=null) {
+ table = (Hashtable) obj;
+ }else {
+ table = new Hashtable ();
+ context.setProperty(Constants.RETRANSMITTER_BEAN_MAP,table);
+ }
+ }
+
+ public boolean delete(String MessageId) {
+ return table.remove(MessageId) != null;
+ }
+
+ public RetransmitterBean retrieve(String MessageId){
+ return (RetransmitterBean) table.get(MessageId);
+ }
+
+ public boolean insert(RetransmitterBean bean) {
+ table.put(bean.getMessageId(), bean);
+ return true;
+ }
+
+ public ResultSet find(String query) {
+ throw new UnsupportedOperationException("selectRS() is not supported");
+ }
+
+ public Collection find(RetransmitterBean bean) {
+ ArrayList beans = new ArrayList();
+ Iterator iterator = table.values().iterator();
+
+ RetransmitterBean temp;
+ while (iterator.hasNext()) {
+ temp = (RetransmitterBean) iterator.next();
+ if (!(bean.getMessageId() != null
+ && bean.getMessageId().equals(temp.getMessageId()))
+ && (bean.getCreateSeqMsgId() != null
+ && bean.getCreateSeqMsgId().equals(temp.getCreateSeqMsgId()))
+ && (bean.getKey() != null
+ && bean.getKey().equals(temp.getKey()))
+ && (bean.getLastSentTime() != -1
+ && bean.getLastSentTime() == temp.getLastSentTime())){
+
+ beans.add(temp);
+ }
+ }
+
+ return beans;
+ }
+
+ public boolean update(RetransmitterBean bean) {
+ return table.put(bean.getMessageId(), bean) != null;
+ }
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SequencePropertyBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SequencePropertyBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SequencePropertyBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/SequencePropertyBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -17,20 +17,82 @@
package org.apache.sandesha2.storage.beanmanagers;
import java.sql.ResultSet;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Iterator;
+import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMException;
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
/**
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public interface SequencePropertyBeanMgr {
- public boolean delete(String sequenceId, String name);
- public SequencePropertyBean retrieve(String sequenceId, String name);
- public boolean insert(SequencePropertyBean bean);
- public ResultSet find(String query);
- public Collection find(SequencePropertyBean bean);
- public boolean update(SequencePropertyBean bean);
+public class SequencePropertyBeanMgr {
+ private Hashtable table = null;
+
+ /**
+ *
+ */
+ public SequencePropertyBeanMgr(AbstractContext context) {
+ Object obj = context.getProperty(Constants.SEQUENCE_PROPERTY_BEAN_MAP);
+ if (obj!=null) {
+ table = (Hashtable) obj;
+ }else {
+ table = new Hashtable ();
+ context.setProperty(Constants.SEQUENCE_PROPERTY_BEAN_MAP,table);
+ }
+ }
+
+ public boolean delete(String sequenceId, String name) {
+ return table.remove(sequenceId +":" + name) != null;
+ }
+
+ public SequencePropertyBean retrieve(String sequenceId, String name){
+ return (SequencePropertyBean) table.get(sequenceId + ":" + name);
+ }
+
+ public boolean insert(SequencePropertyBean bean) {
+ table.put(bean.getSequenceId() + ":" + bean.getName(), bean);
+ return true;
+ }
+
+ public ResultSet find(String query) {
+ throw new UnsupportedOperationException("selectRS() is not supported");
+ }
+
+ public Collection find(SequencePropertyBean bean){
+ ArrayList beans = new ArrayList();
+ Iterator iterator = table.values().iterator();
+ SequencePropertyBean temp;
+
+ while (iterator.hasNext()) {
+ temp = (SequencePropertyBean) iterator.next();
+
+ if ((bean.getSequenceId() != null
+ && bean.getSequenceId().equals(temp.getSequenceId()))
+ && (bean.getName() != null
+ && bean.getName().equals(temp.getName()))
+ && (bean.getValue() != null
+ && bean.getValue().equals(temp.getValue()))) {
+
+ beans.add(temp);
+ }
+ }
+ return beans;
+ }
+
+ public boolean update(SequencePropertyBean bean) {
+ return table.put(getId(bean), bean) != null;
+
+ }
+ private String getId(SequencePropertyBean bean) {
+ return bean.getSequenceId() + ":" + bean.getName();
+ }
+
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/StorageMapBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/StorageMapBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/StorageMapBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/StorageMapBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -17,21 +17,91 @@
package org.apache.sandesha2.storage.beanmanagers;
import java.sql.ResultSet;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Hashtable;
+import java.util.Iterator;
+import org.apache.axis2.context.AbstractContext;
+import org.apache.axis2.context.ConfigurationContext;
+import org.apache.sandesha2.Constants;
+import org.apache.sandesha2.RMException;
import org.apache.sandesha2.storage.beans.CreateSeqBean;
import org.apache.sandesha2.storage.beans.StorageMapBean;
-
/**
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public interface StorageMapBeanMgr {
- public boolean insert(StorageMapBean bean);
- public boolean delete(String key);
- public StorageMapBean retrieve(String key);
- public ResultSet find(String query);
- public Collection find(StorageMapBean bean);
- public boolean update(StorageMapBean bean);
+public class StorageMapBeanMgr {
+ private Hashtable table = null;
+
+
+ /**
+ *
+ */
+ public StorageMapBeanMgr(AbstractContext context) {
+ Object obj = context.getProperty(Constants.STORAGE_MAP_BEAN_MAP);
+ if (obj!=null) {
+ table = (Hashtable) obj;
+ }else {
+ table = new Hashtable ();
+ context.setProperty(Constants.STORAGE_MAP_BEAN_MAP,table);
+ }
+ }
+
+ public boolean insert(StorageMapBean bean){
+ table.put(bean.getKey(), bean);
+ return true;
+ }
+
+ public boolean delete(String key) {
+ return table.remove(key) != null;
+ }
+
+ public StorageMapBean retrieve(String key) {
+ return (StorageMapBean) table.get(key);
+ }
+
+ public ResultSet find(String query) {
+ throw new UnsupportedOperationException("selectRS() is not implemented");
+ }
+
+ public Collection find(StorageMapBean bean) {
+ ArrayList beans = new ArrayList();
+ Iterator iterator = table.values().iterator();
+
+ StorageMapBean temp = new StorageMapBean();
+ while (iterator.hasNext()) {
+ temp = (StorageMapBean) iterator.next();
+ boolean select = true;
+ /*if ((temp.getKey() != null
+ && bean.getKey().equals(temp.getKey()))
+ && (bean.getMsgNo() != -1
+ && bean.getMsgNo() == temp.getMsgNo())
+ && (bean.getSequenceId() != null
+ && bean.getSequenceId().equals(temp.getSequenceId()))) {
+ */
+
+ //}
+
+ if (bean.getKey()!=null && !bean.getKey().equals(temp.getKey()))
+ select=false;
+
+ if (bean.getMsgNo()!=0 && bean.getMsgNo()!=temp.getMsgNo())
+ select=false;
+
+ if (bean.getSequenceId()!=null && !bean.getSequenceId().equals(temp.getSequenceId()))
+ select=false;
+
+ if (select)
+ beans.add(temp);
+ }
+ return beans;
+ }
+
+ public boolean update(StorageMapBean bean){
+ return table.put(bean.getKey(), bean) != null;
+ }
+
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemBeanMgrFactory.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemBeanMgrFactory.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemBeanMgrFactory.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemBeanMgrFactory.java Wed Sep 21 02:34:02 2005
@@ -27,8 +27,8 @@
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public class InMemBeanMgrFactory extends AbstractBeanMgrFactory {
-
+public class InMemBeanMgrFactory /*extends AbstractBeanMgrFactory*/ {
+/*
public CreateSeqBeanMgr getCreateSeqBeanMgr() {
return new InMemCreateSeqBeanMgr();
}
@@ -48,5 +48,5 @@
public StorageMapBeanMgr getStorageMapBeanMgr() {
return new InMemStorageMapBeanMgr();
}
-
+ */
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemCreateSeqBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemCreateSeqBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemCreateSeqBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemCreateSeqBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -30,13 +30,12 @@
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public class InMemCreateSeqBeanMgr implements CreateSeqBeanMgr {
+public class InMemCreateSeqBeanMgr /*implements CreateSeqBeanMgr */ {
+ /*
private static Hashtable table = new Hashtable();
- /**
- *
- */
+
public InMemCreateSeqBeanMgr() {
}
@@ -78,5 +77,6 @@
public ResultSet find(String query) {
throw new UnsupportedOperationException("selectRS() is not supported");
}
+ */
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemNextMsgBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemNextMsgBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemNextMsgBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemNextMsgBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -30,12 +30,10 @@
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public class InMemNextMsgBeanMgr implements NextMsgBeanMgr {
-
+public class InMemNextMsgBeanMgr /*implements NextMsgBeanMgr*/ {
+/*
private static Hashtable table = new Hashtable();
- /**
- *
- */
+
public InMemNextMsgBeanMgr() {
}
@@ -66,8 +64,7 @@
if ((bean.getSequenceId() != null
&& bean.getSequenceId().equals(temp.getSequenceId()))
- /*&& (bean.getNextMsgNoToProcess() != null
- && bean.getNextMsgNoToProcess().equals(temp.getNextMsgNoToProcess()))*/
+
&& (bean.getNextMsgNoToProcess() > 0)
) {
@@ -86,4 +83,5 @@
public Collection retrieveAll() {
return table.values();
}
+ */
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemRetransmitterBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemRetransmitterBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemRetransmitterBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemRetransmitterBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -29,12 +29,12 @@
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public class InMemRetransmitterBeanMgr implements RetransmitterBeanMgr {
+public class InMemRetransmitterBeanMgr /*implements RetransmitterBeanMgr*/ {
+
+ /*
private static Hashtable table = new Hashtable();
- /**
- *
- */
+
public InMemRetransmitterBeanMgr() {
}
@@ -81,5 +81,7 @@
public boolean update(RetransmitterBean bean) {
return table.put(bean.getMessageId(), bean) != null;
}
+
+ */
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemSequencePropretyBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemSequencePropretyBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemSequencePropretyBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemSequencePropretyBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -29,12 +29,10 @@
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public class InMemSequencePropretyBeanMgr implements SequencePropertyBeanMgr {
+public class InMemSequencePropretyBeanMgr /*implements SequencePropertyBeanMgr */{
+ /*
private static Hashtable table = new Hashtable();
- /**
- *
- */
public InMemSequencePropretyBeanMgr() {
}
@@ -84,5 +82,6 @@
private String getId(SequencePropertyBean bean) {
return bean.getSequenceId() + ":" + bean.getName();
}
+ */
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemStorageMapBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemStorageMapBeanMgr.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemStorageMapBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemStorageMapBeanMgr.java Wed Sep 21 02:34:02 2005
@@ -30,12 +30,12 @@
* @author Chamikara Jayalath <ch...@wso2.com>
* @author Sanka Samaranayake <ss...@gmail.com>
*/
-public class InMemStorageMapBeanMgr implements StorageMapBeanMgr {
+public class InMemStorageMapBeanMgr /*implements StorageMapBeanMgr */ {
+
+ /*
private static Hashtable table = new Hashtable();
- /**
- *
- */
+
public InMemStorageMapBeanMgr() {
}
@@ -64,13 +64,6 @@
while (iterator.hasNext()) {
temp = (StorageMapBean) iterator.next();
boolean select = true;
- /*if ((temp.getKey() != null
- && bean.getKey().equals(temp.getKey()))
- && (bean.getMsgNo() != -1
- && bean.getMsgNo() == temp.getMsgNo())
- && (bean.getSequenceId() != null
- && bean.getSequenceId().equals(temp.getSequenceId()))) {
- */
//}
@@ -92,5 +85,6 @@
public boolean update(StorageMapBean bean) {
return table.put(bean.getKey(), bean) != 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=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java Wed Sep 21 02:34:02 2005
@@ -23,6 +23,7 @@
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.om.impl.MIMEOutputUtils;
+import org.apache.axis2.util.UUIDGenerator;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
/**
@@ -35,8 +36,8 @@
private static Hashtable storedMsgContexts = new Hashtable ();
public static String getUUID () {
- String newSequenceID = "uuid:" + MIMEOutputUtils.getRandomStringOf18Characters();
- return newSequenceID;
+ String uuid = "uuid:" + UUIDGenerator.getUUID();
+ return uuid;
}
public static AcknowledgementRange[] getAckRangeArray (String msgNoStr) {
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=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AckRequested.java Wed Sep 21 02:34:02 2005
@@ -34,7 +34,7 @@
* @author sanka
*/
-public class AckRequested implements IOMRMElement {
+public class AckRequested implements IOMRMPart {
private OMElement ackRequestedElement;
private Identifier identifier;
private MessageNumber messageNumber;
@@ -118,6 +118,11 @@
public MessageNumber getMessageNumber(){
return messageNumber;
+ }
+
+ public void toSOAPEnvelope(SOAPEnvelope envelope) {
+ SOAPHeader header = envelope.getHeader();
+ toOMElement(header);
}
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=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequence.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequence.java Wed Sep 21 02:34:02 2005
@@ -37,7 +37,7 @@
*/
-public class CreateSequence implements IOMRMElement {
+public class CreateSequence implements IOMRMPart {
private OMElement createSequenceElement;
private AcksTo acksTo=null;
@@ -125,5 +125,11 @@
public SequenceOffer getSequenceOffer(){
return sequenceOffer;
}
+
+
+ public void toSOAPEnvelope(SOAPEnvelope envelope) {
+ SOAPBody body = envelope.getBody();
+ toOMElement(body);
+ }
}
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=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/CreateSequenceResponse.java Wed Sep 21 02:34:02 2005
@@ -33,7 +33,7 @@
* @author sanka
*/
-public class CreateSequenceResponse implements IOMRMElement {
+public class CreateSequenceResponse implements IOMRMPart {
private OMElement createSequenceResponseElement;
private Identifier identifier;
private Accept accept;
@@ -137,5 +137,10 @@
public void setExpires(Expires expires) {
this.expires = expires;
+ }
+
+ public void toSOAPEnvelope(SOAPEnvelope envelope) {
+ SOAPBody body = envelope.getBody();
+ toOMElement(body);
}
}
Added: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/IOMRMPart.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/IOMRMPart.java?rev=290667&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/IOMRMPart.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/IOMRMPart.java Wed Sep 21 02:34:02 2005
@@ -0,0 +1,19 @@
+/*
+ * Created on Sep 21, 2005
+ *
+ * TODO To change the template for this generated file go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+package org.apache.sandesha2.wsrm;
+
+import org.apache.axis2.soap.SOAPEnvelope;
+
+/**
+ * @author chamikara
+ *
+ * TODO To change the template for this generated type comment go to
+ * Window - Preferences - Java - Code Style - Code Templates
+ */
+public interface IOMRMPart extends IOMRMElement {
+ public void toSOAPEnvelope (SOAPEnvelope envelope);
+}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Sequence.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Sequence.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Sequence.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/Sequence.java Wed Sep 21 02:34:02 2005
@@ -38,7 +38,7 @@
*/
-public class Sequence implements IOMRMElement {
+public class Sequence implements IOMRMPart {
private OMElement sequenceElement;
@@ -139,6 +139,11 @@
}
public void setMessageNumber(MessageNumber messageNumber){
this.messageNumber = messageNumber;
+ }
+
+ public void toSOAPEnvelope(SOAPEnvelope envelope) {
+ SOAPHeader header = envelope.getHeader();
+ toOMElement(header);
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java Wed Sep 21 02:34:02 2005
@@ -41,7 +41,7 @@
* @author sanka
*/
-public class SequenceAcknowledgement implements IOMRMElement {
+public class SequenceAcknowledgement implements IOMRMPart {
private OMElement sequenceAcknowledgementElement;
private Identifier identifier;
private List acknowledgementRangeList;
@@ -175,6 +175,11 @@
public void addChildElement(OMElement element){
acknowledgementRangeList.add(element);
+ }
+
+ public void toSOAPEnvelope(SOAPEnvelope envelope) {
+ SOAPHeader header = envelope.getHeader();
+ toOMElement(header);
}
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/TerminateSequence.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/TerminateSequence.java?rev=290667&r1=290666&r2=290667&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/TerminateSequence.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/TerminateSequence.java Wed Sep 21 02:34:02 2005
@@ -33,7 +33,7 @@
* @author sanka
*/
-public class TerminateSequence implements IOMRMElement {
+public class TerminateSequence implements IOMRMPart {
private OMElement terminateSequenceElement;
private Identifier identifier;
@@ -100,4 +100,8 @@
this.identifier = identifier;
}
+ public void toSOAPEnvelope(SOAPEnvelope envelope) {
+ SOAPBody body = envelope.getBody();
+ toOMElement(body);
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org