You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by mc...@apache.org on 2007/11/07 14:50:33 UTC

svn commit: r592747 - in /webservices/sandesha/trunk/java/modules: core/src/main/java/org/apache/sandesha2/ core/src/main/java/org/apache/sandesha2/client/ core/src/main/java/org/apache/sandesha2/util/ core/src/main/java/org/apache/sandesha2/wsrm/ test...

Author: mckierna
Date: Wed Nov  7 05:50:32 2007
New Revision: 592747

URL: http://svn.apache.org/viewvc?rev=592747&view=rev
Log:
https://issues.apache.org/jira/browse/SANDESHA2-126

Added:
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessageNumber.java
Modified:
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/TerminateManager.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequence.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java
    webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java
    webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/TerminateSequenceTest.java
    webservices/sandesha/trunk/java/modules/tests/test-resources/TerminateSequence.xml

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/Sandesha2Constants.java Wed Nov  7 05:50:32 2007
@@ -184,6 +184,8 @@
 
 		String CLOSE_SEQUENCE = "CloseSequence";
 		
+		String LAST_MSG_NUMBER = "LastMsgNumber";
+		
 		String CLOSE_SEQUENCE_RESPONSE = "CloseSequenceResponse";
 		
 		String TERMINATE_SEQUENCE_RESPONSE = "TerminateSequenceResponse";

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/client/SandeshaClient.java Wed Nov  7 05:50:32 2007
@@ -65,6 +65,7 @@
 import org.apache.sandesha2.wsrm.AckRequested;
 import org.apache.sandesha2.wsrm.CloseSequence;
 import org.apache.sandesha2.wsrm.Identifier;
+import org.apache.sandesha2.wsrm.LastMessageNumber;
 import org.apache.sandesha2.wsrm.TerminateSequence;
 
 /**
@@ -984,11 +985,49 @@
 		// Get a transaction for getting the sequence properties
 		Transaction transaction = null;
 		String sequenceID = null;
-		
+		SOAPEnvelope dummyEnvelope = null;
 		try
 		{
 			transaction = storageManager.getTransaction();
 			sequenceID = SandeshaUtil.getSequenceIDFromInternalSequenceID(internalSequenceID, storageManager);
+			if (sequenceID == null)
+				sequenceID = Sandesha2Constants.TEMP_SEQUENCE_ID;	
+
+			String rmSpecVersion = (String) options.getProperty(SandeshaClientConstants.RM_SPEC_VERSION);
+
+			if (rmSpecVersion == null)
+				rmSpecVersion = SpecSpecificConstants.getDefaultSpecVersion();
+
+			if (!SpecSpecificConstants.isSequenceClosingAllowed(rmSpecVersion))
+				throw new SandeshaException(SandeshaMessageHelper.getMessage(
+						SandeshaMessageKeys.closeSequenceSpecLevel, rmSpecVersion));
+			
+			SOAPFactory factory = null;
+			String soapNamespaceURI = options.getSoapVersionURI();
+			if (soapNamespaceURI == null) 
+				soapNamespaceURI = getSOAPNamespaceURI(storageManager, internalSequenceID);
+
+			if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNamespaceURI)) {
+				factory = new SOAP12Factory();
+				dummyEnvelope = factory.getDefaultEnvelope();
+			} else {
+				factory = new SOAP11Factory();
+				dummyEnvelope = factory.getDefaultEnvelope();
+			}
+
+			String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmSpecVersion);
+
+			CloseSequence closeSequence = new CloseSequence(rmNamespaceValue);
+			Identifier identifier = new Identifier(rmNamespaceValue);
+			identifier.setIndentifer(sequenceID);
+			closeSequence.setIdentifier(identifier);
+			if(closeSequence.isLastMsgNumberRequired(rmNamespaceValue)){
+				LastMessageNumber lastMsgNumber = new LastMessageNumber(rmNamespaceValue);
+				lastMsgNumber.setMessageNumber(SandeshaUtil.getLastMessageNumber(internalSequenceID, storageManager));
+				closeSequence.setLastMessageNumber(lastMsgNumber);
+			}
+			closeSequence.toSOAPEnvelope(dummyEnvelope);
+
 		}
 		finally
 		{
@@ -996,41 +1035,6 @@
 			if(transaction != null) transaction.commit();
 		}
 		
-		if (sequenceID == null)
-			sequenceID = Sandesha2Constants.TEMP_SEQUENCE_ID;	
-
-		String rmSpecVersion = (String) options.getProperty(SandeshaClientConstants.RM_SPEC_VERSION);
-
-		if (rmSpecVersion == null)
-			rmSpecVersion = SpecSpecificConstants.getDefaultSpecVersion();
-
-		if (!SpecSpecificConstants.isSequenceClosingAllowed(rmSpecVersion))
-			throw new SandeshaException(SandeshaMessageHelper.getMessage(
-					SandeshaMessageKeys.closeSequenceSpecLevel, rmSpecVersion));
-
-		SOAPEnvelope dummyEnvelope = null;
-		SOAPFactory factory = null;
-		String soapNamespaceURI = options.getSoapVersionURI();
-		if (soapNamespaceURI == null) 
-			soapNamespaceURI = getSOAPNamespaceURI(storageManager, internalSequenceID);
-
-		if (SOAP12Constants.SOAP_ENVELOPE_NAMESPACE_URI.equals(soapNamespaceURI)) {
-			factory = new SOAP12Factory();
-			dummyEnvelope = factory.getDefaultEnvelope();
-		} else {
-			factory = new SOAP11Factory();
-			dummyEnvelope = factory.getDefaultEnvelope();
-		}
-
-		String rmNamespaceValue = SpecSpecificConstants.getRMNamespaceValue(rmSpecVersion);
-
-		CloseSequence closeSequence = new CloseSequence(rmNamespaceValue);
-		Identifier identifier = new Identifier(rmNamespaceValue);
-		identifier.setIndentifer(sequenceID);
-		closeSequence.setIdentifier(identifier);
-
-		closeSequence.toSOAPEnvelope(dummyEnvelope);
-
 		return dummyEnvelope;
 	}
 
@@ -1172,6 +1176,20 @@
 		Identifier identifier = new Identifier(rmNamespaceValue);
 		identifier.setIndentifer(sequenceID);
 		terminateSequence.setIdentifier(identifier);
+		if(TerminateSequence.isLastMsgNumberRequired(rmNamespaceValue)){
+			try
+			{
+				transaction = storageManager.getTransaction();
+				LastMessageNumber lastMessageNumber = new LastMessageNumber(rmNamespaceValue);
+				lastMessageNumber.setMessageNumber(SandeshaUtil.getLastMessageNumber(internalSequenceID, storageManager));
+				terminateSequence.setLastMessageNumber(lastMessageNumber);
+			}
+			finally
+			{
+				// Commit the tran whatever happened
+				if(transaction != null) transaction.commit();
+			}
+		}
 		terminateSequence.toSOAPEnvelope(dummyEnvelope);
 
 		return dummyEnvelope;

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RMMsgCreator.java Wed Nov  7 05:50:32 2007
@@ -58,6 +58,7 @@
 import org.apache.sandesha2.wsrm.Endpoint;
 import org.apache.sandesha2.wsrm.IOMRMPart;
 import org.apache.sandesha2.wsrm.Identifier;
+import org.apache.sandesha2.wsrm.LastMessageNumber;
 import org.apache.sandesha2.wsrm.MakeConnection;
 import org.apache.sandesha2.wsrm.SequenceAcknowledgement;
 import org.apache.sandesha2.wsrm.SequenceOffer;
@@ -291,6 +292,11 @@
 		Identifier identifier = new Identifier(rmNamespaceValue);
 		identifier.setIndentifer(rmsBean.getSequenceID());
 		terminateSequencePart.setIdentifier(identifier);
+		if(TerminateSequence.isLastMsgNumberRequired(rmNamespaceValue)){
+			LastMessageNumber lastMsgNumber = new LastMessageNumber(rmNamespaceValue);
+			lastMsgNumber.setMessageNumber(SandeshaUtil.getLastMessageNumber(rmsBean.getInternalSequenceID(), storageManager));
+			terminateSequencePart.setLastMessageNumber(lastMsgNumber);
+		}
 		terminateRMMessage.setMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ, terminateSequencePart);
 
 		// no need for an incoming transport for a terminate

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SandeshaUtil.java Wed Nov  7 05:50:32 2007
@@ -618,6 +618,16 @@
 
 		return bean;
   }
+	
+	public static long getLastMessageNumber(String internalSequenceID, StorageManager storageManager)throws SandeshaException {
+		
+		RMSBean rMSBean = getRMSBeanFromInternalSequenceId(storageManager, internalSequenceID);
+		long lastMessageNumber = 0;
+		if(rMSBean!=null){
+			lastMessageNumber = rMSBean.getHighestOutMessageNumber();
+		}
+		return lastMessageNumber;
+	}
 
 	public static String getSequenceIDFromInternalSequenceID(String internalSequenceID,
 			StorageManager storageManager) throws SandeshaException {

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/SequenceManager.java Wed Nov  7 05:50:32 2007
@@ -297,6 +297,8 @@
 	
 	public static void finalizeTimedOutSequence(String internalSequenceID, MessageContext messageContext,
 			StorageManager storageManager) throws SandeshaException {
+		if (log.isDebugEnabled()) log.debug("Enter: SequenceManager::finalizeTimedOutSequence:" + internalSequenceID);
+		
 		ConfigurationContext configurationContext = null;
 		if (messageContext == null)
 			configurationContext = storageManager.getContext();
@@ -309,8 +311,24 @@
 		// Notify any waiting clients that the sequence has timeed out.
 		FaultManager.notifyClientsOfFault(internalSequenceID, storageManager, configurationContext, fault);
 		
+		//try and send a terminate message
+		try{
+			RMSBean bean = new RMSBean();
+			bean.setInternalSequenceID(internalSequenceID);
+			storageManager.getRMSBeanMgr().findUnique(bean);
+			if(bean!=null){
+				TerminateManager.checkAndTerminate(configurationContext, storageManager, bean);
+			}			
+		}
+		catch(Exception e){
+			//log this error but continue to timeout sequence
+			if (log.isDebugEnabled()) log.debug("SequenceManager::finalizeTimedOutSequence:Error caught:" + e);
+		}
+
+		
 		// Already an active transaction, so don't want a new one
 		TerminateManager.timeOutSendingSideSequence(internalSequenceID, storageManager);
+		
 
 		if (messageContext != null) {
 			SandeshaListener listener = (SandeshaListener) messageContext
@@ -320,6 +338,7 @@
 				listener.onTimeOut(report);
 			}
 		}
+		if (log.isDebugEnabled()) log.debug("Exit: SequenceManager::finalizeTimedOutSequence");
 	}
 
 	public static String getSpecVersion(MessageContext applicationMessage, StorageManager storageManager)

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/TerminateManager.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/TerminateManager.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/TerminateManager.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/TerminateManager.java Wed Nov  7 05:50:32 2007
@@ -233,7 +233,7 @@
 		rmsBean.setTerminateAdded(true);
 		storageManager.getRMSBeanMgr().update(rmsBean);
 		
-		cleanSendingSideData (rmsBean.getInternalSequenceID(), storageManager);
+		cleanSendingSideData (rmsBean.getInternalSequenceID(), storageManager, rmsBean);
 	}
 
 	public static void timeOutSendingSideSequence(String internalSequenceId,
@@ -244,10 +244,10 @@
 		rmsBean.setLastActivatedTime(System.currentTimeMillis());
 		storageManager.getRMSBeanMgr().update(rmsBean);
 
-		cleanSendingSideData(internalSequenceId, storageManager);
+		cleanSendingSideData(internalSequenceId, storageManager, rmsBean);
 	}
 
-	private static void cleanSendingSideData(String internalSequenceId, StorageManager storageManager) throws SandeshaException {
+	private static void cleanSendingSideData(String internalSequenceId, StorageManager storageManager, RMSBean rmsBean) throws SandeshaException {
 
 		SenderBeanMgr retransmitterBeanMgr = storageManager.getSenderBeanMgr();
 
@@ -256,10 +256,13 @@
 		Iterator iterator = collection.iterator();
 		while (iterator.hasNext()) {
 			SenderBean retransmitterBean = (SenderBean) iterator.next();
-			retransmitterBeanMgr.delete(retransmitterBean.getMessageID());
-
-			String messageStoreKey = retransmitterBean.getMessageContextRefKey();
-			storageManager.removeMessageContext(messageStoreKey);
+			if(retransmitterBean.getMessageType()!=Sandesha2Constants.MessageTypes.TERMINATE_SEQ || rmsBean.isTerminated()){
+				//remove all but terminate sequence messages
+				retransmitterBeanMgr.delete(retransmitterBean.getMessageID());
+
+				String messageStoreKey = retransmitterBean.getMessageContextRefKey();
+				storageManager.removeMessageContext(messageStoreKey);				
+			}
 		}
 	}
 

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequence.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequence.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequence.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequence.java Wed Nov  7 05:50:32 2007
@@ -37,7 +37,7 @@
 public class CloseSequence implements IOMRMPart {
 
 	private Identifier identifier;
-	
+	private LastMessageNumber lastMessageNumber;
 	private String namespaceValue = null;
 	
 	public CloseSequence(String namespaceValue) throws SandeshaException {
@@ -72,6 +72,12 @@
 		if(identifierPart != null){
 			identifier.fromOMElement(identifierPart);
 		}
+		
+		OMElement lastMessageNumberPart = closeSeqPart.getFirstChildWithName(new QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.LAST_MSG_NUMBER));
+		if(lastMessageNumberPart != null){
+			lastMessageNumber = new LastMessageNumber(namespaceValue);
+			lastMessageNumber.fromOMElement(lastMessageNumberPart);
+		}
 		return this;
 	}
 	
@@ -92,6 +98,10 @@
 		OMElement closeSequenceElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.CLOSE_SEQUENCE, rmNamespace);
 		
 		identifier.toOMElement(closeSequenceElement, rmNamespace);
+		if(lastMessageNumber!=null){
+			lastMessageNumber.toOMElement(closeSequenceElement, rmNamespace);
+		}
+		
 		body.addChild(closeSequenceElement);
 
 		return body;
@@ -125,6 +135,21 @@
 			return true;
 		
 		return false;
+	}
+	
+	public boolean isLastMsgNumberRequired(String namespaceName){
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		else 
+			return false;		
+	}
+	
+	public void setLastMessageNumber(LastMessageNumber number){
+		this.lastMessageNumber = number;
+	}
+	
+	public LastMessageNumber getLastMessageNumber(){
+		return this.lastMessageNumber;
 	}
 
 }

Added: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessageNumber.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessageNumber.java?rev=592747&view=auto
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessageNumber.java (added)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessageNumber.java Wed Nov  7 05:50:32 2007
@@ -0,0 +1,90 @@
+/*
+ * 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.wsrm;
+
+import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMException;
+import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.OMNamespace;
+import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.i18n.SandeshaMessageHelper;
+import org.apache.sandesha2.i18n.SandeshaMessageKeys;
+
+public class LastMessageNumber
+{
+	private long messageNumber;
+	
+	private String namespaceValue = null;
+	
+	public LastMessageNumber(String namespaceValue) throws SandeshaException {
+		if (!isNamespaceSupported(namespaceValue))
+			throw new SandeshaException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.unknownSpec,
+					namespaceValue));
+		
+		this.namespaceValue = namespaceValue;
+	}
+	
+	public long getMessageNumber(){
+		return messageNumber;
+	}
+	public void setMessageNumber(long messageNumber){
+		this.messageNumber = messageNumber;
+	}
+	
+	public Object fromOMElement(OMElement msgNumberPart) throws OMException {
+		if (msgNumberPart==null)
+			throw new OMException (SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.noMessageNumberPartInElement,
+					msgNumberPart.toString()));
+		
+		String msgNoStr = msgNumberPart.getText();
+		messageNumber = Long.parseLong(msgNoStr);
+		return this;
+	}
+	
+	public OMElement toOMElement(OMElement element, OMNamespace rmNamespace) throws OMException {
+		if (messageNumber <= 0 ){
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.setAValidMsgNumber,
+					Long.toString(messageNumber)));
+		}
+		
+		OMFactory factory = element.getOMFactory();
+		
+		OMElement messageNoElement = factory.createOMElement(Sandesha2Constants.WSRM_COMMON.LAST_MSG_NUMBER,rmNamespace);
+		messageNoElement.setText(Long.toString(messageNumber));
+		element.addChild(messageNoElement);
+		
+		return element;
+	}
+	
+	public String getNamespaceValue() throws OMException {
+		return namespaceValue;
+	}
+
+	public boolean isNamespaceSupported (String namespaceName) {
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true; //only supported for 2007_02
+		
+		return false;
+	}
+
+}
+

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java Wed Nov  7 05:50:32 2007
@@ -37,7 +37,7 @@
 public class TerminateSequence implements IOMRMPart {
 
 	private Identifier identifier;
-	
+	private LastMessageNumber lastMessageNumber;
 	private String namespaceValue = null;
 	
 	public TerminateSequence(String namespaceValue) throws SandeshaException {
@@ -72,6 +72,12 @@
 		if(identifierPart != null){
 			identifier.fromOMElement(identifierPart);
 		}
+		
+		OMElement lastMessageNumberPart = terminateSeqPart.getFirstChildWithName(new QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.LAST_MSG_NUMBER));
+		if(lastMessageNumberPart != null){
+			lastMessageNumber = new LastMessageNumber(namespaceValue);
+			lastMessageNumber.fromOMElement(lastMessageNumberPart);
+		}
 
 		return this;
 	}
@@ -93,8 +99,12 @@
 				Sandesha2Constants.WSRM_COMMON.TERMINATE_SEQUENCE, rmNamespace);
 		
 		identifier.toOMElement(terminateSequenceElement, rmNamespace);
+		
+		if(lastMessageNumber!=null){
+			lastMessageNumber.toOMElement(terminateSequenceElement, rmNamespace);
+		}
+		
 		body.addChild(terminateSequenceElement);
-
 		return body;
 	}
 
@@ -105,6 +115,14 @@
 	public void setIdentifier(Identifier identifier) {
 		this.identifier = identifier;
 	}
+	
+	public void setLastMessageNumber(LastMessageNumber number){
+		this.lastMessageNumber = number;
+	}
+	
+	public LastMessageNumber getLastMessageNumber(){
+		return this.lastMessageNumber;
+	}
 
 	public void toSOAPEnvelope(SOAPEnvelope envelope) {
 		SOAPBody body = envelope.getBody();
@@ -126,6 +144,14 @@
 			return true;
 		
 		return false;
+	}
+	
+	public static boolean isLastMsgNumberRequired(String namespaceName){
+		
+		if (Sandesha2Constants.SPEC_2007_02.NS_URI.equals(namespaceName))
+			return true;
+		else
+			return false;		
 	}
 	
 }

Modified: webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java (original)
+++ webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/faulttests/SequenceTerminatedFaultTest.java Wed Nov  7 05:50:32 2007
@@ -51,6 +51,7 @@
 import org.apache.sandesha2.wsrm.AckRequested;
 import org.apache.sandesha2.wsrm.CloseSequence;
 import org.apache.sandesha2.wsrm.Identifier;
+import org.apache.sandesha2.wsrm.LastMessageNumber;
 import org.apache.sandesha2.wsrm.MessageNumber;
 import org.apache.sandesha2.wsrm.Sequence;
 
@@ -476,6 +477,9 @@
 		Identifier id1 = new Identifier(rmNamespaceValue);
 		id1.setIndentifer(uuid);
 		sequence.setIdentifier(id1);
+		LastMessageNumber lastMsgNumber = new LastMessageNumber(rmNamespaceValue);
+		lastMsgNumber.setMessageNumber(1);
+		sequence.setLastMessageNumber(lastMsgNumber);
 		applicationRMMsg.setMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE, sequence);
 		applicationRMMsg.addSOAPEnvelope();
 
@@ -547,5 +551,6 @@
 	}
 
 }
+
 
 

Modified: webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/TerminateSequenceTest.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/TerminateSequenceTest.java?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/TerminateSequenceTest.java (original)
+++ webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/TerminateSequenceTest.java Wed Nov  7 05:50:32 2007
@@ -29,12 +29,14 @@
 public class TerminateSequenceTest extends SandeshaTestCase {
 
 	SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();
-	String rmNamespace = Sandesha2Constants.SPEC_2005_02.NS_URI;
+	String rmNamespace = Sandesha2Constants.SPEC_2007_02.NS_URI;
 	
     public TerminateSequenceTest() {
         super("TerminateSequenceTest");
     }
 
+    
+    
     public void testFromOMElement() throws SandeshaException {
         TerminateSequence terminateSequence =  new TerminateSequence(rmNamespace);
         SOAPEnvelope env = getSOAPEnvelope("", "TerminateSequence.xml");
@@ -42,6 +44,7 @@
 
         Identifier identifier = terminateSequence.getIdentifier();
         assertEquals("uuid:59b0c910-1625-11da-bdfc-b09ed76a1f06", identifier.getIdentifier());
+        assertEquals(1, terminateSequence.getLastMessageNumber().getMessageNumber());
     }
 
     public void testToSOAPEnvelope() throws SandeshaException {
@@ -50,6 +53,12 @@
         identifier.setIndentifer("uuid:59b0c910-1625-11da-bdfc-b09ed76a1f06");
         terminateSequence.setIdentifier(identifier);
 
+        if(TerminateSequence.isLastMsgNumberRequired(Sandesha2Constants.SPEC_2007_02.NS_URI)){
+        	LastMessageNumber lastMessageNumber = new LastMessageNumber(Sandesha2Constants.SPEC_2007_02.NS_URI);
+        	lastMessageNumber.setMessageNumber(1);
+        	terminateSequence.setLastMessageNumber(lastMessageNumber);
+        }
+        
         SOAPEnvelope env = getEmptySOAPEnvelope();
         terminateSequence.toSOAPEnvelope(env);
 

Modified: webservices/sandesha/trunk/java/modules/tests/test-resources/TerminateSequence.xml
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/tests/test-resources/TerminateSequence.xml?rev=592747&r1=592746&r2=592747&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/tests/test-resources/TerminateSequence.xml (original)
+++ webservices/sandesha/trunk/java/modules/tests/test-resources/TerminateSequence.xml Wed Nov  7 05:50:32 2007
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsrm="http://schemas.xmlsoap.org/ws/2005/02/rm" xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
+   <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:wsrm="http://docs.oasis-open.org/ws-rx/wsrm/200702" xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
       <soapenv:Header>  
          <wsa:MessageID soapenv:mustUnderstand="1">uuid:64f5c3c0-1625-11da-a28e-b3b9c4e71445</wsa:MessageID>  
          <wsa:To soapenv:mustUnderstand="1">http://127.0.0.1:9070/axis/services/RMService</wsa:To>  
@@ -11,6 +11,7 @@
       <soapenv:Body>  
          <wsrm:TerminateSequence>   
             <wsrm:Identifier>uuid:59b0c910-1625-11da-bdfc-b09ed76a1f06</wsrm:Identifier>  
+			<wsrm:LastMsgNumber>1</wsrm:LastMsgNumber>  
          </wsrm:TerminateSequence> 
       </soapenv:Body>
    </soapenv:Envelope>



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