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/11 13:06:44 UTC
svn commit: r280103 - in
/webservices/sandesha/trunk/src/org/apache/sandesha2: ./ handlers/
msgprocessors/ storage/ storage/beanmanagers/ storage/beans/
storage/inmemory/ storage/persistent/ util/
Author: chamikara
Date: Sun Sep 11 04:03:38 2005
New Revision: 280103
URL: http://svn.apache.org/viewcvs?rev=280103&view=rev
Log:
In Order invocation is working now.
Included a new thread (InOrderInvoker) which does the invoking of paused messages.
Users can select the delivery assurance they want. I.e.
InOrder, Excatly once or both.
Added:
webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java
Modified:
webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java
webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.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/ServerInHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/AbstractBeanMgrFactory.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/NextMsgBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beanmanagers/StorageMapBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/NextMsgBean.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/StorageMapBean.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemBeanMgrFactory.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemNextMsgBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemStorageMapBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentBeanMgrFactory.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentNextMsgBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentStorageMapBeanMgr.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
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=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/Constants.java Sun Sep 11 04:03:38 2005
@@ -144,18 +144,42 @@
int DEFAULT_STORAGE_TYPE = STORAGE_TYPE_IN_MEMORY;
+ String IN_HANDLER_NAME = "SandeshaInHandler";
+ //Sequence properties
String SEQ_PROPERTY_RECEIVED_MESSAGES = "SeqMsgListProperty";
String SEQ_PROPERTY_ACKS_TO = "acksToProperty";
+ //SOAP versions
int SOAP_1_1 = 1;
int SOAP_1_2 = 2;
int DEFAULT_SOAP_VERSION = SOAP_1_2;
+
+
+ //message context properties
+ String APPLICATION_PROCESSING_DONE = "APP_PROCESSING_DONE";
+
+ //delivery assurance.
+
+ String IN_ORDER = "InOrder";
+
+ String NOT_IN_ORDER = "NotInOrder";
+
+ String DEFAULT_DELIVERY_ASSURANCE = IN_ORDER;
+
+ //invocation type
+
+ String EXACTLY_ONCE = "ExactlyOnce";
+
+ String MORE_THAN_ONCE = "MoreThanOnce";
+
+ String DEFAULT_INVOCATION_TYPE = EXACTLY_ONCE;
+
}
Added: 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=280103&view=auto
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java (added)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/InOrderInvoker.java Sun Sep 11 04:03:38 2005
@@ -0,0 +1,137 @@
+/*
+ * 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;
+
+import java.util.Collection;
+import java.util.Iterator;
+
+import javax.xml.namespace.QName;
+
+
+import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
+import org.apache.sandesha2.msgprocessors.MsgProcessorException;
+import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
+import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
+import org.apache.sandesha2.storage.beanmanagers.StorageMapBeanMgr;
+import org.apache.sandesha2.storage.beans.NextMsgBean;
+import org.apache.sandesha2.storage.beans.StorageMapBean;
+import org.apache.sandesha2.util.SandeshaUtil;
+import org.ietf.jgss.MessageProp;
+
+/**
+ * @author Chamikara
+ * @author Sanka
+ * @author Jaliya
+ */
+
+public class InOrderInvoker extends Thread {
+ boolean stopInvoker = false;
+
+ public synchronized void stopWork() {
+ stopInvoker = true;
+ }
+
+ public synchronized boolean isStopped () {
+ return stopInvoker;
+ }
+
+ public void run (){
+
+ while (!isStopped()) {
+
+ System.out.print ("|");
+ NextMsgBeanMgr nextMsgMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
+ getNextMsgBeanMgr();
+
+ StorageMapBeanMgr storageMapMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
+ getStorageMapBeanMgr();
+
+ Collection coll = nextMsgMgr.retrieveAll ();
+
+ Iterator it = coll.iterator();
+
+ while (it.hasNext()) {
+ Object obj = it.next();
+ NextMsgBean nextMsgBean = (NextMsgBean) obj;
+ long msgNo = nextMsgBean.getNextMsgNoToProcess();
+ boolean tryNext = true;
+
+ while (tryNext) {
+ String seqId = nextMsgBean.getSequenceId();
+ Collection coll1 = storageMapMgr.find(new StorageMapBean (null,msgNo,seqId));
+ if (coll1==null || coll1.isEmpty())
+ {
+ tryNext=false;
+ continue;
+ }
+
+ StorageMapBean stMapBean = (StorageMapBean) coll1.iterator().next();
+ if (stMapBean==null) {
+
+ tryNext=false;
+ continue;
+ }
+
+ String key = stMapBean.getKey();
+
+ try {
+ boolean done = resumeMessageContext (key);
+ System.out.println ("Resumed");
+ if (!done) {
+ tryNext=false;
+ continue;
+ }
+ }catch (MsgProcessorException ex) {
+ ex.printStackTrace();
+ tryNext=false;
+ continue;
+ }
+
+ msgNo++;
+ }
+
+ nextMsgBean.setNextMsgNoToProcess(msgNo);
+ nextMsgMgr.update(nextMsgBean);
+ }
+
+ try {
+ Thread.sleep(20000);
+ }catch (InterruptedException ex) {
+ ex.printStackTrace();
+ }
+ }
+ }
+
+ private boolean resumeMessageContext (String key) throws MsgProcessorException {
+ MessageContext ctx = SandeshaUtil.getStoredMessageContext(key);
+ if (ctx==null)
+ return false;
+
+ ctx.setPausedTrue(new QName (Constants.IN_HANDLER_NAME)); //in case the pause is not set
+
+ //resuming.
+ try {
+ new AxisEngine(ctx.getSystemContext()).receive(ctx);
+ }catch (AxisFault ex) {
+ throw new MsgProcessorException (ex.getMessage());
+ }
+ return true;
+ }
+}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java?rev=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgContext.java Sun Sep 11 04:03:38 2005
@@ -141,6 +141,21 @@
return msgContext;
}
+ public Object getProperty (String key) {
+ if (msgContext==null)
+ return null;
+
+ return msgContext.getProperty(key);
+ }
+
+ public boolean setProperty (String key, Object val){
+ if (msgContext==null)
+ return false;
+
+ msgContext.setProperty(key,val);
+ return true;
+ }
+
}
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=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaModule.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaModule.java Sun Sep 11 04:03:38 2005
@@ -29,13 +29,19 @@
public class SandeshaModule implements Module{
+ private InOrderInvoker inorderInvoker = new InOrderInvoker ();
+
// initialize the module
public void init(AxisConfiguration axisSystem) throws AxisFault {
+ //Start invoker thread
+
+ inorderInvoker.start();
+
}
// shutdown the module
public void shutdown(AxisConfiguration axisSystem) throws AxisFault {
-
+ inorderInvoker.stopWork();
}
}
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=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SequenceMenager.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SequenceMenager.java Sun Sep 11 04:03:38 2005
@@ -9,7 +9,9 @@
import java.util.ArrayList;
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;
/**
@@ -28,6 +30,11 @@
SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
getSequencePropretyBeanMgr();
seqPropMgr.insert(seqPropBean);
+
+ NextMsgBeanMgr nextMsgMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
+ getNextMsgBeanMgr();
+ nextMsgMgr.insert(new NextMsgBean (sequenceId,1)); // 1 will be the next message to invoke
+ //this will apply for only in-order invocations.
}
public void removeSequence (String sequence) {
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerInHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerInHandler.java?rev=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerInHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerInHandler.java Sun Sep 11 04:03:38 2005
@@ -19,10 +19,13 @@
import java.util.ArrayList;
+import javax.xml.namespace.QName;
+
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.MessageInformationHeaders;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.handlers.AbstractHandler;
+import org.apache.sandesha2.Constants;
import org.apache.sandesha2.MsgInitializer;
import org.apache.sandesha2.MsgValidator;
import org.apache.sandesha2.RMException;
@@ -39,13 +42,21 @@
*/
public class ServerInHandler extends AbstractHandler {
+// public ServerInHandler (){
+// System.out.println ("NEW SERVER IN HANDLER");
+// }
+
+ public QName getName (){
+ return new QName (Constants.IN_HANDLER_NAME);
+ }
+
public void invoke(MessageContext msgCtx) throws AxisFault {
System.out.println ("In server Handler 1");
- String opearaitonName = msgCtx.getOperationContext().getAxisOperation().getName().getLocalPart();
- System.out.println ("Operation is:" + opearaitonName);
+// String opearaitonName = msgCtx.getOperationContext().getAxisOperation().getName().getLocalPart();
+// System.out.println ("Operation is:" + opearaitonName);
+//
- msgCtx.setProperty("aaaa","abcd");
RMMsgContext rmMsgCtx = null;
try {
@@ -55,7 +66,7 @@
}
MsgProcessor msgProcessor = MsgProcessorFactory.getMessageProcessor(rmMsgCtx.getMessageType());
-
+
try {
msgProcessor.processMessage(rmMsgCtx);
}catch (MsgProcessorException mpe) {
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=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Sun Sep 11 04:03:38 2005
@@ -17,15 +17,24 @@
package org.apache.sandesha2.msgprocessors;
import java.util.ArrayList;
+import java.util.Collection;
+
+import javax.xml.namespace.QName;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.engine.AxisEngine;
import org.apache.sandesha2.Constants;
import org.apache.sandesha2.MsgInitializer;
import org.apache.sandesha2.MsgValidator;
import org.apache.sandesha2.RMMsgContext;
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.SandeshaUtil;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
import org.apache.sandesha2.wsrm.Sequence;
@@ -41,23 +50,28 @@
System.out.println ("Application msg processor called");
- //setting ack range
+ if (rmMsgCtx.getProperty(Constants.APPLICATION_PROCESSING_DONE)!=null && rmMsgCtx.getProperty(Constants.APPLICATION_PROCESSING_DONE).equals("true") ) {
+ return;
+ }
+
+ //setting acked msg no range
Sequence sequence = (Sequence) rmMsgCtx.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
String sequenceId = sequence.getIdentifier().getIdentifier();
-
- // SequencePropertyBeanMgr mgr = new SequencePropertyBeanMgr (Constants.STORAGE_TYPE_IN_MEMORY);
-
SequencePropertyBeanMgr seqPropMgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
getSequencePropretyBeanMgr();
-
SequencePropertyBean msgsBean = seqPropMgr.retrieve( sequenceId,Constants.SEQ_PROPERTY_RECEIVED_MESSAGES);
- SequencePropertyBean acksToBean = seqPropMgr.retrieve( sequenceId,Constants.SEQ_PROPERTY_ACKS_TO);
-
+
long msgNo = sequence.getMessageNumber().getMessageNumber();
if (msgNo==0)
throw new MsgProcessorException ("Wrong message number");
String messagesStr = (String) msgsBean.getValue();
+
+ if (msgNoPresentInList (messagesStr,msgNo) && (Constants.DEFAULT_INVOCATION_TYPE==Constants.EXACTLY_ONCE)) {
+ //this is a duplicate message and the invocation type is EXACTLY_ONCE.
+ throw new MsgProcessorException ("Duplicate message - Invocation type is EXACTLY_ONCE");
+ }
+
if (messagesStr!="" && messagesStr!=null)
messagesStr = messagesStr + "," + Long.toString(msgNo);
else
@@ -66,6 +80,9 @@
msgsBean.setValue(messagesStr);
seqPropMgr.update(msgsBean);
+ //Setting the ack depending on AcksTo.
+ //TODO: Stop sending askc for every message.
+ SequencePropertyBean acksToBean = seqPropMgr.retrieve( sequenceId,Constants.SEQ_PROPERTY_ACKS_TO);
String acksToStr = null;
try {
acksToStr = (String) acksToBean.getValue();
@@ -73,14 +90,85 @@
e.printStackTrace();
}
+ //TODO: remove folowing 2.
System.out.println ("Messages received:" + messagesStr);
System.out.println ("Acks To:" + acksToStr);
if (acksToStr==null || messagesStr==null)
throw new MsgProcessorException ("Seqeunce properties are not set correctly");
-
if (acksToStr!=Constants.WSA.NS_URI_ANONYMOUS) {
//TODO Add async Ack
}
+
+
+
+// Pause the messages bean if not the right message to invoke.
+ NextMsgBeanMgr mgr = AbstractBeanMgrFactory.getBeanMgrFactory(Constants.DEFAULT_STORAGE_TYPE).
+ 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();
+
+ long nextMsgno = bean.getNextMsgNoToProcess();
+
+
+ if (nextMsgno<msgNo) {
+
+ //pause and store the message (since it is not the next message of the order)
+ rmMsgCtx.getMessageContext().setPausedTrue(new QName (Constants.IN_HANDLER_NAME));
+ try {
+ String key = SandeshaUtil.storeMessageContext(rmMsgCtx.getMessageContext());
+ storageMapMgr.insert(new StorageMapBean (key,msgNo,sequenceId));
+
+ //This will avoid performing application processing more than once.
+ rmMsgCtx.setProperty(Constants.APPLICATION_PROCESSING_DONE,"true");
+
+ }catch (Exception ex) {
+ throw new MsgProcessorException (ex.getMessage());
+ }
+ }else {
+ //OK this is a correct message.
+ //(nextMsgNo>msgNo can not happen if EXCTLY_ONCE is enabled. This should have been
+ // detected previously)
+
+ if (Constants.DEFAULT_DELIVERY_ASSURANCE==Constants.IN_ORDER) {
+ //store and let invoker handle for IN_ORDER invocation
+ rmMsgCtx.getMessageContext().setPausedTrue(new QName (Constants.IN_HANDLER_NAME));
+ try {
+ String key = SandeshaUtil.storeMessageContext(rmMsgCtx.getMessageContext());
+ storageMapMgr.insert(new StorageMapBean (key,msgNo,sequenceId));
+
+// This will avoid performing application processing more than once.
+ rmMsgCtx.setProperty(Constants.APPLICATION_PROCESSING_DONE,"true");
+
+ System.out.println ("paaused");
+ }catch (Exception ex) {
+ throw new MsgProcessorException (ex.getMessage());
+ }
+ }else {
+ //if IN_ORDER is not required. Simply let this invoke (by doing nothing here :D )
+ }
+ }
+
+ int i = 1;
+ }
+
+
+ //TODO convert following from INT to LONG
+ private boolean msgNoPresentInList (String list, long no) {
+ String[] msgStrs = list.split(",");
+
+ int l = msgStrs.length;
+
+ for (int i=0;i<l;i++) {
+ if (msgStrs[i].equals(Long.toString(no)))
+ return true;
+ }
+
+ return false;
}
}
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=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/AbstractBeanMgrFactory.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/AbstractBeanMgrFactory.java Sun Sep 11 04:03:38 2005
@@ -36,7 +36,7 @@
public abstract CreateSeqBeanMgr getCreateSeqBeanMgr();
- public abstract NextMsgBeanMgr getNextMsgBean();
+ public abstract NextMsgBeanMgr getNextMsgBeanMgr();
public abstract RetransmitterBeanMgr getRetransmitterBeanMgr();
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=280103&r1=280102&r2=280103&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 Sun Sep 11 04:03:38 2005
@@ -32,4 +32,5 @@
public ResultSet find(String query);
public Collection find(NextMsgBean bean);
public boolean update(NextMsgBean bean);
+ public Collection retrieveAll ();
}
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=280103&r1=280102&r2=280103&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 Sun Sep 11 04:03:38 2005
@@ -19,6 +19,7 @@
import java.sql.ResultSet;
import java.util.Collection;
+import org.apache.sandesha2.storage.beans.CreateSeqBean;
import org.apache.sandesha2.storage.beans.StorageMapBean;
@@ -27,6 +28,7 @@
* @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);
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/NextMsgBean.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/NextMsgBean.java?rev=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/NextMsgBean.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/NextMsgBean.java Sun Sep 11 04:03:38 2005
@@ -25,20 +25,28 @@
*/
public class NextMsgBean implements Serializable {
private String SequenceId;
- private String NextMsgNoToProcess;
+ private long NextMsgNoToProcess;
+ public NextMsgBean (){
+
+ }
+
+ public NextMsgBean (String sequenceId, long nextNsgNo) {
+ this.SequenceId = sequenceId;
+ this.NextMsgNoToProcess = nextNsgNo;
+ }
/**
* @return Returns the nextMsgNoToProcess.
*/
- public String getNextMsgNoToProcess() {
+ public long getNextMsgNoToProcess() {
return NextMsgNoToProcess;
}
/**
* @param nextMsgNoToProcess The nextMsgNoToProcess to set.
*/
- public void setNextMsgNoToProcess(String nextMsgNoToProcess) {
+ public void setNextMsgNoToProcess(long nextMsgNoToProcess) {
NextMsgNoToProcess = nextMsgNoToProcess;
}
/**
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/StorageMapBean.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/StorageMapBean.java?rev=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/StorageMapBean.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/beans/StorageMapBean.java Sun Sep 11 04:03:38 2005
@@ -26,10 +26,19 @@
public class StorageMapBean implements Serializable {
private String Key;
- private int MsgNo;
+ private long MsgNo;
private String sequenceId;
+ public StorageMapBean (){
+
+ }
+
+ public StorageMapBean(String key, long msgNo, String sequenceId) {
+ this.Key = key;
+ this.MsgNo = msgNo;
+ this.sequenceId = sequenceId;
+ }
/**
* @return Returns the key.
*/
@@ -45,13 +54,13 @@
/**
* @return Returns the msgNo.
*/
- public int getMsgNo() {
+ public long getMsgNo() {
return MsgNo;
}
/**
* @param msgNo The msgNo to set.
*/
- public void setMsgNo(int msgNo) {
+ public void setMsgNo(long msgNo) {
MsgNo = msgNo;
}
/**
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=280103&r1=280102&r2=280103&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 Sun Sep 11 04:03:38 2005
@@ -33,7 +33,7 @@
return new InMemCreateSeqBeanMgr();
}
- public NextMsgBeanMgr getNextMsgBean() {
+ public NextMsgBeanMgr getNextMsgBeanMgr() {
return new InMemNextMsgBeanMgr();
}
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=280103&r1=280102&r2=280103&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 Sun Sep 11 04:03:38 2005
@@ -66,8 +66,10 @@
if ((bean.getSequenceId() != null
&& bean.getSequenceId().equals(temp.getSequenceId()))
- && (bean.getNextMsgNoToProcess() != null
- && bean.getNextMsgNoToProcess().equals(temp.getNextMsgNoToProcess()))) {
+ /*&& (bean.getNextMsgNoToProcess() != null
+ && bean.getNextMsgNoToProcess().equals(temp.getNextMsgNoToProcess()))*/
+ && (bean.getNextMsgNoToProcess() > 0)
+ ) {
beans.add(temp);
}
@@ -79,5 +81,9 @@
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/inmemory/InMemStorageMapBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/inmemory/InMemStorageMapBeanMgr.java?rev=280103&r1=280102&r2=280103&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 Sun Sep 11 04:03:38 2005
@@ -23,6 +23,7 @@
import java.util.Iterator;
import org.apache.sandesha2.storage.beanmanagers.StorageMapBeanMgr;
+import org.apache.sandesha2.storage.beans.CreateSeqBean;
import org.apache.sandesha2.storage.beans.StorageMapBean;
/**
@@ -38,6 +39,11 @@
public InMemStorageMapBeanMgr() {
}
+ public boolean insert(StorageMapBean bean) {
+ table.put(bean.getKey(), bean);
+ return true;
+ }
+
public boolean delete(String key) {
return table.remove(key) != null;
}
@@ -57,15 +63,28 @@
StorageMapBean temp = new StorageMapBean();
while (iterator.hasNext()) {
temp = (StorageMapBean) iterator.next();
- if ((bean.getKey() != null
+ 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;
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentBeanMgrFactory.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentBeanMgrFactory.java?rev=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentBeanMgrFactory.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentBeanMgrFactory.java Sun Sep 11 04:03:38 2005
@@ -85,7 +85,7 @@
return new PersistentCreateSeqBeanMgr();
}
- public NextMsgBeanMgr getNextMsgBean() {
+ public NextMsgBeanMgr getNextMsgBeanMgr() {
return new PersistentNextMsgBeanMgr();
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentNextMsgBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentNextMsgBeanMgr.java?rev=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentNextMsgBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentNextMsgBeanMgr.java Sun Sep 11 04:03:38 2005
@@ -54,7 +54,7 @@
ResultSet rs = getStatement().executeQuery(query);
rs.next();
bean.setSequenceId(rs.getString("SequenceId"));
- bean.setNextMsgNoToProcess(rs.getString("NextMsgToProcess"));
+ bean.setNextMsgNoToProcess(rs.getLong ("NextMsgToProcess"));
return bean;
} catch (SQLException ex) {
@@ -117,7 +117,7 @@
while (rs.next()) {
nbean =new NextMsgBean();
nbean.setSequenceId(rs.getString("SequenceId"));
- nbean.setNextMsgNoToProcess(rs.getString("NextMsgToProcess"));
+ nbean.setNextMsgNoToProcess(rs.getLong ("NextMsgToProcess"));
beans.add(nbean);
}
return beans;
@@ -146,5 +146,9 @@
private Statement getStatement() throws SQLException {
return PersistentBeanMgrFactory.getConnection().createStatement();
}
-
+
+
+ public Collection retrieveAll() {
+ throw new UnsupportedOperationException ();
+ }
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentStorageMapBeanMgr.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentStorageMapBeanMgr.java?rev=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentStorageMapBeanMgr.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/storage/persistent/PersistentStorageMapBeanMgr.java Sun Sep 11 04:03:38 2005
@@ -32,6 +32,29 @@
*/
public class PersistentStorageMapBeanMgr implements StorageMapBeanMgr {
+
+
+ public boolean insert(StorageMapBean bean) {
+
+ throw new UnsupportedOperationException ();
+
+ //TODO: verify weather following works.
+
+// String query = ("INSERT INTO StorageMap VALUES ( "
+// + "'" + bean.getKey() + "', "
+// + "'" + bean.getMsgNo() + "',"
+// + "'" + bean.getSequenceId() + "')");
+//
+// try {
+// getStatement().executeUpdate(query);
+// ResultSet executeQuery = getStatement().executeQuery("select * from CreateSequence");
+//
+// return true;
+// } catch (SQLException ex) {
+// // TODO logs the error ..
+// }
+// return false;
+ }
public boolean delete(String key) {
String query = "DELETE FROM StorageMap WHERE SKey = '" + key + "'" ;
try {
@@ -79,46 +102,52 @@
}
public Collection find(StorageMapBean bean) {
- StringBuffer query = new StringBuffer();
-
- query.append("SELECT * FROM StorageMap WHERE");
- query.append((bean.getKey() != null)
- ? (query.toString().indexOf("=") != -1) ? " AND SKey = " + bean.getKey()
- : " SKey = " + bean.getKey()
- : "");
- query.append((bean.getMsgNo() != -1)
- ? (query.toString().indexOf("=") != -1) ? " AND MsgNo = " + bean.getMsgNo()
- : " MsgNo = " + bean.getMsgNo()
- : "");
- query.append((bean.getSequenceId() != null)
- ? (query.toString().indexOf("=") != -1) ? " AND SequenceId = " + bean.getSequenceId()
- : " SequenceId = " + bean.getSequenceId()
- : "");
- String queryString = query.toString();
- if (queryString.indexOf("=") == -1) {
- query.replace(queryString.indexOf("WHERE"), queryString.length(), "");
- }
-
- try {
- ResultSet rs = getStatement().executeQuery(query.toString().trim());
- ArrayList beans = new ArrayList();
- StorageMapBean nbean;
- while (rs.next()) {
- nbean = new StorageMapBean();
- nbean.setKey(rs.getString("SKey"));
- nbean.setSequenceId(rs.getString("SequenceId"));
- nbean.setMsgNo(rs.getInt("MsgNo"));
- beans.add(nbean);
- }
- return beans;
+ throw new UnsupportedOperationException ();
- } catch (SQLException ex) {
- //TODO logs the error ..
- ex.printStackTrace();
- }
- return null;
+ //TODO recheck the folowing implementation. Had to change In-Memory one.
+
+// StringBuffer query = new StringBuffer();
+//
+// query.append("SELECT * FROM StorageMap WHERE");
+// query.append((bean.getKey() != null)
+// ? (query.toString().indexOf("=") != -1) ? " AND SKey = " + bean.getKey()
+// : " SKey = " + bean.getKey()
+// : "");
+// query.append((bean.getMsgNo() != -1)
+// ? (query.toString().indexOf("=") != -1) ? " AND MsgNo = " + bean.getMsgNo()
+// : " MsgNo = " + bean.getMsgNo()
+// : "");
+// query.append((bean.getSequenceId() != null)
+// ? (query.toString().indexOf("=") != -1) ? " AND SequenceId = " + bean.getSequenceId()
+// : " SequenceId = " + bean.getSequenceId()
+// : "");
+//
+// String queryString = query.toString();
+//
+// if (queryString.indexOf("=") == -1) {
+// query.replace(queryString.indexOf("WHERE"), queryString.length(), "");
+// }
+//
+// try {
+// ResultSet rs = getStatement().executeQuery(query.toString().trim());
+// ArrayList beans = new ArrayList();
+// StorageMapBean nbean;
+// while (rs.next()) {
+// nbean = new StorageMapBean();
+// nbean.setKey(rs.getString("SKey"));
+// nbean.setSequenceId(rs.getString("SequenceId"));
+// nbean.setMsgNo(rs.getInt("MsgNo"));
+// beans.add(nbean);
+// }
+// return beans;
+//
+// } catch (SQLException ex) {
+// //TODO logs the error ..
+// ex.printStackTrace();
+// }
+// return null;
}
public boolean update(StorageMapBean bean) {
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=280103&r1=280102&r2=280103&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java Sun Sep 11 04:03:38 2005
@@ -18,8 +18,10 @@
import java.awt.datatransfer.StringSelection;
import java.util.ArrayList;
+import java.util.Hashtable;
import java.util.StringTokenizer;
+import org.apache.axis2.context.MessageContext;
import org.apache.axis2.om.impl.MIMEOutputUtils;
import org.apache.sandesha2.wsrm.AcknowledgementRange;
@@ -30,6 +32,8 @@
public class SandeshaUtil {
+ private static Hashtable storedMsgContexts = new Hashtable ();
+
public static String getUUID () {
String newSequenceID = "uuid:" + MIMEOutputUtils.getRandomStringOf18Characters();
return newSequenceID;
@@ -118,9 +122,24 @@
return longs;
}
- public static void main (String[] args) {
- String msgList = "13,2,6,4,4,1,999,12,3";
- getAckRangeArray( msgList);
-
+
+
+ public static String storeMessageContext (MessageContext ctx) throws Exception {
+ if (ctx==null)
+ throw new Exception ("Stored Msg Ctx is null");
+
+ String key = getUUID();
+ storedMsgContexts.put(key,ctx);
+ return key;
}
+
+ public static MessageContext getStoredMessageContext (String key) {
+ return (MessageContext) storedMsgContexts.get(key);
+ }
+
+// public static void main (String[] args) {
+// String msgList = "13,2,6,4,4,1,999,12,3";
+// getAckRangeArray( msgList);
+//
+// }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org