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