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 <[EMAIL PROTECTED]>

  */

 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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to