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/10/04 11:48:17 UTC

svn commit: r581820 - in /webservices/sandesha/trunk/java/modules: core/src/main/java/org/apache/sandesha2/msgprocessors/ core/src/main/java/org/apache/sandesha2/util/ core/src/main/java/org/apache/sandesha2/wsrm/ tests/src/test/java/org/apache/sandesh...

Author: mckierna
Date: Thu Oct  4 02:48:14 2007
New Revision: 581820

URL: http://svn.apache.org/viewvc?rev=581820&view=rev
Log:
Performance improvements

Modified:
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RangeString.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/wsrm/AckFinal.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckNone.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckRequested.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AcknowledgementRange.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/CloseSequenceResponse.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CreateSequenceResponse.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequence.java
    webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java
    webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/SandeshaTestCase.java
    webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/SequenceTest.java

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java Thu Oct  4 02:48:14 2007
@@ -20,12 +20,9 @@
 import java.util.Collection;
 import java.util.Iterator;
 
-import javax.xml.namespace.QName;
-
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
-import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
@@ -71,26 +68,15 @@
 		if (log.isDebugEnabled())
 			log.debug("Enter: AckRequestedProcessor::processAckRequestHeaders");
 
-		SOAPEnvelope envelope = message.getMessageContext().getEnvelope();
-		SOAPHeader header = envelope.getHeader();
 		boolean msgCtxPaused = false;
-		if(header!=null)
-		{
-			for(int i = 0; i < Sandesha2Constants.SPEC_NS_URIS.length; i++) {
-				QName headerName = new QName(Sandesha2Constants.SPEC_NS_URIS[i], Sandesha2Constants.WSRM_COMMON.ACK_REQUESTED);
-				
-				Iterator acks = header.getChildrenWithName(headerName);
-				while(acks.hasNext()) {
-					OMElement ack = (OMElement) acks.next();
-					AckRequested ackReq = new AckRequested(headerName.getNamespaceURI());
-					ackReq.fromOMElement(ack);
-					boolean paused = processAckRequestedHeader(message, ack, ackReq);
-					//if nto already paused we might be now
-					if(!msgCtxPaused){
-						msgCtxPaused = paused;
-					}
-				}
-			}			
+		Iterator ackRequests = message.getMessageParts(Sandesha2Constants.MessageParts.ACK_REQUEST);
+		while(ackRequests.hasNext()){
+			AckRequested ackReq = (AckRequested)ackRequests.next();
+			boolean paused = processAckRequestedHeader(message, ackReq.getOriginalAckRequestedElement(), ackReq);
+			//if not already paused we might be now
+			if(!msgCtxPaused){
+				msgCtxPaused = paused;
+			}
 		}
 
 		if (log.isDebugEnabled())

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java Thu Oct  4 02:48:14 2007
@@ -19,11 +19,7 @@
 
 import java.util.Iterator;
 
-import javax.xml.namespace.QName;
-
 import org.apache.axiom.om.OMElement;
-import org.apache.axiom.soap.SOAPEnvelope;
-import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.addressing.EndpointReference;
 import org.apache.axis2.context.ConfigurationContext;
@@ -70,23 +66,11 @@
 		if (log.isDebugEnabled())
 			log.debug("Enter: AcknowledgementProcessor::processAckHeaders");
 
-		SOAPEnvelope envelope = message.getMessageContext().getEnvelope();
-		SOAPHeader header = envelope.getHeader();
-		if(header!=null)
-		{
-			for(int i = 0; i < Sandesha2Constants.SPEC_NS_URIS.length; i++) {
-				QName headerName = new QName(Sandesha2Constants.SPEC_NS_URIS[i], Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK);
-				
-				Iterator acks = header.getChildrenWithName(headerName);
-				while(acks.hasNext()) {
-					OMElement ack = (OMElement) acks.next();
-					SequenceAcknowledgement seqAck = new SequenceAcknowledgement(headerName.getNamespaceURI());
-					seqAck.fromOMElement(ack);
-					processAckHeader(message, ack, seqAck);
-				}
-			}			
+		Iterator iter = message.getMessageParts(Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
+		while(iter.hasNext()){
+			SequenceAcknowledgement sa = (SequenceAcknowledgement)iter.next();
+			processAckHeader(message, sa.getOriginalSequenceAckElement(), sa);
 		}
-
 
 		if (log.isDebugEnabled())
 			log.debug("Exit: AcknowledgementProcessor::processAckHeaders");

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/MsgInitializer.java Thu Oct  4 02:48:14 2007
@@ -63,7 +63,6 @@
 		RMMsgContext rmMsgCtx = new RMMsgContext(ctx);
 
 		populateRMMsgContext(ctx, rmMsgCtx);
-		validateMessage(rmMsgCtx);
 		return rmMsgCtx;
 	}
 
@@ -169,89 +168,68 @@
 
 		if (rmNamespace!=null)
 			rmMsgContext.setRMNamespaceValue(rmNamespace);
+			
+				String sequenceID = null;
 
-	}
-
-	/**
-	 * This is used to validate the message. Also set an Message type. Possible
-	 * types are given in the Sandesha2Constants.MessageTypes interface.
-	 * 
-	 * @param rmMsgCtx
-	 * @return
-	 * @throws SandeshaException
-	 */
-	private static boolean validateMessage(RMMsgContext rmMsgCtx) throws SandeshaException {
-
-		String sequenceID = null;
+		CreateSequence createSequence = elements.getCreateSequence();
+		CreateSequenceResponse createSequenceResponse = elements.getCreateSequenceResponse();
+		TerminateSequence terminateSequence = elements.getTerminateSequence();
+		TerminateSequenceResponse terminateSequenceResponse = elements.getTerminateSequenceResponse();
+		Iterator sequenceAcknowledgementsIter = elements.getSequenceAcknowledgements();
+		Sequence sequence = (Sequence) elements.getSequence();
+		Iterator ackRequestedIter = elements.getAckRequests();
+		CloseSequence closeSequence = elements.getCloseSequence();
+		CloseSequenceResponse closeSequenceResponse = elements.getCloseSequenceResponse();
+		MakeConnection makeConnection = elements.getMakeConnection();
 
-		CreateSequence createSequence = (CreateSequence) rmMsgCtx.getMessagePart(
-				Sandesha2Constants.MessageParts.CREATE_SEQ);
-		CreateSequenceResponse createSequenceResponse = (CreateSequenceResponse) rmMsgCtx.getMessagePart(
-				Sandesha2Constants.MessageParts.CREATE_SEQ_RESPONSE);
-		TerminateSequence terminateSequence = (TerminateSequence) rmMsgCtx.getMessagePart(
-				Sandesha2Constants.MessageParts.TERMINATE_SEQ);
-		TerminateSequenceResponse terminateSequenceResponse = (TerminateSequenceResponse) rmMsgCtx.getMessagePart(
-				Sandesha2Constants.MessageParts.TERMINATE_SEQ_RESPONSE);
-		Iterator sequenceAcknowledgementsIter = rmMsgCtx.getMessageParts(
-				Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
-		Sequence sequence = (Sequence) rmMsgCtx.getMessagePart(
-				Sandesha2Constants.MessageParts.SEQUENCE);
-		Iterator ackRequestedIter = rmMsgCtx.getMessageParts(
-				Sandesha2Constants.MessageParts.ACK_REQUEST);
-		CloseSequence closeSequence = (CloseSequence) rmMsgCtx.getMessagePart(
-				Sandesha2Constants.MessageParts.CLOSE_SEQUENCE);
-		CloseSequenceResponse closeSequenceResponse = (CloseSequenceResponse) rmMsgCtx.getMessagePart(
-				Sandesha2Constants.MessageParts.CLOSE_SEQUENCE_RESPONSE);
-		MakeConnection makeConnection = (MakeConnection) rmMsgCtx.getMessagePart(
-				Sandesha2Constants.MessageParts.MAKE_CONNECTION);
 
 		// Setting message type.
 		if (createSequence != null) {
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ);
 		} else if (createSequenceResponse != null) {
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ_RESPONSE);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.CREATE_SEQ_RESPONSE);
 			sequenceID = createSequenceResponse.getIdentifier().getIdentifier();
 		} else if (terminateSequence != null) {
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ);
 			sequenceID = terminateSequence.getIdentifier().getIdentifier();
 		} else if (terminateSequenceResponse != null) {
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ_RESPONSE);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.TERMINATE_SEQ_RESPONSE);
 			sequenceID = terminateSequenceResponse.getIdentifier().getIdentifier();
-		} else if (rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE) != null) {
+		} else if (sequence != null) {
 			
-			Sequence seq = (Sequence) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+			Sequence seq = (Sequence) rmMsgContext.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
 			LastMessage lastMessage = seq.getLastMessage();
-			SOAPEnvelope envelope = rmMsgCtx.getSOAPEnvelope();
+			SOAPEnvelope envelope = rmMsgContext.getSOAPEnvelope();
 			
 			if (lastMessage!=null && envelope.getBody().getFirstOMChild()==null) {
 				//the message is an empty body last message
-				rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.LAST_MESSAGE);
+				rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.LAST_MESSAGE);
 			}else
-				rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
+				rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.APPLICATION);
 			
 			sequenceID = sequence.getIdentifier().getIdentifier();
 		} else if (sequenceAcknowledgementsIter.hasNext()) {
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.ACK);
 			SequenceAcknowledgement sequenceAcknowledgement = (SequenceAcknowledgement) sequenceAcknowledgementsIter.next();
 			
 			//if there is only on sequenceAck, sequenceId will be set. Otherwise it will not be.
 			if (!sequenceAcknowledgementsIter.hasNext())
 				sequenceID = sequenceAcknowledgement.getIdentifier().getIdentifier();
 		} else if (ackRequestedIter.hasNext()) {
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK_REQUEST);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.ACK_REQUEST);
 			AckRequested ackRequest = (AckRequested) ackRequestedIter.next();
 
 			//if there is only on sequenceAck, sequenceId will be set. Otherwise it will not be.
 			if (!ackRequestedIter.hasNext())
 				sequenceID = ackRequest.getIdentifier().getIdentifier();
 		} else if (closeSequence != null) {
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE);
 			sequenceID = closeSequence.getIdentifier().getIdentifier();
 		} else if (closeSequenceResponse != null) {
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE_RESPONSE);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE_RESPONSE);
 			sequenceID = closeSequenceResponse.getIdentifier().getIdentifier(); 
 		} else if (makeConnection != null){
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.MAKE_CONNECTION_MSG);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.MAKE_CONNECTION_MSG);
 			if (makeConnection.getIdentifier()!=null) {
 				sequenceID = makeConnection.getIdentifier().getIdentifier();
 			} else if (makeConnection.getAddress()!=null){
@@ -261,12 +239,12 @@
 						"Invalid MakeConnection message. Either Address or Identifier must be present");
 			}
 		} else
-			rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.UNKNOWN);
+			rmMsgContext.setMessageType(Sandesha2Constants.MessageTypes.UNKNOWN);
 		
 		if (sequenceID!=null)
-			rmMsgCtx.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_ID,sequenceID);
+			rmMsgContext.setProperty(Sandesha2Constants.MessageContextProperties.SEQUENCE_ID,sequenceID);
 
-		return true;
 	}
+
 
 }

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RangeString.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RangeString.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RangeString.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/util/RangeString.java Thu Oct  4 02:48:14 2007
@@ -18,13 +18,13 @@
 package org.apache.sandesha2.util;
 
 import java.io.Serializable;
-import java.util.Collections;
-import java.util.HashMap;
 import java.util.Iterator;
 import java.util.LinkedList;
 import java.util.List;
-import java.util.Map;
 import java.util.Set;
+import java.util.SortedMap;
+import java.util.TreeMap;
+import java.util.Map.Entry;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
@@ -39,11 +39,7 @@
 public class RangeString implements Serializable{
 
 	private static final long serialVersionUID = -3487094584241136861L;
-	/**
-	 * Each entry in this map is a range
-	 * The key to each range entry is range.lowerValue
-	 */
-	private final Map rangeMap;
+	private final SortedMap rangeMap;
 	
 	/**
 	 * Creates an empty range string
@@ -59,7 +55,7 @@
 	 */
 	public RangeString(String s){
 
-		rangeMap = Collections.synchronizedMap(new HashMap());
+		rangeMap = new TreeMap();
 
 		if(s!=null && !s.equals("")){
 			//Walk the string building range objects as we go, and
@@ -85,7 +81,7 @@
 		else{
 			//start at the specified index and work down the list of ranges
 			//utill we find one
-			Iterator iterator = getSortedKeyList().iterator();
+			Iterator iterator = rangeMap.keySet().iterator();
 			
 			while (iterator.hasNext()) {
 				long key = ((Long)iterator.next()).longValue();
@@ -208,15 +204,15 @@
 		return false;
 	}
 	
-	/**
-	 * Returns a String representation of the ranges contained in this object
-	 * @return a String of the form [x1,y1][x2,y2]...[xn,yn]
-	 */
 	public String toString(){
-		List sortedList = getSortedKeyList();
+//		List sortedList = getSortedKeyList();
 		String returnString = "";
-		for(int i=0; i<sortedList.size(); i++){
-			returnString = returnString + (rangeMap.get(sortedList.get(i))).toString();
+//		for(int i=0; i<sortedList.size(); i++){
+//			returnString = returnString + (rangeMap.get(sortedList.get(i))).toString();
+//		}
+		for(Iterator iter = rangeMap.entrySet().iterator();iter.hasNext();){
+			Entry e = (Entry)iter.next();
+			returnString = returnString + e.getValue();
 		}
 		
 		return returnString;
@@ -226,23 +222,16 @@
 	 * @return ordered array of each range object in the string 
 	 */
 	public Range[] getRanges(){
-		List sortedKeyList = getSortedKeyList();
-		Range[] ranges = new Range[sortedKeyList.size()];
-		for(int i=0; i<ranges.length; i++){
-			ranges[i] = (Range)rangeMap.get(sortedKeyList.get(i));
+		Set entrySet = rangeMap.entrySet();
+		Range[] ranges = new Range[entrySet.size()];
+		int i=0;
+		for(Iterator iter = entrySet.iterator();iter.hasNext();){
+			ranges[i] = (Range)((Entry)iter.next()).getValue();
+			i++;
 		}
 		return ranges;
 	}
-	
-	
-	private List getSortedKeyList(){
-		Set keySet = rangeMap.keySet();
-		//sort the set
-		List sortedList = new LinkedList(keySet);
-		Collections.sort(sortedList);
-		return sortedList;
-	}
-	
+		
 	/**
 	 * Returns a List of the form
 	 * [x1,x2,x3....xn] listing each discrete number contained in all of the ranges

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=581820&r1=581819&r2=581820&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 Thu Oct  4 02:48:14 2007
@@ -25,6 +25,8 @@
 import java.util.Map;
 
 import javax.xml.namespace.QName;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.util.CopyUtils;
@@ -34,6 +36,7 @@
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axiom.soap.SOAPHeader;
 import org.apache.axiom.soap.SOAPHeaderBlock;
+import org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder;
 import org.apache.axis2.AxisFault;
 import org.apache.axis2.Constants;
 import org.apache.axis2.addressing.AddressingConstants;
@@ -233,22 +236,31 @@
 	 * @throws SandeshaException
 	 */
 	public static StorageManager getSandeshaStorageManager(ConfigurationContext context,AxisDescription description) throws SandeshaException {
-
-		Parameter parameter = description.getParameter(Sandesha2Constants.STORAGE_MANAGER_PARAMETER);
-		if (parameter==null) {
-			parameter = new Parameter (Sandesha2Constants.STORAGE_MANAGER_PARAMETER,Sandesha2Constants.DEFAULT_STORAGE_MANAGER);
-		}
+		final String STORAGE_MANAGER_INSTANCE = "storageManagerInstance";
+		StorageManager storageManagerInstance = (StorageManager)context.getProperty(STORAGE_MANAGER_INSTANCE);
 		
-		String value = (String) parameter.getValue();
+		if(storageManagerInstance == null){
 		
-		if (Sandesha2Constants.INMEMORY_STORAGE_MANAGER.equals(value))
-			return getInMemoryStorageManager(context);
-		else if (Sandesha2Constants.PERMANENT_STORAGE_MANAGER.equals(value))
-			return getPermanentStorageManager(context);
-		else
-			throw new SandeshaException (SandeshaMessageHelper.getMessage(
-					SandeshaMessageKeys.cannotGetStorageManager));
-	}
+			Parameter parameter = description.getParameter(Sandesha2Constants.STORAGE_MANAGER_PARAMETER);
+			if (parameter==null) {
+				parameter = new Parameter (Sandesha2Constants.STORAGE_MANAGER_PARAMETER,Sandesha2Constants.DEFAULT_STORAGE_MANAGER);
+			}
+			
+			String value = (String) parameter.getValue();
+			
+			if (Sandesha2Constants.INMEMORY_STORAGE_MANAGER.equals(value))
+				storageManagerInstance = getInMemoryStorageManager(context);
+			else if (Sandesha2Constants.PERMANENT_STORAGE_MANAGER.equals(value))
+				storageManagerInstance = getPermanentStorageManager(context);
+			else
+				throw new SandeshaException (SandeshaMessageHelper.getMessage(
+						SandeshaMessageKeys.cannotGetStorageManager));
+			
+			context.setProperty(STORAGE_MANAGER_INSTANCE, storageManagerInstance);
+		}
+		
+		return storageManagerInstance;
+	}	
 	
 	public static StorageManager getInMemoryStorageManager(ConfigurationContext context) throws SandeshaException {
 
@@ -991,6 +1003,75 @@
 		copyConfiguredProperties(oldMsg,newMsg);
 		return newMsg;
 		
+	}
+	
+	public static SOAPEnvelope cloneEnvelope(SOAPEnvelope envelope)
+	        throws SandeshaException
+	{
+
+		// Now clone the env and set it in the message context. We need to be
+		// sure that we
+		// close off the stream reader, in order to free up some of the heap.
+		XMLStreamReader streamReader = null;
+		SOAPEnvelope clonedEnvelope = null;
+		try
+		{
+			streamReader = envelope.getXMLStreamReader();
+			clonedEnvelope = new StAXSOAPModelBuilder(streamReader, null)
+			        .getSOAPEnvelope();
+			// you have to explicitely set the 'processed' attribute for header
+			// blocks, since it get lost in the above read from the stream.
+
+			SOAPHeader header = envelope.getHeader();
+			if (header != null)
+			{
+				Iterator childrenOfOldEnv = header.getChildElements();
+				Iterator childrenOfNewEnv = clonedEnvelope.getHeader()
+				        .getChildElements();
+				while (childrenOfOldEnv.hasNext())
+				{
+					SOAPHeaderBlock oldEnvHeaderBlock = (SOAPHeaderBlock) childrenOfOldEnv
+					        .next();
+					SOAPHeaderBlock newEnvHeaderBlock = (SOAPHeaderBlock) childrenOfNewEnv
+					        .next();
+
+					QName oldEnvHeaderBlockQName = oldEnvHeaderBlock.getQName();
+					if (oldEnvHeaderBlockQName != null)
+					{
+						if (oldEnvHeaderBlockQName.equals(newEnvHeaderBlock
+						        .getQName()))
+						{
+							if (oldEnvHeaderBlock.isProcessed())
+								newEnvHeaderBlock.setProcessed();
+						}
+						else
+						{
+							String message = SandeshaMessageHelper
+							        .getMessage(SandeshaMessageKeys.cloneDoesNotMatchToOriginal);
+							throw new SandeshaException(message);
+						}
+					}
+				}
+			}
+			// Completely build the new tree
+			clonedEnvelope.build();
+		}
+		finally
+		{
+			if (streamReader != null)
+			{
+				try
+				{
+					streamReader.close();
+				}
+				catch (XMLStreamException e)
+				{
+					log.debug("Caught exception closing stream", e);
+				}
+			}
+
+		}
+		return clonedEnvelope;
 	}
 
 	/** 

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckFinal.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckFinal.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckFinal.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckFinal.java Thu Oct  4 02:48:14 2007
@@ -17,8 +17,6 @@
 
 package org.apache.sandesha2.wsrm;
 
-import javax.xml.namespace.QName;
-
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
@@ -48,14 +46,12 @@
 		return namespaceValue;
 	}
 
-	public Object fromOMElement(OMElement element) throws OMException {
+	public Object fromOMElement(OMElement finalPart) throws OMException {
 		
-		OMElement finalPart = element.getFirstChildWithName(new QName(
-				namespaceValue, Sandesha2Constants.WSRM_COMMON.FINAL));
 		if (finalPart == null)
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.noFinalPartInElement,
-					element.toString()));
+					finalPart.toString()));
 
 		return this;
 	}

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckNone.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckNone.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckNone.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckNone.java Thu Oct  4 02:48:14 2007
@@ -17,8 +17,6 @@
 
 package org.apache.sandesha2.wsrm;
 
-import javax.xml.namespace.QName;
-
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
@@ -49,14 +47,11 @@
 		return namespaceValue;
 	}
 
-	public Object fromOMElement(OMElement element) throws OMException {
-	    
-		OMElement nonePart = element.getFirstChildWithName(new QName(
-				namespaceValue, Sandesha2Constants.WSRM_COMMON.NONE));
+	public Object fromOMElement(OMElement nonePart) throws OMException {
 		if (nonePart == null)
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.noNonePartInElement,
-					element.toString()));
+					nonePart.toString()));
 
 		return this;
 	}

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckRequested.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckRequested.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckRequested.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AckRequested.java Thu Oct  4 02:48:14 2007
@@ -47,6 +47,8 @@
 	private String namespaceValue = null;
 	private boolean mustUnderstand = false;
 	
+	private OMElement originalAckRequestedElement;
+	
 	public AckRequested(String namespaceValue) throws SandeshaException {
 		if (!isNamespaceSupported(namespaceValue))
 			throw new SandeshaException (SandeshaMessageHelper.getMessage(
@@ -61,9 +63,13 @@
 	}
 
 	public Object fromOMElement(OMElement ackReqElement) throws OMException,SandeshaException {
-
+		originalAckRequestedElement = ackReqElement;
 		identifier = new Identifier(namespaceValue);
-		identifier.fromOMElement(ackReqElement);
+		OMElement identifierPart = ackReqElement.getFirstChildWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+		if(identifierPart != null){
+			identifier.fromOMElement(identifierPart);
+		}
 
 		// Indicate that we have processed this SOAPHeaderBlock
 		((SOAPHeaderBlock)ackReqElement).setProcessed();
@@ -145,6 +151,10 @@
 			return true;
 		
 		return false;
+	}
+	
+	public OMElement getOriginalAckRequestedElement() {
+		return originalAckRequestedElement;
 	}
 	
 }

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AcknowledgementRange.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AcknowledgementRange.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AcknowledgementRange.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/AcknowledgementRange.java Thu Oct  4 02:48:14 2007
@@ -60,20 +60,20 @@
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.nullPassedElement));
 
-		OMAttribute lowerAttrib = ackRangePart.getAttribute(new QName(
+		String lowerAttribValue = ackRangePart.getAttributeValue(new QName(
 				Sandesha2Constants.WSRM_COMMON.LOWER));
-		OMAttribute upperAttrib = ackRangePart.getAttribute(new QName(
+		String upperAttribValue = ackRangePart.getAttributeValue(new QName(
 				Sandesha2Constants.WSRM_COMMON.UPPER));
 
-		if (lowerAttrib == null || upperAttrib == null)
+		if (lowerAttribValue == null || upperAttribValue == null)
 			throw new OMException(
 					SandeshaMessageHelper.getMessage(
 							SandeshaMessageKeys.noUpperOrLowerAttributesInElement,
 							ackRangePart.toString()));
 
 		try {
-			long lower = Long.parseLong(lowerAttrib.getAttributeValue());
-			long upper = Long.parseLong(upperAttrib.getAttributeValue());
+			long lower = Long.parseLong(lowerAttribValue);
+			long upper = Long.parseLong(upperAttribValue);
 			upperValue = upper;
 			lowerValue = lower;
 		} catch (Exception ex) {
@@ -82,10 +82,9 @@
 							SandeshaMessageKeys.ackRandDoesNotHaveCorrectValues,
 							ackRangePart.toString()));
 		}
-
 		return this;
 	}
-
+	
 	public OMElement toOMElement(OMElement sequenceAckElement)
 			throws OMException {
 

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=581820&r1=581819&r2=581820&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 Thu Oct  4 02:48:14 2007
@@ -54,7 +54,6 @@
 	}
 
 	public Object fromOMElement(OMElement body) throws OMException,SandeshaException {
-
 		if (!(body instanceof SOAPBody))
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.closeSeqCannotBeAddedToNonBody));
@@ -68,11 +67,14 @@
 					body.toString()));
 
 		identifier = new Identifier(namespaceValue);
-		identifier.fromOMElement(closeSeqPart);
-
+		OMElement identifierPart = closeSeqPart.getFirstChildWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+		if(identifierPart != null){
+			identifier.fromOMElement(identifierPart);
+		}
 		return this;
 	}
-
+	
 	public OMElement toOMElement(OMElement body) throws OMException {
 
 		if (body == null || !(body instanceof SOAPBody))

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequenceResponse.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequenceResponse.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequenceResponse.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CloseSequenceResponse.java Thu Oct  4 02:48:14 2007
@@ -53,7 +53,6 @@
 	}
 
 	public Object fromOMElement(OMElement body) throws OMException,SandeshaException {
-
 		if (!(body instanceof SOAPBody))
 			throw new OMException(
 					SandeshaMessageHelper.getMessage(
@@ -68,11 +67,14 @@
 					body.toString()));
 
 		identifier = new Identifier(namespaceValue);
-		identifier.fromOMElement(closeSeqResponsePart);
-
+		OMElement identifierPart = closeSeqResponsePart.getFirstChildWithName(new QName(
+				namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+		if(identifierPart != null){
+			identifier.fromOMElement(identifierPart);
+		}
 		return this;
 	}
-
+	
 	public OMElement toOMElement(OMElement body) throws OMException {
 
 		if (body == null || !(body instanceof SOAPBody))

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CreateSequenceResponse.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CreateSequenceResponse.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CreateSequenceResponse.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/CreateSequenceResponse.java Thu Oct  4 02:48:14 2007
@@ -74,7 +74,10 @@
 					bodyElement.toString()));
 
 		identifier = new Identifier(rmNamespaceValue);
-		identifier.fromOMElement(createSeqResponsePart);
+		OMElement identifierPart = createSeqResponsePart.getFirstChildWithName(new QName(rmNamespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+		if(identifierPart != null){
+			identifier.fromOMElement(identifierPart);
+		}
 
 		OMElement expiresPart = createSeqResponsePart.getFirstChildWithName(
 					new QName(rmNamespaceValue,

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Identifier.java Thu Oct  4 02:48:14 2007
@@ -21,8 +21,6 @@
  * Represents an Identifier element.
  */
 
-import javax.xml.namespace.QName;
-
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
@@ -55,25 +53,22 @@
 		return identifier;
 	}
 
-	public Object fromOMElement(OMElement element) throws OMException {
-		
-		OMElement identifierPart = element.getFirstChildWithName(new QName(
-				namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+	public Object fromOMElement(OMElement identifierPart) throws OMException {
 		if (identifierPart == null)
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.invalidIdentifier,
-					element.toString()));
+					identifierPart.toString()));
 		
 		String identifierText = identifierPart.getText();
 		if (identifierText == null || identifierText == "")
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.invalidIdentifier,
-					element.toString()));
+					identifierPart.toString()));
 
 		identifier = identifierText;
 		return this;
 	}
-
+	
 	public OMElement toOMElement(OMElement element, OMNamespace wsrmNamespace) throws OMException {
 
 		if (identifier == null || identifier == "") {

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/LastMessage.java Thu Oct  4 02:48:14 2007
@@ -17,8 +17,6 @@
 
 package org.apache.sandesha2.wsrm;
 
-import javax.xml.namespace.QName;
-
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
@@ -49,13 +47,11 @@
 		return namespaceValue;
 	}
 
-	public Object fromOMElement(OMElement element) throws OMException {
-		OMElement lastMessagePart = element.getFirstChildWithName(new QName(
-				namespaceValue, Sandesha2Constants.WSRM_COMMON.LAST_MSG));
+	public Object fromOMElement(OMElement lastMessagePart) throws OMException {
 		if (lastMessagePart == null)
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.noLastMessagePartInElement,
-					element.toString()));
+					lastMessagePart.toString()));
 
 		return this;
 	}

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MakeConnection.java Thu Oct  4 02:48:14 2007
@@ -74,7 +74,7 @@
 		
 		if (identifierElement!=null) {
 			identifier = new Identifier (identifierElement.getNamespace().getNamespaceURI());
-			identifier.fromOMElement(makeConnectionElement);
+			identifier.fromOMElement(identifierElement);
 		}
 		
 		if (addressElement!=null) {

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/MessageNumber.java Thu Oct  4 02:48:14 2007
@@ -17,8 +17,6 @@
 
 package org.apache.sandesha2.wsrm;
 
-import javax.xml.namespace.QName;
-
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
 import org.apache.axiom.om.OMFactory;
@@ -54,13 +52,11 @@
 		this.messageNumber = messageNumber;
 	}
 	
-	public Object fromOMElement(OMElement sequenceElement) throws OMException {
-		OMElement msgNumberPart = sequenceElement.getFirstChildWithName( 
-				new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.MSG_NUMBER));
+	public Object fromOMElement(OMElement msgNumberPart) throws OMException {
 		if (msgNumberPart==null)
 			throw new OMException (SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.noMessageNumberPartInElement,
-					sequenceElement.toString()));
+					msgNumberPart.toString()));
 		
 		String msgNoStr = msgNumberPart.getText();
 		messageNumber = Long.parseLong(msgNoStr);

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/RMElements.java Thu Oct  4 02:48:14 2007
@@ -24,14 +24,16 @@
 
 import org.apache.axiom.om.OMElement;
 import org.apache.axiom.om.OMException;
-import org.apache.axiom.soap.SOAP11Constants;
+import org.apache.axiom.soap.SOAPBody;
 import org.apache.axiom.soap.SOAPEnvelope;
 import org.apache.axiom.soap.SOAPFactory;
 import org.apache.axis2.AxisFault;
 import org.apache.sandesha2.Sandesha2Constants;
+import org.apache.sandesha2.Sandesha2Constants.SPEC_2005_02;
+import org.apache.sandesha2.Sandesha2Constants.SPEC_2007_02;
+import org.apache.sandesha2.Sandesha2Constants.WSRM_COMMON;
 import org.apache.sandesha2.i18n.SandeshaMessageHelper;
 import org.apache.sandesha2.i18n.SandeshaMessageKeys;
-import org.apache.sandesha2.util.SOAPAbstractFactory;
 
 /**
  * All RM model classes should implement this.
@@ -73,142 +75,137 @@
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.nullPassedElement));
 
-		SOAPFactory factory;
-
-		//Yep, I know. Could hv done it directly :D (just to make it consistent)
-		if (envelope.getNamespace().getNamespaceURI().equals(SOAP11Constants.SOAP_ENVELOPE_NAMESPACE_URI))
-			factory = SOAPAbstractFactory.getSOAPFactory(Sandesha2Constants.SOAPVersion.v1_1);
-		else
-			factory = SOAPAbstractFactory.getSOAPFactory(Sandesha2Constants.SOAPVersion.v1_2);
-		
 		// Check for RM defined elements, using either spec version
 		OMElement header = envelope.getHeader();
-		OMElement body = envelope.getBody();
+		SOAPBody body = envelope.getBody();
 
-		// The sequence header
-		OMElement element = null;
-		if(header!=null)
-		{
-			element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.Sequence);
-			if(element == null) {
-				element = envelope.getHeader().getFirstChildWithName(Sandesha2Constants.SPEC_2005_02.QNames.Sequence);
-			}
-			if (element != null) {
-				sequence = new Sequence(element.getNamespace().getNamespaceURI());
-				sequence.fromOMElement(envelope.getHeader());
-			}			
+		if(header != null){
+			processHeaders(envelope);
 		}
-
-
+		if(body != null){
+			processBody(body);
+		}
+	}
+	
+	private void processBody(SOAPBody body) throws AxisFault{
 		// The body messages
 		OMElement firstBodyElement = body.getFirstElement();
 		if(firstBodyElement != null) {
 			QName firstBodyQName = firstBodyElement.getQName();
-			
-			if(Sandesha2Constants.SPEC_2007_02.QNames.CreateSequence.equals(firstBodyQName)) {
-				createSequence = new CreateSequence(firstBodyQName.getNamespaceURI());
-				createSequence.fromOMElement(body);
-			} else if(Sandesha2Constants.SPEC_2005_02.QNames.CreateSequence.equals(firstBodyQName)) {
-				createSequence = new CreateSequence(firstBodyQName.getNamespaceURI());
-				createSequence.fromOMElement(body);
-
-			} else if(Sandesha2Constants.SPEC_2007_02.QNames.CreateSequenceResponse.equals(firstBodyQName)) {
-				createSequenceResponse = new CreateSequenceResponse(firstBodyQName.getNamespaceURI());
-				createSequenceResponse.fromOMElement(body);
-			} else if(Sandesha2Constants.SPEC_2005_02.QNames.CreateSequenceResponse.equals(firstBodyQName)) {
-				createSequenceResponse = new CreateSequenceResponse(firstBodyQName.getNamespaceURI());
-				createSequenceResponse.fromOMElement(body);
-
-			} else if(Sandesha2Constants.SPEC_2007_02.QNames.CloseSequence.equals(firstBodyQName)) {
-				closeSequence = new CloseSequence(firstBodyQName.getNamespaceURI());
-				closeSequence.fromOMElement(body);
-			} else if(Sandesha2Constants.SPEC_2005_02.QNames.CloseSequence.equals(firstBodyQName)) {
-				closeSequence = new CloseSequence(firstBodyQName.getNamespaceURI());
-				closeSequence.fromOMElement(body);
-
-			} else if(Sandesha2Constants.SPEC_2007_02.QNames.CloseSequenceResponse.equals(firstBodyQName)) {
-				closeSequenceResponse = new CloseSequenceResponse(firstBodyQName.getNamespaceURI());
-				closeSequenceResponse.fromOMElement(body);
-			} else if(Sandesha2Constants.SPEC_2005_02.QNames.CloseSequenceResponse.equals(firstBodyQName)) {
-				closeSequenceResponse = new CloseSequenceResponse(firstBodyQName.getNamespaceURI());
-				closeSequenceResponse.fromOMElement(body);
-
-			} else if(Sandesha2Constants.SPEC_2007_02.QNames.TerminateSequence.equals(firstBodyQName)) {
-				terminateSequence = new TerminateSequence(firstBodyQName.getNamespaceURI());
-				terminateSequence.fromOMElement(body);
-			} else if(Sandesha2Constants.SPEC_2005_02.QNames.TerminateSequence.equals(firstBodyQName)) {
-				terminateSequence = new TerminateSequence(firstBodyQName.getNamespaceURI());
-				terminateSequence.fromOMElement(body);
-
-			} else if(Sandesha2Constants.SPEC_2007_02.QNames.TerminateSequenceResponse.equals(firstBodyQName)) {
-				terminateSequenceResponse = new TerminateSequenceResponse(firstBodyQName.getNamespaceURI());
-				terminateSequenceResponse.fromOMElement(body);
-			} else if(Sandesha2Constants.SPEC_2005_02.QNames.TerminateSequenceResponse.equals(firstBodyQName)) {
-				terminateSequenceResponse = new TerminateSequenceResponse(firstBodyQName.getNamespaceURI());
-				terminateSequenceResponse.fromOMElement(body);
+			String namespace = firstBodyQName.getNamespaceURI();
+			String localName = firstBodyQName.getLocalPart();
 
-			} else if(Sandesha2Constants.SPEC_2007_02.QNames.MakeConnection.equals(firstBodyQName)) {
-				makeConnection = new MakeConnection(firstBodyQName.getNamespaceURI());
+			boolean isSPEC2007_02 = SPEC_2007_02.NS_URI.equals(namespace);
+			boolean isSPEC2005_02 = false;
+			if(!isSPEC2007_02){
+				isSPEC2005_02 = SPEC_2005_02.NS_URI.equals(namespace);
+			}
+
+			if(isSPEC2005_02 || isSPEC2007_02){
+				if(Sandesha2Constants.SPEC_2007_02.QNames.CreateSequence.equals(firstBodyQName)) {
+					createSequence = new CreateSequence(namespace);
+					createSequence.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2005_02.QNames.CreateSequence.equals(firstBodyQName)) {
+					createSequence = new CreateSequence(namespace);
+					createSequence.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2007_02.QNames.CreateSequenceResponse.equals(firstBodyQName)) {
+					createSequenceResponse = new CreateSequenceResponse(namespace);
+					createSequenceResponse.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2005_02.QNames.CreateSequenceResponse.equals(firstBodyQName)) {
+					createSequenceResponse = new CreateSequenceResponse(namespace);
+					createSequenceResponse.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2007_02.QNames.CloseSequence.equals(firstBodyQName)) {
+					closeSequence = new CloseSequence(namespace);
+					closeSequence.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2005_02.QNames.CloseSequence.equals(firstBodyQName)) {
+					closeSequence = new CloseSequence(namespace);
+					closeSequence.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2007_02.QNames.CloseSequenceResponse.equals(firstBodyQName)) {
+					closeSequenceResponse = new CloseSequenceResponse(namespace);
+					closeSequenceResponse.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2005_02.QNames.CloseSequenceResponse.equals(firstBodyQName)) {
+					closeSequenceResponse = new CloseSequenceResponse(namespace);
+					closeSequenceResponse.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2007_02.QNames.TerminateSequence.equals(firstBodyQName)) {
+					terminateSequence = new TerminateSequence(namespace);
+					terminateSequence.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2005_02.QNames.TerminateSequence.equals(firstBodyQName)) {
+					terminateSequence = new TerminateSequence(namespace);
+					terminateSequence.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2007_02.QNames.TerminateSequenceResponse.equals(firstBodyQName)) {
+					terminateSequenceResponse = new TerminateSequenceResponse(namespace);
+					terminateSequenceResponse.fromOMElement(body);
+				} else if(Sandesha2Constants.SPEC_2005_02.QNames.TerminateSequenceResponse.equals(firstBodyQName)) {
+					terminateSequenceResponse = new TerminateSequenceResponse(namespace);
+					terminateSequenceResponse.fromOMElement(body);
+				}
+			}else if(Sandesha2Constants.SPEC_2007_02.QNames.MakeConnection.equals(firstBodyQName)) {
+				makeConnection = new MakeConnection(namespace);
 				makeConnection.fromOMElement(firstBodyElement);
 			}
 		}
-		
-		// The other headers
+	}
+	
+	private void processHeaders(SOAPEnvelope envelope) throws AxisFault {
+
+		if (envelope == null)
+			throw new OMException(SandeshaMessageHelper.getMessage(
+					SandeshaMessageKeys.nullPassedElement));
+
+		SOAPFactory factory = (SOAPFactory)envelope.getOMFactory();
+		OMElement header = envelope.getHeader();
+
 		if(header!=null)
 		{
-			Iterator headers = header.getChildrenWithName(Sandesha2Constants.SPEC_2007_02.QNames.SequenceAck);
-			while (headers.hasNext()) {
-				OMElement sequenceAckElement = (OMElement) headers.next();
-				SequenceAcknowledgement sequenceAcknowledgement = new SequenceAcknowledgement(Sandesha2Constants.SPEC_2007_02.NS_URI);
-				sequenceAcknowledgement.fromOMElement(sequenceAckElement);
-				sequenceAcknowledgements.add(sequenceAcknowledgement);
-			}
-			headers = header.getChildrenWithName(Sandesha2Constants.SPEC_2005_02.QNames.SequenceAck);
-			while (headers.hasNext()) {
-				OMElement sequenceAckElement = (OMElement) headers.next();
-				SequenceAcknowledgement sequenceAcknowledgement = new SequenceAcknowledgement(Sandesha2Constants.SPEC_2005_02.NS_URI);
-				sequenceAcknowledgement.fromOMElement(sequenceAckElement);
-				sequenceAcknowledgements.add(sequenceAcknowledgement);
-			}
-
-			headers = header.getChildrenWithName(Sandesha2Constants.SPEC_2007_02.QNames.AckRequest);
-			while (headers.hasNext()) {
-				OMElement ackRequestElement = (OMElement) headers.next();
-				AckRequested ackRequest = new AckRequested(Sandesha2Constants.SPEC_2007_02.NS_URI);
-				ackRequest.fromOMElement(ackRequestElement);
-				ackRequests.add(ackRequest);
-			}
-			headers = header.getChildrenWithName(Sandesha2Constants.SPEC_2005_02.QNames.AckRequest);
-			while (headers.hasNext()) {
-				OMElement ackRequestElement = (OMElement) headers.next();
-				AckRequested ackRequest = new AckRequested(Sandesha2Constants.SPEC_2005_02.NS_URI);
-				ackRequest.fromOMElement(ackRequestElement);
-				ackRequests.add(ackRequest);
-			}
-			
-			element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.UsesSequenceSTR);
-			if (element != null) {
-				usesSequenceSTR = new UsesSequenceSTR(factory, Sandesha2Constants.SPEC_2007_02.NS_URI);
-				usesSequenceSTR.fromOMElement(element);
-			}
-			
-			element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.MessagePending);
-			if (element != null) {
-				messagePending = new MessagePending(Sandesha2Constants.SPEC_2007_02.MC_NS_URI);
-				messagePending.fromOMElement(element);
-			}
-			
-			element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2007_02.QNames.SequenceFault);
-			if(element == null) {
-				element = header.getFirstChildWithName(Sandesha2Constants.SPEC_2005_02.QNames.SequenceFault);
-			}
-			if (element !=null) {
-				sequenceFault = new SequenceFault(element.getNamespace().getNamespaceURI());
-				sequenceFault.fromOMElement(element);
+			Iterator headers = header.getChildElements();
+			while(headers.hasNext()){
+				OMElement element = (OMElement)headers.next();
+				QName elementName = element.getQName();
+				String namespace = elementName.getNamespaceURI();
+				String localName = elementName.getLocalPart();
+				
+				boolean isSPEC2007_02 = SPEC_2007_02.NS_URI.equals(namespace);
+				boolean isSPEC2005_02 = false;
+				if(!isSPEC2007_02){
+					isSPEC2005_02 = SPEC_2005_02.NS_URI.equals(namespace);
+				}
+				
+				if(isSPEC2005_02 || isSPEC2007_02){
+					boolean isProcessed = false;
+					if(isSPEC2007_02){
+						if(WSRM_COMMON.USES_SEQUENCE_STR.equals(localName)){
+							usesSequenceSTR = new UsesSequenceSTR(factory, namespace);
+							usesSequenceSTR.fromOMElement(element);
+							isProcessed = true;
+						}else if(WSRM_COMMON.MESSAGE_PENDING.equals(localName)){
+							messagePending = new MessagePending(namespace);
+							messagePending.fromOMElement(element);
+							isProcessed = true;
+						}
+					}
+					
+					if(!isProcessed){
+						if(WSRM_COMMON.SEQUENCE.equals(localName)){
+							sequence = new Sequence(namespace);
+							sequence.fromOMElement(element);
+						}else if(WSRM_COMMON.SEQUENCE_ACK.equals(localName)){
+							SequenceAcknowledgement sequenceAcknowledgement = new SequenceAcknowledgement(namespace);
+							sequenceAcknowledgement.fromOMElement(element);
+							sequenceAcknowledgements.add(sequenceAcknowledgement);
+						}else if(WSRM_COMMON.ACK_REQUESTED.equals(localName)){
+							AckRequested ackRequest = new AckRequested(namespace);
+							ackRequest.fromOMElement(element);
+							ackRequests.add(ackRequest);
+						}else if(WSRM_COMMON.SEQUENCE_FAULT.equals(localName)){
+							sequenceFault = new SequenceFault(namespace);
+							sequenceFault.fromOMElement(element);
+						}	
+					}
+				}
 			}
 		}
 	}
-
+	
 	public SOAPEnvelope toSOAPEnvelope(SOAPEnvelope envelope) throws AxisFault  {
 		if (sequence != null) {
 			sequence.toOMElement(envelope.getHeader());

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/Sequence.java Thu Oct  4 02:48:14 2007
@@ -17,6 +17,7 @@
 
 package org.apache.sandesha2.wsrm;
 
+import java.util.Iterator;
 import javax.xml.namespace.QName;
 
 import org.apache.axiom.om.OMElement;
@@ -57,40 +58,48 @@
 		return namespaceValue;
 	}
 
-	public Object fromOMElement(OMElement headerElement) throws OMException,SandeshaException {
+	public Object fromOMElement(OMElement ome) throws OMException,SandeshaException {
+		SOAPHeaderBlock shb = (SOAPHeaderBlock)ome;
 
-		SOAPHeader header = (SOAPHeader) headerElement;
-		if (header == null)
-			throw new OMException(
-					SandeshaMessageHelper.getMessage(
-							SandeshaMessageKeys.seqElementCannotBeAddedToNonHeader));
-
-		OMElement sequencePart = headerElement.getFirstChildWithName(new QName(namespaceValue,
-						Sandesha2Constants.WSRM_COMMON.SEQUENCE));
-		if (sequencePart == null)
+		if (shb == null)
 			throw new OMException(SandeshaMessageHelper.getMessage(
 					SandeshaMessageKeys.noSequencePartInElement,
-					headerElement.toString()));
+					shb.toString()));
+		
+		OMElement identifierPart = null;
+		OMElement msgNumberPart = null;
+		OMElement lastMessageElement = null;
+		
+		Iterator iter = shb.getChildElements();
+		while(iter.hasNext()){
+			OMElement child = (OMElement)iter.next();
+			QName qn = child.getQName();
+			if(namespaceValue.equals(qn.getNamespaceURI())){
+				if(Sandesha2Constants.WSRM_COMMON.IDENTIFIER.equals(qn.getLocalPart())){
+					identifierPart = child;
+				}else if(Sandesha2Constants.WSRM_COMMON.MSG_NUMBER.equals(qn.getLocalPart())){
+					msgNumberPart = child;
+				}else if(Sandesha2Constants.WSRM_COMMON.LAST_MSG.equals(qn.getLocalPart())){
+					lastMessageElement = child;
+				}
+			}
+		}
 		
 		identifier = new Identifier(namespaceValue);
+		identifier.fromOMElement(identifierPart);
 		messageNumber = new MessageNumber(namespaceValue);
-		identifier.fromOMElement(sequencePart);
-		messageNumber.fromOMElement(sequencePart);
-
-		OMElement lastMessageElement = sequencePart
-				.getFirstChildWithName(new QName(namespaceValue,Sandesha2Constants.WSRM_COMMON.LAST_MSG));
-
-		if (lastMessageElement != null) {
+		messageNumber.fromOMElement(msgNumberPart);
+		if(lastMessageElement != null){
 			lastMessage = new LastMessage(namespaceValue);
-			lastMessage.fromOMElement(sequencePart);
+			lastMessage.fromOMElement(lastMessageElement);
 		}
 
-    // Indicate that we have processed this part of the message.
-    ((SOAPHeaderBlock)sequencePart).setProcessed();
+		// Indicate that we have processed this part of the message.
+		shb.setProcessed();
     
 		return this;
 	}
-
+	
 	public OMElement toOMElement(OMElement headerElement) throws OMException {
 
 		if (headerElement == null || !(headerElement instanceof SOAPHeader))

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java Thu Oct  4 02:48:14 2007
@@ -50,6 +50,8 @@
 	private AckNone ackNone = null;
 	private AckFinal ackFinal = null;
 	
+	private OMElement originalSequenceAckElement;
+	
 	public SequenceAcknowledgement(String namespaceValue) throws SandeshaException {
 		if (!isNamespaceSupported(namespaceValue))
 			throw new SandeshaException (SandeshaMessageHelper.getMessage(
@@ -66,58 +68,51 @@
 	}
 
 	public Object fromOMElement(OMElement sequenceAckElement) throws OMException,SandeshaException {
-
-		identifier = new Identifier(namespaceValue);
-		identifier.fromOMElement(sequenceAckElement);
-
-		Iterator ackRangeParts = sequenceAckElement.getChildrenWithName(new QName(
-				namespaceValue, Sandesha2Constants.WSRM_COMMON.ACK_RANGE));
-
-		while (ackRangeParts.hasNext()) {
-			OMElement ackRangePart = (OMElement) ackRangeParts.next();
-
-			AcknowledgementRange ackRange = new AcknowledgementRange(namespaceValue);
-			ackRange.fromOMElement(ackRangePart);
-			acknowledgementRangeList.add(ackRange);
-		}
-
-		Iterator nackParts = sequenceAckElement.getChildrenWithName(new QName(
-				namespaceValue, Sandesha2Constants.WSRM_COMMON.NACK));
-
-		while (nackParts.hasNext()) {
-			OMElement nackPart = (OMElement) nackParts.next();
-			Nack nack = new Nack(namespaceValue);
-			nack.fromOMElement(nackPart);
-			nackList.add(nack);
-		}
-
-		String rmSpecVersion = SpecSpecificConstants.getSpecVersionString (namespaceValue);
-		
-		if (SpecSpecificConstants.isAckFinalAllowed(rmSpecVersion)) {
-			OMElement ackFinalPart = sequenceAckElement.getFirstChildWithName(new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.FINAL));
-			if (ackFinalPart!=null) {
-				ackFinal = new AckFinal (namespaceValue);
-				ackFinal.fromOMElement(sequenceAckElement);
+		originalSequenceAckElement = sequenceAckElement;
+		OMElement identifierPart = null;
+		Iterator childElements = sequenceAckElement.getChildElements();
+		while(childElements.hasNext()){
+			OMElement element = (OMElement)childElements.next();
+			String elementNamespace = element.getQName().getNamespaceURI();
+			String elementLocalName = element.getQName().getLocalPart();
+			if(namespaceValue.equals(elementNamespace)){
+				if(Sandesha2Constants.WSRM_COMMON.ACK_RANGE.equals(elementLocalName)){
+					AcknowledgementRange ackRange = new AcknowledgementRange(namespaceValue);
+					ackRange.fromOMElement(element);
+					acknowledgementRangeList.add(ackRange);
+				}else if(Sandesha2Constants.WSRM_COMMON.NACK.equals(elementLocalName)){
+					Nack nack = new Nack(namespaceValue);
+					nack.fromOMElement(element);
+					nackList.add(nack);
+				}else if(Sandesha2Constants.WSRM_COMMON.IDENTIFIER.equals(elementLocalName)){
+					identifierPart = element;
+				}else {
+					String rmSpecVersion = SpecSpecificConstants.getSpecVersionString (namespaceValue);
+					if (SpecSpecificConstants.isAckFinalAllowed(rmSpecVersion)) {
+						if(Sandesha2Constants.WSRM_COMMON.FINAL.equals(elementLocalName)){
+							ackFinal = new AckFinal (namespaceValue);
+							ackFinal.fromOMElement(element);
+						}
+					}
+					if (SpecSpecificConstants.isAckNoneAllowed(rmSpecVersion)) {
+						if(Sandesha2Constants.WSRM_COMMON.NONE.equals(elementLocalName)){
+							ackNone = new AckNone (namespaceValue);
+							ackNone.fromOMElement(element);
+						}
+					}
+				}
 			}
 		}
-		
-		if (SpecSpecificConstants.isAckNoneAllowed(rmSpecVersion)) {
-			OMElement ackNonePart = sequenceAckElement.getFirstChildWithName(new QName (namespaceValue,Sandesha2Constants.WSRM_COMMON.NONE));
-			if (ackNonePart!=null) {
-				ackNone = new AckNone (namespaceValue);
-				ackNone.fromOMElement(sequenceAckElement);
-			}
-		}
-		
-    // Indicate that we have processed this part of the message.
-    ((SOAPHeaderBlock)sequenceAckElement).setProcessed();
 
-    
+		identifier = new Identifier(namespaceValue);
+		identifier.fromOMElement(identifierPart);
+
+		// Indicate that we have processed this part of the message.
+		((SOAPHeaderBlock)sequenceAckElement).setProcessed();
 		return this;
 	}
-
+	
 	public OMElement toOMElement(OMElement header) throws OMException,SandeshaException {
-
 		if (header == null || !(header instanceof SOAPHeader))
 			throw new OMException();
 
@@ -280,6 +275,10 @@
 
 	public void setAckNone(AckNone ackNone) {
 		this.ackNone = ackNone;
+	}
+	
+	public OMElement getOriginalSequenceAckElement() {
+		return originalSequenceAckElement;
 	}
 	
 }

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/SequenceOffer.java Thu Oct  4 02:48:14 2007
@@ -68,7 +68,10 @@
 					createSequenceElement.toString()));
 
 		identifier = new Identifier(namespaceValue);
-		identifier.fromOMElement(sequenceOfferPart);
+		OMElement identifierPart = sequenceOfferPart.getFirstChildWithName(new QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+		if(identifierPart != null){
+			identifier.fromOMElement(identifierPart);
+		}
 
 		OMElement expiresPart = sequenceOfferPart
 				.getFirstChildWithName(new QName(namespaceValue,Sandesha2Constants.WSRM_COMMON.EXPIRES));

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=581820&r1=581819&r2=581820&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 Thu Oct  4 02:48:14 2007
@@ -68,7 +68,10 @@
 					body.toString()));
 
 		identifier = new Identifier(namespaceValue);
-		identifier.fromOMElement(terminateSeqPart);
+		OMElement identifierPart = terminateSeqPart.getFirstChildWithName(new QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+		if(identifierPart != null){
+			identifier.fromOMElement(identifierPart);
+		}
 
 		return this;
 	}

Modified: webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java (original)
+++ webservices/sandesha/trunk/java/modules/core/src/main/java/org/apache/sandesha2/wsrm/TerminateSequenceResponse.java Thu Oct  4 02:48:14 2007
@@ -70,7 +70,10 @@
 							body.toString()));
 
 		identifier = new Identifier(namespaceValue);
-		identifier.fromOMElement(terminateSeqResponsePart);
+		OMElement identifierPart = terminateSeqResponsePart.getFirstChildWithName(new QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.IDENTIFIER));
+		if(identifierPart != null){
+			identifier.fromOMElement(identifierPart);
+		}
 
 		return this;
 	}

Modified: webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/SandeshaTestCase.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/SandeshaTestCase.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/SandeshaTestCase.java (original)
+++ webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/SandeshaTestCase.java Thu Oct  4 02:48:14 2007
@@ -71,7 +71,7 @@
 
 	protected SimpleHTTPServer httpServer = null;
 	protected int serverPort = DEFAULT_SERVER_TEST_PORT;
-	protected int waitTime = 60000; // Each test will wait up to 60 seconds, unless we override it here
+	protected int waitTime = 70000; // Each test will wait up to 70 seconds, unless we override it here
 	protected int tickTime = 1000;  // Each wait will check the test assertions each second
 	protected String pingAction = "urn:wsrm:Ping";
 	protected String echoAction = "urn:wsrm:EchoString";

Modified: webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/SequenceTest.java
URL: http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/SequenceTest.java?rev=581820&r1=581819&r2=581820&view=diff
==============================================================================
--- webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/SequenceTest.java (original)
+++ webservices/sandesha/trunk/java/modules/tests/src/test/java/org/apache/sandesha2/wsrm/SequenceTest.java Thu Oct  4 02:48:14 2007
@@ -39,7 +39,7 @@
     public void testFromOMElement()  throws SandeshaException {
         SOAPEnvelope env = getSOAPEnvelope("", "Sequence.xml");
         Sequence sequence = new Sequence(rmNamespace);
-        sequence.fromOMElement(env.getHeader());
+        sequence.fromOMElement(env.getHeader().getFirstChildWithName(Sandesha2Constants.SPEC_2005_02.QNames.Sequence));
 
         Identifier identifier = sequence.getIdentifier();
         assertEquals("uuid:879da420-1624-11da-bed9-84d13db13902", identifier.getIdentifier());



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