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 ml...@apache.org on 2006/12/04 11:33:33 UTC

svn commit: r482127 - in /webservices/sandesha/trunk/java: src/org/apache/sandesha2/client/ src/org/apache/sandesha2/i18n/ src/org/apache/sandesha2/msgprocessors/ src/org/apache/sandesha2/util/ test/src/org/apache/sandesha2/

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: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org