Author: mlovett
Date: Mon Dec  4 02:33:32 2006
New Revision: 482127

URL: http://svn.apache.org/viewvc?view=rev&rev=482127
Log:
Andy's patch to store protocol messages for later processing when the sequence 
is not yet running, see SANDESHA2-58

Modified:
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
    
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
 Mon Dec  4 02:33:32 2006
@@ -428,13 +428,12 @@
 
                String rmNamespaceValue = 
SpecSpecificConstants.getRMNamespaceValue(rmSpecVersion);
 
+               String oldAction = options.getAction();
+
                SOAPEnvelope terminateEnvelope = 
configureTerminateSequence(options, serviceContext.getConfigurationContext());
                OMElement terminateBody = 
terminateEnvelope.getBody().getFirstChildWithName(
                                new QName(rmNamespaceValue, 
Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE));
 
-               String oldAction = options.getAction();
-               
options.setAction(SpecSpecificConstants.getTerminateSequenceAction(rmSpecVersion));
-
                try {
                        //to inform the Sandesha2 out handler.
                        serviceClient.fireAndForget (terminateBody);            
                
@@ -584,6 +583,15 @@
                                long timeNow = System.currentTimeMillis();
                                if (timeNow > (startTime + maxWaitingTime))
                                        done = true;
+                               else
+                               {
+                                       // Wait for half a second to stop 100 
CPU
+                                       try {
+                 Thread.sleep(500);
+          } catch (InterruptedException e) {
+               // Ignore the exception
+          }
+                               }
                        }
                }
        }
@@ -1131,15 +1139,6 @@
                        internalSequenceID = 
SandeshaUtil.getInternalSequenceID(to, sequenceKey);
                }
                
-               SequenceReport sequenceReport = 
SandeshaClient.getOutgoingSequenceReport(internalSequenceID,
-                               configurationContext);
-               if (sequenceReport == null)
-                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(
-                                       
SandeshaMessageKeys.cannotGenerateReport, internalSequenceID));
-               if (sequenceReport.getSequenceStatus() != 
SequenceReport.SEQUENCE_STATUS_ESTABLISHED)
-                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(
-                                       
SandeshaMessageKeys.noSequenceEstablished, internalSequenceID));
-               
                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configurationContext,configurationContext.getAxisConfiguration());
 
                // Get a transaction to obtain sequence information
@@ -1152,23 +1151,18 @@
                        SequencePropertyBeanMgr seqPropMgr = 
storageManager.getSequencePropertyBeanMgr();
                        sequenceIDBean = seqPropMgr.retrieve(internalSequenceID,
                                        
Sandesha2Constants.SequenceProperties.OUT_SEQUENCE_ID);
-                       if (sequenceIDBean == null)
-                               throw new 
SandeshaException(SandeshaMessageHelper.getMessage(
-                                               
SandeshaMessageKeys.sequenceIdBeanNotSet));
-
                }
                finally
                {
                        transaction.commit();
                }
                
-               String sequenceID = sequenceIDBean.getValue();
-
+               String sequenceID = null;
+               if (sequenceIDBean != null)
+                 sequenceID = sequenceIDBean.getValue();
+               else
+                       sequenceID = Sandesha2Constants.TEMP_SEQUENCE_ID;
                
-               if (sequenceID == null)
-                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(
-                                       
SandeshaMessageKeys.cannotFindSequenceID, sequenceIDBean.toString()));
-
                String rmSpecVersion = (String) 
options.getProperty(SandeshaClientConstants.RM_SPEC_VERSION);
                if (rmSpecVersion == null)
                        rmSpecVersion = 
SpecSpecificConstants.getDefaultSpecVersion();

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java
 Mon Dec  4 02:33:32 2006
@@ -23,6 +23,7 @@
        public static final String msgError="msgError";
        public static final String sendMsgError="sendMsgError";
        public static final String 
cannotSendMsgAsSequenceClosed="cannotSendMsgAsSequenceClosed";
+       public static final String 
cannotSendMsgAsSequenceTerminated="cannotSendMsgAsSequenceTerminated";
        public static final String noValidSyncResponse="noValidSyncResponse";
        public static final String generalError="generalError";
        public static final String classLoaderNotFound="classLoaderNotFound";

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties
 Mon Dec  4 02:33:32 2006
@@ -40,6 +40,7 @@
 msgError=Sandesha2 got an exception when processing a message: {0}
 sendMsgError=Sandesha2 got an exception when sending a message: {0}
 cannotSendMsgAsSequenceClosed=Sandesha2 could not send the message on sequence 
{0} as the sequence has been closed.
+cannotSendMsgAsSequenceTerminated=Sandesha2 could not send the message on 
sequence {0} as the sequence has been terminated.
 noValidSyncResponse=Sandesha2 sender thread has not received a valid 
synchronous response...
 generalError=Sandesha2 Internal Error: sandesha2 encountered the following 
exception {0}
 classLoaderNotFound=Module class loader not found.

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
 Mon Dec  4 02:33:32 2006
@@ -256,7 +256,7 @@
 //                                     CreateSeqBeanMgr createSeqBeanMgr = 
storageManager.getCreateSeqBeanMgr();
 //                                     CreateSeqBean createSeqBean = 
createSeqBeanMgr.retrieve(msgId);
 //                                     
-                                       
TerminateManager.addTerminateSequenceMessage(rmMsgCtx, outSequenceId, 
sequencePropertyKey,
+                                       
TerminateManager.addTerminateSequenceMessage(rmMsgCtx, internalSequenceId, 
outSequenceId, sequencePropertyKey,
                                                        storageManager);
                                }
                        }

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 Mon Dec  4 02:33:32 2006
@@ -226,6 +226,12 @@
                        throw new 
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotSendMsgAsSequenceClosed,
 internalSequenceId));
                }
                
+               //see if the sequence is terminated
+               SequencePropertyBean sequenceTerminated = 
seqPropMgr.retrieve(internalSequenceId, 
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
+               if(sequenceTerminated!=null){
+                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotSendMsgAsSequenceTerminated,
 internalSequenceId));
+               }
+
                // saving the used message number
                if (!dummyMessage)
                        setNextMsgNo(configContext, sequencePropertyKey, 
messageNumber, storageManager);

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
 Mon Dec  4 02:33:32 2006
@@ -53,6 +53,7 @@
 import org.apache.sandesha2.wsrm.CreateSequenceResponse;
 import org.apache.sandesha2.wsrm.Identifier;
 import org.apache.sandesha2.wsrm.Sequence;
+import org.apache.sandesha2.wsrm.TerminateSequence;
 
 /**
  * Responsible for processing an incoming Create Sequence Response message.
@@ -168,7 +169,7 @@
                                throw new SandeshaException(message);
                        }
 
-                       String offeredSequenceId = (String) 
offeredSequenceBean.getValue();
+                       String offeredSequenceId = 
offeredSequenceBean.getValue();
                        
                        EndpointReference acksToEPR = 
accept.getAcksTo().getEPR();
                        SequencePropertyBean acksToBean = new 
SequencePropertyBean();
@@ -271,7 +272,6 @@
                SenderBean target = new SenderBean();
                target.setInternalSequenceID(internalSequenceId);
                target.setSend(false);
-               target.setReSend(true);
 
                Iterator iterator = retransmitterMgr.find(target).iterator();
                while (iterator.hasNext()) {
@@ -294,18 +294,35 @@
 
                        RMMsgContext applicaionRMMsg = 
MsgInitializer.initializeMessage(applicationMsg);
 
-                       Sequence sequencePart = (Sequence) 
applicaionRMMsg.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
-                       if (sequencePart == null) {
-                               String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.seqPartIsNull);
-                               log.debug(message);
-                               throw new SandeshaException(message);
+                       if (tempBean.getMessageType() == 
Sandesha2Constants.MessageTypes.APPLICATION) {
+                               
+                               Sequence sequencePart = (Sequence) 
applicaionRMMsg.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+                               if (sequencePart == null) {
+                                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.seqPartIsNull);
+                                       log.debug(message);
+                                       throw new SandeshaException(message);
+                               }
+       
+                               Identifier identifier = new 
Identifier(assumedRMNamespace);
+                               identifier.setIndentifer(newOutSequenceId);
+       
+                               sequencePart.setIdentifier(identifier);
+                               
+                       } else if (tempBean.getMessageType() == 
Sandesha2Constants.MessageTypes.TERMINATE_SEQ) {
+                               
+                               TerminateSequence sequencePart = 
(TerminateSequence) 
applicaionRMMsg.getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
+                               if (sequencePart == null) {
+                                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.seqPartIsNull);
+                                       log.debug(message);
+                                       throw new SandeshaException(message);
+                               }
+       
+                               Identifier identifier = new 
Identifier(assumedRMNamespace);
+                               identifier.setIndentifer(newOutSequenceId);
+       
+                               sequencePart.setIdentifier(identifier);
                        }
 
-                       Identifier identifier = new 
Identifier(assumedRMNamespace);
-                       identifier.setIndentifer(newOutSequenceId);
-
-                       sequencePart.setIdentifier(identifier);
-
                        try {
                                applicaionRMMsg.addSOAPEnvelope();
                        } catch (AxisFault e) {
@@ -314,6 +331,7 @@
 
                        // asking to send the application msssage
                        tempBean.setSend(true);
+                       tempBean.setSequenceID(newOutSequenceId);
                        retransmitterMgr.update(tempBean);
 
                        // updating the message. this will correct the SOAP 
envelope string.

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/TerminateSeqMsgProcessor.java
 Mon Dec  4 02:33:32 2006
@@ -21,11 +21,11 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.client.Options;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.MessageContext;
-import org.apache.axis2.context.MessageContextConstants;
 import org.apache.axis2.context.OperationContext;
 import org.apache.axis2.context.OperationContextFactory;
 import org.apache.axis2.description.AxisOperation;
@@ -45,17 +45,16 @@
 import org.apache.sandesha2.storage.StorageManager;
 import org.apache.sandesha2.storage.beanmanagers.SenderBeanMgr;
 import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
+import org.apache.sandesha2.storage.beans.CreateSeqBean;
 import org.apache.sandesha2.storage.beans.SenderBean;
 import org.apache.sandesha2.storage.beans.SequencePropertyBean;
 import org.apache.sandesha2.util.AcknowledgementManager;
 import org.apache.sandesha2.util.FaultManager;
-import org.apache.sandesha2.util.MsgInitializer;
 import org.apache.sandesha2.util.RMMsgCreator;
 import org.apache.sandesha2.util.SandeshaUtil;
 import org.apache.sandesha2.util.SequenceManager;
 import org.apache.sandesha2.util.SpecSpecificConstants;
 import org.apache.sandesha2.util.TerminateManager;
-import org.apache.sandesha2.wsrm.Sequence;
 import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
 import org.apache.sandesha2.wsrm.TerminateSequence;
 
@@ -234,16 +233,21 @@
 
                        // If all the out message have been acked, add the 
outgoing
                        // terminate seq msg.
-                       String outgoingSqunceID = 
SandeshaUtil.getSequenceProperty(responseSideSequencePropertyKey,
+                       String outgoingSequnceID = 
SandeshaUtil.getSequenceProperty(responseSideSequencePropertyKey,
                                        
Sandesha2Constants.SequenceProperties.OUT_SEQUENCE_ID, storageManager);
                        if (addResponseSideTerminate && highestOutMsgNo > 0 && 
responseSideSequencePropertyKey != null
-                                       && outgoingSqunceID != null) {
+                                       && outgoingSequnceID != null) {
                                boolean allAcked = 
SandeshaUtil.isAllMsgsAckedUpto(highestOutMsgNo, 
responseSideSequencePropertyKey,
                                                storageManager);
 
                                if (allAcked)
-                                       
TerminateManager.addTerminateSequenceMessage(terminateRMMsg, outgoingSqunceID,
+                               {
+                                       String internalSequenceID = 
SandeshaUtil.getSequenceProperty(outgoingSequnceID,
+                                                       
Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID, storageManager);
+
+                                       
TerminateManager.addTerminateSequenceMessage(terminateRMMsg, 
internalSequenceID, outgoingSequnceID,
                                                        
responseSideSequencePropertyKey, storageManager);
+                               }
                        }
                } catch (AxisFault e) {
                        throw new SandeshaException(e);
@@ -319,18 +323,37 @@
 
                String toAddress = rmMsgCtx.getTo().getAddress();
                String sequenceKey = (String) 
options.getProperty(SandeshaClientConstants.SEQUENCE_KEY);
-               String internalSeqenceID = 
SandeshaUtil.getInternalSequenceID(toAddress, sequenceKey);
-
-               String outSequenceID = 
SandeshaUtil.getSequenceProperty(internalSeqenceID,
-                               
Sandesha2Constants.SequenceProperties.OUT_SEQUENCE_ID, storageManager);
-               if (outSequenceID == null)
-                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(
-                                       
SandeshaMessageKeys.couldNotSendTerminateSeqNotFound, internalSeqenceID));
+               String internalSequenceID = 
SandeshaUtil.getInternalSequenceID(toAddress, sequenceKey);
 
-               // / Transaction addTerminateSeqTransaction =
-               // storageManager.getTransaction();
+               // Does the sequence exist ?
+               boolean sequenceExists = false;
+               String outSequenceID = null;
+               
+               // Get the Create sequence bean with the matching internal 
sequenceid 
+               CreateSeqBean createSeqFindBean = new CreateSeqBean();
+               createSeqFindBean.setInternalSequenceID(internalSequenceID);
 
-               String terminated = 
SandeshaUtil.getSequenceProperty(outSequenceID,
+               CreateSeqBean createSeqBean = 
storageManager.getCreateSeqBeanMgr().findUnique(createSeqFindBean);
+               
+               if (createSeqBean == null)
+               {
+                       if (log.isDebugEnabled())
+                               log.debug("Exit: 
TerminateSeqMsgProcessor::processOutMessage Sequence doesn't exist");
+                       
+                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(
+                                       
SandeshaMessageKeys.couldNotSendTerminateSeqNotFound, internalSequenceID));     
                
+               }
+               
+               if (createSeqBean.getSequenceID() != null)
+               {
+                       sequenceExists = true;          
+                       outSequenceID = createSeqBean.getSequenceID();
+               }
+               else
+                       outSequenceID = Sandesha2Constants.TEMP_SEQUENCE_ID;    
                
+               
+               // Check if the sequence is already terminated (stored on the 
internal sequenceid)
+               String terminated = 
SandeshaUtil.getSequenceProperty(internalSequenceID,
                                
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED, storageManager);
 
                if (terminated != null && "true".equals(terminated)) {
@@ -363,23 +386,22 @@
 
                rmMsgCtx.setTo(new EndpointReference(toAddress));
 
-               String rmVersion = SandeshaUtil.getRMVersion(internalSeqenceID, 
storageManager);
+               String rmVersion = 
SandeshaUtil.getRMVersion(internalSequenceID, storageManager);
                if (rmVersion == null)
                        throw new 
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotDecideRMVersion));
 
                
rmMsgCtx.setWSAAction(SpecSpecificConstants.getTerminateSequenceAction(rmVersion));
                
rmMsgCtx.setSOAPAction(SpecSpecificConstants.getTerminateSequenceSOAPAction(rmVersion));
 
-               String transportTo = 
SandeshaUtil.getSequenceProperty(internalSeqenceID,
+               String transportTo = 
SandeshaUtil.getSequenceProperty(internalSequenceID,
                                
Sandesha2Constants.SequenceProperties.TRANSPORT_TO, storageManager);
                if (transportTo != null) {
-                       
rmMsgCtx.setProperty(MessageContextConstants.TRANSPORT_URL, transportTo);
-               }
-               
+                       
rmMsgCtx.setProperty(Constants.Configuration.TRANSPORT_URL, transportTo);
+               }               
                
                //setting msg context properties
                
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_ID, 
outSequenceID);
-               
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID,
 internalSeqenceID);
+               
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.INTERNAL_SEQUENCE_ID,
 internalSequenceID);
                
rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_PROPERTY_KEY
 , sequenceKey);
 
                try {
@@ -391,6 +413,7 @@
                String key = SandeshaUtil.getUUID();
 
                SenderBean terminateBean = new SenderBean();
+               
terminateBean.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ);
                terminateBean.setMessageContextRefKey(key);
 
                // Set a retransmitter lastSentTime so that terminate will be 
send with
@@ -402,15 +425,19 @@
                terminateBean.setMessageID(msgContext.getMessageID());
                
                // Set the internal sequence id and outgoing sequence id for 
the terminate message
-               terminateBean.setInternalSequenceID(internalSeqenceID);
-               terminateBean.setSequenceID(outSequenceID);
+               terminateBean.setInternalSequenceID(internalSequenceID);
+               if (sequenceExists)
+                 terminateBean.setSequenceID(outSequenceID);
                
                EndpointReference to = msgContext.getTo();
                if (to!=null)
                        terminateBean.setToAddress(to.getAddress());
                
                // this will be set to true at the sender.
-               terminateBean.setSend(true);
+               if (sequenceExists)
+                       terminateBean.setSend(true);
+               else
+                       terminateBean.setSend(false);
 
                
msgContext.setProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING, 
Sandesha2Constants.VALUE_FALSE);
 
@@ -420,7 +447,7 @@
 
                SequencePropertyBean terminateAdded = new 
SequencePropertyBean();
                
terminateAdded.setName(Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
-               terminateAdded.setSequencePropertyKey(outSequenceID);
+               terminateAdded.setSequencePropertyKey(internalSequenceID);
                terminateAdded.setValue("true");
 
                seqPropMgr.insert(terminateAdded);

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SequenceManager.java
 Mon Dec  4 02:33:32 2006
@@ -522,28 +522,7 @@
                // / Transaction transaction = storageManager.getTransaction();
                SequencePropertyBeanMgr seqPropBeanMgr = 
storageManager.getSequencePropertyBeanMgr();
 
-               SequencePropertyBean findSeqIDBean = new SequencePropertyBean();
-               findSeqIDBean.setValue(internalSequenceID);
-               
findSeqIDBean.setName(Sandesha2Constants.SequenceProperties.INTERNAL_SEQUENCE_ID);
-               Collection seqIDBeans = seqPropBeanMgr.find(findSeqIDBean);
-
-               if (seqIDBeans.size() == 0) {
-                       String message = 
SandeshaMessageHelper.getMessage(SandeshaMessageKeys.noSequenceEstablished);
-                       log.debug(message);
-                       throw new SandeshaException(message);
-               }
-
-               if (seqIDBeans.size() > 1) {
-                       String message = SandeshaMessageHelper.getMessage(
-                                       
SandeshaMessageKeys.cannotGenerateReportNonUniqueSequence, internalSequenceID);
-                       log.debug(message);
-                       throw new SandeshaException(message);
-               }
-
-               SequencePropertyBean seqIDBean = (SequencePropertyBean) 
seqIDBeans.iterator().next();
-               String sequenceID = seqIDBean.getSequencePropertyKey();
-
-               SequencePropertyBean terminateAddedBean = 
seqPropBeanMgr.retrieve(sequenceID,
+               SequencePropertyBean terminateAddedBean = 
seqPropBeanMgr.retrieve(internalSequenceID,
                                
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
                if (terminateAddedBean == null)
                        return false;
@@ -551,7 +530,6 @@
                if ("true".equals(terminateAddedBean.getValue()))
                        return true;
 
-               // / transaction.commit();
                return false;
        }
 

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/TerminateManager.java
 Mon Dec  4 02:33:32 2006
@@ -340,14 +340,14 @@
                }
        }
 
-       public static void addTerminateSequenceMessage(RMMsgContext 
referenceMessage, String outSequenceId,
+       public static void addTerminateSequenceMessage(RMMsgContext 
referenceMessage, String internalSequenceID, String outSequenceId,
                        String sequencePropertyKey, StorageManager 
storageManager) throws AxisFault {
                if(log.isDebugEnabled())
-                       log.debug("Enter: 
TerminateManager::addTerminateSequenceMessage " + outSequenceId);
+                       log.debug("Enter: 
TerminateManager::addTerminateSequenceMessage " + outSequenceId + ", " + 
internalSequenceID);
 
                SequencePropertyBeanMgr seqPropMgr = 
storageManager.getSequencePropertyBeanMgr();
 
-               SequencePropertyBean terminated = 
seqPropMgr.retrieve(outSequenceId,
+               SequencePropertyBean terminated = 
seqPropMgr.retrieve(internalSequenceID,
                                
Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
 
                if (terminated != null && terminated.getValue() != null && 
"true".equals(terminated.getValue())) {
@@ -438,7 +438,7 @@
 
                SequencePropertyBean terminateAdded = new 
SequencePropertyBean();
                
terminateAdded.setName(Sandesha2Constants.SequenceProperties.TERMINATE_ADDED);
-               terminateAdded.setSequencePropertyKey(outSequenceId);
+               terminateAdded.setSequencePropertyKey(internalSequenceID);
                terminateAdded.setValue("true");
 
                seqPropMgr.insert(terminateAdded);

Modified: 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java?view=diff&rev=482127&r1=482126&r2=482127
==============================================================================
--- 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java
 (original)
+++ 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java
 Mon Dec  4 02:33:32 2006
@@ -43,11 +43,7 @@
        public SandeshaClientTest () {
                super ("SandeshaClientTest");
        }
-       
-       public void setUp () throws Exception {
-               super.setUp();
-       }
-       
+
        public void testCreateSequenceWithOffer () throws Exception {
                
                String to = "http://127.0.0.1:"; + serverPort + 
"/axis2/services/RMSampleService";
@@ -216,10 +212,75 @@
 //     public void testCreateSequenceWithSequenceKey () {
 //             
 //     }
-//     
-//     public void testTerminateSequence () {
-//             
-//     }
+//
+       /**
+        * Checks the following scenario
+        * 
+        * Don't start the server
+        * 1) send an application message (will generate the create sequence)
+        * 2) terminate the sequence
+        * 3) send another application message (this should fail)
+        * 4) start the server
+        * 5) Issue wait until sequence completed (with a wait time)
+        * 6) Ensure that the sequence was terminated
+        * 
+        */
+       public void testTerminateSequenceWithWait () throws Exception {
+               String to = "http://127.0.0.1:"; + serverPort + 
"/axis2/services/RMSampleService";
+               
+               String repoPath = "target" + File.separator + "repos" + 
File.separator + "client";
+               String axis2_xml = "target" + File.separator + "repos" + 
File.separator + "client" + File.separator + "client_axis2.xml";
+               
+               ConfigurationContext configContext = 
ConfigurationContextFactory.createConfigurationContextFromFileSystem(repoPath,axis2_xml);
+               
+               Options clientOptions = new Options ();
+               
clientOptions.setSoapVersionURI(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI);
+          clientOptions.setProperty(SandeshaClientConstants.RM_SPEC_VERSION, 
+              Sandesha2Constants.SPEC_VERSIONS.v1_1);
+               clientOptions.setTo(new EndpointReference (to));
+               
+               ServiceClient serviceClient = new ServiceClient 
(configContext,null);
+               
+               String acksTo = 
serviceClient.getMyEPR(Constants.TRANSPORT_HTTP).getAddress();
+               
clientOptions.setProperty(SandeshaClientConstants.AcksTo,acksTo);
+               clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+                       //serviceClient.
+               serviceClient.setOptions(clientOptions);
+                       
+               try{
+                       // 1) Send the application message
+                       serviceClient.fireAndForget(getPingOMBlock("ping1"));
+                       
+                       // 2) Terminate the sequence
+                       SandeshaClient.terminateSequence(serviceClient);
+                       
+                       // 3) Send the second application message (this should 
fail)
+                       try{
+                               
serviceClient.fireAndForget(getPingOMBlock("ping2"));
+                               fail(); //this should have failed
+                       }
+                       catch(Exception e){
+                               //good
+                       }
+                       
+                       // 4) Start the server                  
+                       startServer(server_repoPath, server_axis2_xml);
+
+                       // 5) wait for the sequence completion (30 second wait)
+                       
SandeshaClient.waitUntilSequenceCompleted(serviceClient, 30000);
+                       
+                       // 6) Check that the sequence has terminated
+                       SequenceReport report = 
SandeshaClient.getOutgoingSequenceReport(serviceClient);
+                       assertNotNull(report);
+                       assertEquals(SequenceReport.SEQUENCE_STATUS_TERMINATED, 
report.getSequenceStatus());
+
+               }
+               finally {
+                       configContext.getListenerManager().stop();
+                       serviceClient.cleanup();                        
+               }
+               
+       }
 //     
 //     public void testCloseSequence () {
 //             



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to