[prev in list] [next in list] [prev in thread] [next in thread] 

List:       sandesha-dev
Subject:    svn commit: r480511 - in /webservices/sandesha/trunk/java:
From:       mlovett () apache ! org
Date:       2006-11-29 10:29:34
Message-ID: 20061129102937.C95E01A9846 () eris ! apache ! org
[Download RAW message or body]

Author: mlovett
Date: Wed Nov 29 02:29:32 2006
New Revision: 480511

URL: http://svn.apache.org/viewvc?view=rev&rev=480511
Log:
Tom's patch for SANDESHA2-53, to ensure that we do not assign new messages to closed \
sequences

Modified:
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java
  webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClientConstants.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/ApplicationMsgProcessor.java
  webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
  webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/Range.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RangeString.java
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
    webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java
  webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaUtilTest.java

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java
                
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java?view=diff&rev=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/Sandesha2Constants.java \
Wed Nov 29 02:29:32 2006 @@ -299,6 +299,8 @@
 		
 		String SEQUENCE_CLOSED = "SequenceClosed";
 		
+		String SEQUENCE_CLOSED_CLIENT = "SequenceClosedClient"; //indicates the client has \
sent a close sequence +		
 		String SEQUENCE_TERMINATED = "SequenceTerminated";
 		
 		String SEQUENCE_TIMED_OUT = "SequenceTimedOut";

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=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClient.java \
Wed Nov 29 02:29:32 2006 @@ -784,10 +784,16 @@
 			throw new SandeshaException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.toEPRNotValid, null));
 
-		String to = epr.getAddress();
-		String sequenceKey = (String) \
                options.getProperty(SandeshaClientConstants.SEQUENCE_KEY);
-
-		String internalSequenceID = SandeshaUtil.getInternalSequenceID(to, sequenceKey);
+		//first see if the cliet has told us which sequence to close
+		String internalSequenceID = 
+			(String)options.getProperty(SandeshaClientConstants.INTERNAL_SEQUENCE_ID);
+		
+		if(internalSequenceID==null){
+			//lookup the internal seq id based on to EPR and sequenceKey
+			String to = epr.getAddress();
+			String sequenceKey = (String) \
options.getProperty(SandeshaClientConstants.SEQUENCE_KEY); +			internalSequenceID = \
SandeshaUtil.getInternalSequenceID(to, sequenceKey); +		}
 
 		SequenceReport sequenceReport = \
SandeshaClient.getOutgoingSequenceReport(internalSequenceID,  configurationContext);
@@ -1085,9 +1091,17 @@
 			throw new SandeshaException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.toEPRNotValid, null));
 
-		String to = epr.getAddress();
-		String sequenceKey = (String) \
                options.getProperty(SandeshaClientConstants.SEQUENCE_KEY);
-		String internalSequenceID = SandeshaUtil.getInternalSequenceID(to, sequenceKey);
+		//first see if the cliet has told us which sequence to terminate
+		String internalSequenceID = 
+			(String)options.getProperty(SandeshaClientConstants.INTERNAL_SEQUENCE_ID);
+		
+		if(internalSequenceID==null){
+			//lookup the internal seq id based on to EPR and sequenceKey
+			String to = epr.getAddress();
+			String sequenceKey = (String) \
options.getProperty(SandeshaClientConstants.SEQUENCE_KEY); +			internalSequenceID = \
SandeshaUtil.getInternalSequenceID(to, sequenceKey); +		}
+		
 		SequenceReport sequenceReport = \
SandeshaClient.getOutgoingSequenceReport(internalSequenceID,  configurationContext);
 		if (sequenceReport == null)

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClientConstants.java
                
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sande \
sha2/client/SandeshaClientConstants.java?view=diff&rev=480511&r1=480510&r2=480511 \
                ==============================================================================
                
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClientConstants.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/client/SandeshaClientConstants.java \
Wed Nov 29 02:29:32 2006 @@ -23,6 +23,7 @@
 	public static String AcksTo = "Sandesha2AcksTo";
 	public static String LAST_MESSAGE = "Sandesha2LastMessage";
 	public static String OFFERED_SEQUENCE_ID = "Sandesha2OfferedSequenceId";
+	public static String INTERNAL_SEQUENCE_ID = "Sandesha2InternalSequenceId";
 	public static String SANDESHA_DEBUG_MODE = "Sandesha2DebugMode";
 	public static String SEQUENCE_KEY = "Sandesha2SequenceKey";
 	public static String MESSAGE_NUMBER = "Sandesha2MessageNumber";

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=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/SandeshaMessageKeys.java \
Wed Nov 29 02:29:32 2006 @@ -20,6 +20,7 @@
 	public static final String invokeMsgError="invokeMsgError";
 	public static final String msgError="msgError";
 	public static final String sendMsgError="sendMsgError";
+	public static final String \
cannotSendMsgAsSequenceClosed="cannotSendMsgAsSequenceClosed";  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=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/i18n/resource.properties \
Wed Nov 29 02:29:32 2006 @@ -37,6 +37,7 @@
 invokeMsgError=Sandesha2 got an exception when invoking message: {0}
 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.  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/ApplicationMsgProcessor.java
                
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sande \
sha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java \
Wed Nov 29 02:29:32 2006 @@ -220,6 +220,12 @@
 		if (dummyMessageString != null && \
Sandesha2Constants.VALUE_TRUE.equals(dummyMessageString))  dummyMessage = true;
 
+		//see if the sequence is closed
+		SequencePropertyBean sequenceClosed = seqPropMgr.retrieve(sequencePropertyKey, \
Sandesha2Constants.SequenceProperties.SEQUENCE_CLOSED_CLIENT); \
+		if(sequenceClosed!=null){ +			throw new \
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.cannotSendMsgAsSequenceClosed, \
internalSequenceId)); +		}
+		
 		// saving the used message number
 		if (!dummyMessage)
 			setNextMsgNo(configContext, sequencePropertyKey, messageNumber, storageManager);

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java
                
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sande \
sha2/msgprocessors/CloseSequenceProcessor.java?view=diff&rev=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CloseSequenceProcessor.java \
Wed Nov 29 02:29:32 2006 @@ -97,12 +97,11 @@
 		if (fault != null) {
 			throw fault;
 		}
-
+		
 		SequencePropertyBean sequenceClosedBean = new SequencePropertyBean();
 		sequenceClosedBean.setSequencePropertyKey(sequencePropertyKey);
 		sequenceClosedBean.setName(Sandesha2Constants.SequenceProperties.SEQUENCE_CLOSED);
 		sequenceClosedBean.setValue(Sandesha2Constants.VALUE_TRUE);
-
 		sequencePropMgr.insert(sequenceClosedBean);
 
 		RMMsgContext ackRMMsgCtx = AcknowledgementManager.generateAckMessage(rmMsgCtx, \
sequencePropertyKey, sequenceId, storageManager); @@ -162,6 +161,8 @@
 					sequenceId, e.toString());
 			throw new SandeshaException(message, e);
 		}
+		
+
 
 		if (log.isDebugEnabled())
 			log.debug("Exit: CloseSequenceProcessor::processInMessage " + Boolean.FALSE);
@@ -190,6 +191,12 @@
 			throw new SandeshaException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.couldNotSendCloseSeqNotFound, internalSeqenceID));
 
+		//write into the sequence proeprties that the client is now closed
+		SequencePropertyBean sequenceClosedBean = new SequencePropertyBean();
+		sequenceClosedBean.setSequencePropertyKey(internalSeqenceID);
+		sequenceClosedBean.setName(Sandesha2Constants.SequenceProperties.SEQUENCE_CLOSED_CLIENT);
 +		sequenceClosedBean.setValue(Sandesha2Constants.VALUE_TRUE);
+		storageManager.getSequencePropertyBeanMgr().insert(sequenceClosedBean);
 
 		AxisOperation closeOperation = SpecSpecificConstants.getWSRMOperation(
 				Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE,

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/Range.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/Range.java?view=diff&rev=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/Range.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/Range.java Wed Nov \
29 02:29:32 2006 @@ -1,3 +1,20 @@
+/*
+ * 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.util;
 
 import org.apache.commons.logging.Log;

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RangeString.java
                
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RangeString.java?view=diff&rev=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RangeString.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/RangeString.java \
Wed Nov 29 02:29:32 2006 @@ -1,3 +1,20 @@
+/*
+ * 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.util;
 
 import java.util.Collections;

Modified: webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
                
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java \
                (original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java \
Wed Nov 29 02:29:32 2006 @@ -930,6 +930,28 @@
 
 		return sequenceID;
 	}
+	
+	public static String getSequenceKeyFromInternalSequenceID(String \
internalSequenceID, String to){ +		if(to==null){
+			//sequenceKey is just the internalSequenceID
+			return internalSequenceID;
+		}
+		else{
+			//remove the prefix
+			int postPrefixStringIndex = \
internalSequenceID.indexOf(Sandesha2Constants.INTERNAL_SEQUENCE_PREFIX); \
+			if(postPrefixStringIndex>=0){ +				String postPrefixString = \
internalSequenceID.substring(postPrefixStringIndex + \
Sandesha2Constants.INTERNAL_SEQUENCE_PREFIX.length()); +				//strip of the to epr and \
trailing and trailing ":" +				String toEPRString = ":" + to + ":";
+				int indexOfToEPR = postPrefixString.indexOf(toEPRString);
+				if(indexOfToEPR>=0){
+					return postPrefixString.substring(indexOfToEPR + toEPRString.length());
+				}
+			}
+		}
+		return null; //could not find the sequenceKey
+	}
+	
 
 	public static SecurityManager getSecurityManager(ConfigurationContext context) \
throws SandeshaException {  SecurityManager util = (SecurityManager) \
context.getProperty(Sandesha2Constants.SECURITY_MANAGER);

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=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java \
                (original)
+++ webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaClientTest.java \
Wed Nov 29 02:29:32 2006 @@ -32,6 +32,7 @@
 import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
+import org.apache.axis2.context.MessageContextConstants;
 import org.apache.axis2.transport.http.SimpleHTTPServer;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -102,8 +103,6 @@
 	
 	public void testCreateSequenceWithOffer () throws AxisFault,InterruptedException {
 		
-		startServer();
-		
 		String to = "http://127.0.0.1:" + serverPort + "/axis2/services/RMSampleService";
 		String transportTo = "http://127.0.0.1:" + serverPort + \
"/axis2/services/RMSampleService";  
@@ -111,9 +110,8 @@
 		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.setTo(new EndpointReference (to));
 		clientOptions.setProperty(Configuration.TRANSPORT_URL,transportTo);
 		
@@ -122,34 +120,111 @@
 		
 		ServiceClient serviceClient = new ServiceClient (configContext,null);
 		
-		String acksTo = serviceClient.getMyEPR(Constants.TRANSPORT_HTTP).getAddress();
-		clientOptions.setProperty(SandeshaClientConstants.AcksTo,acksTo);
-		clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
-		
-		String offeredSequenceID = SandeshaUtil.getUUID();
-		clientOptions.setProperty(SandeshaClientConstants.OFFERED_SEQUENCE_ID,offeredSequenceID);
                
-		
-		serviceClient.setOptions(clientOptions);
-		//serviceClient.
-		
-		clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
-		clientOptions.setUseSeparateListener(true);
-		
-		serviceClient.setOptions(clientOptions);
-		
-		String sequenceKey = SandeshaClient.createSequence(serviceClient,true);
-		clientOptions.setProperty(SandeshaClientConstants.SEQUENCE_KEY, sequenceKey);
-		
-		Thread.sleep(10000);
-		
-		SequenceReport sequenceReport = \
                SandeshaClient.getOutgoingSequenceReport(serviceClient);
-		
-		assertNotNull(sequenceReport.getSequenceID());
-		assertFalse(sequenceReport.isSecureSequence());
-		
-		configContext.getListenerManager().stop();
-		serviceClient.cleanup();
+		startServer();
+		try
+		{
+			String acksTo = serviceClient.getMyEPR(Constants.TRANSPORT_HTTP).getAddress();
+			clientOptions.setProperty(SandeshaClientConstants.AcksTo,acksTo);
+			clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+			
+			String offeredSequenceID = SandeshaUtil.getUUID();
+			clientOptions.setProperty(SandeshaClientConstants.OFFERED_SEQUENCE_ID,offeredSequenceID);
 +			
+			serviceClient.setOptions(clientOptions);
+			//serviceClient.
+			
+			clientOptions.setTransportInProtocol(Constants.TRANSPORT_HTTP);
+			clientOptions.setUseSeparateListener(true);
+			
+			serviceClient.setOptions(clientOptions);
+			
+			String sequenceKey = SandeshaClient.createSequence(serviceClient,true);
+			clientOptions.setProperty(SandeshaClientConstants.SEQUENCE_KEY, sequenceKey);
+			
+			Thread.sleep(10000);
+			
+			SequenceReport sequenceReport = \
SandeshaClient.getOutgoingSequenceReport(serviceClient); +			
+			assertNotNull(sequenceReport.getSequenceID());
+			assertFalse(sequenceReport.isSecureSequence());
+		}
+		finally
+		{
+			configContext.getListenerManager().stop();
+			serviceClient.cleanup();			
+		}
+
 	}
+	
+	public void testSequenceCloseTerminate()throws Exception{
+			startServer();
+			String to = "http://127.0.0.1:" + serverPort + "/axis2/services/RMSampleService";
+			String transportTo = "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));
+			clientOptions.setProperty(MessageContextConstants.TRANSPORT_URL,transportTo);
+			
+			String sequenceKey = "some_sequence_key";
+			clientOptions.setProperty(SandeshaClientConstants.SEQUENCE_KEY,sequenceKey);
+			
+			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{
+				
+				serviceClient.fireAndForget(getPingOMBlock("ping1"));
+				
+				Thread.sleep(10000);
+				
+				SequenceReport sequenceReport = \
SandeshaClient.getOutgoingSequenceReport(serviceClient); \
+				assertNotNull(sequenceReport.getSequenceID()); +				
+				//now close the sequence
+				SandeshaClient.closeSequence(serviceClient);
+				
+				//try and send another msg - this should fail
+				try{
+					serviceClient.fireAndForget(getPingOMBlock("ping2"));
+					fail(); //this should have failed
+				}
+				catch(Exception e){
+					//good
+				}
+			
+				//finally terminate the sequence
+				terminateAndCheck(serviceClient);
+			}
+			finally{
+				configContext.getListenerManager().stop();
+				serviceClient.cleanup();			
+			}
+			
+		}
+		
+		private void terminateAndCheck(ServiceClient srvcClient)throws Exception{
+			SandeshaClient.terminateSequence(srvcClient);
+			//wait
+			Thread.sleep(1000);
+			//now check the sequence is terminated
+			SequenceReport report = SandeshaClient.getOutgoingSequenceReport(srvcClient);
+			assertNotNull(report);
+			assertEquals(report.getSequenceStatus(), \
SequenceReport.SEQUENCE_STATUS_TERMINATED); +			
+		}
 	
 //	public void testCreateSequenceWithoutOffer () {
 ////		SandeshaClient.createSequence(serviceClient,true);

Modified: webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaUtilTest.java
                
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaUtilTest.java?view=diff&rev=480511&r1=480510&r2=480511
 ==============================================================================
--- webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaUtilTest.java \
                (original)
+++ webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/SandeshaUtilTest.java \
Wed Nov 29 02:29:32 2006 @@ -41,6 +41,26 @@
 		assertTrue(UUID2.startsWith("urn:uuid:"));
 	}
 	
+	public void testInternalSequenceIDToSequenceKeyConversion()throws \
SandeshaException{ +		String toEPR = "http://127.0.0.1:1111/some_random_uri";
+		String sequenceKey = "1234abcd";
+		
+		String internalSequenceID = SandeshaUtil.getInternalSequenceID(toEPR, \
sequenceKey); +		
+		//check that we can parse out the sequence key
+		assertEquals(sequenceKey, \
SandeshaUtil.getSequenceKeyFromInternalSequenceID(internalSequenceID, toEPR)); +		
+		//try an internal sequenceID without a sequenceKey - should get null
+		internalSequenceID = SandeshaUtil.getSequenceKeyFromInternalSequenceID(toEPR, \
null); +		assertNull(SandeshaUtil.getSequenceKeyFromInternalSequenceID(internalSequenceID, \
toEPR)); +		
+		//for badly formed sequences, or for server-side response sequences, check 
+		//we just get null
+		String outgoingSequenceID = \
SandeshaUtil.getOutgoingSideInternalSequenceID(SandeshaUtil.getUUID()); \
+		assertNull(SandeshaUtil.getSequenceKeyFromInternalSequenceID(outgoingSequenceID, \
toEPR)); +		
+	}
+	
 	public void testGetAckRangeArrayList () throws SandeshaException {
 		SOAPFactory factory = \
SOAPAbstractFactory.getSOAPFactory(Sandesha2Constants.SOAPVersion.v1_1);  String \
msgNumberStr = "3,6,1,5,8,2";



---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic