Author: chamikara
Date: Fri Sep 15 19:02:26 2006
New Revision: 446809

URL: http://svn.apache.org/viewvc?view=rev&rev=446809
Log:
Patch from Matt on AckRequest processing.

Added:
    webservices/sandesha/trunk/java/test-resources/AckRequested.xml
Modified:
    webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AckRequested.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
    
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
    
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/AckRequestedTest.java

Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java 
(original)
+++ webservices/sandesha/trunk/java/src/org/apache/sandesha2/RMMsgContext.java 
Fri Sep 15 19:02:26 2006
@@ -133,14 +133,13 @@
         */

        public void setMessagePart(int partId, IOMRMPart part) {

                if (partId >= 0 && partId <= 
Sandesha2Constants.MessageParts.MAX_MSG_PART_ID) {

-                       

-                       if 
(partId==Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT) {

-                               ArrayList sequenceAckList = (ArrayList) 
rmMessageParts.get(new Integer (partId));

-                               if (sequenceAckList==null) {

-                                       sequenceAckList = new ArrayList ();

-                                       sequenceAckList.add(part);

-                                       rmMessageParts.put(new Integer 
(partId),sequenceAckList);

+                       if (isMultiPart(partId)) {

+                               ArrayList partList = (ArrayList) 
rmMessageParts.get(new Integer (partId));

+                               if (partList==null) {

+                                       partList = new ArrayList ();

+                                       rmMessageParts.put(new Integer 
(partId),partList);

                                }

+                               partList.add(part);

                        } else {

                                rmMessageParts.put(new Integer(partId), part); 

                        }

@@ -174,7 +173,8 @@
        //checks weather there can be multiple elements of these parts,

        //if so getMessageParts method has to be called to get a ArrayList of 
parts..

        public boolean isMultiPart (int messagePartId) {

-               if 
(messagePartId==Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT)

+               if 
(messagePartId==Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT||

+                       
messagePartId==Sandesha2Constants.MessageParts.ACK_REQUEST)

                        return true;

                

                return false;


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/handlers/SandeshaInHandler.java
 Fri Sep 15 19:02:26 2006
@@ -30,6 +30,7 @@
 import org.apache.sandesha2.SandeshaException;

 import org.apache.sandesha2.i18n.SandeshaMessageHelper;

 import org.apache.sandesha2.i18n.SandeshaMessageKeys;

+import org.apache.sandesha2.msgprocessors.AckRequestedProcessor;

 import org.apache.sandesha2.msgprocessors.AcknowledgementProcessor;

 import org.apache.sandesha2.msgprocessors.MsgProcessor;

 import org.apache.sandesha2.msgprocessors.MsgProcessorFactory;

@@ -98,6 +99,10 @@
                        // Process Ack headers in the message

                        AcknowledgementProcessor ackProcessor = new 
AcknowledgementProcessor();

                        ackProcessor.processAckHeaders(msgCtx);

+

+                       // Process Ack Request headers in the message

+                       AckRequestedProcessor reqProcessor = new 
AckRequestedProcessor();

+                       reqProcessor.processAckRequestedHeaders(msgCtx);

 

                        AxisService axisService = msgCtx.getAxisService();

                        if (axisService == null) {


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/AckRequestedProcessor.java
 Fri Sep 15 19:02:26 2006
@@ -21,8 +21,12 @@
 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.Constants;

 import org.apache.axis2.addressing.AddressingConstants;

@@ -58,31 +62,49 @@
 import org.apache.sandesha2.wsrm.AckRequested;

 

 /**

- * Responsible for processing an incoming Application message.

+ * Responsible for processing ack requested headers on incoming messages.

  */

 

-public class AckRequestedProcessor implements MsgProcessor {

+public class AckRequestedProcessor {

 

        private static final Log log = 
LogFactory.getLog(AckRequestedProcessor.class);

 

-       public void processInMessage(RMMsgContext rmMsgCtx) throws 
SandeshaException {

+       public void processAckRequestedHeaders(MessageContext message) throws 
SandeshaException {

                if (log.isDebugEnabled())

-                       log.debug("Enter: 
AckRequestedProcessor::processInMessage");

+                       log.debug("Enter: 
AckRequestedProcessor::processAckRequestHeaders");

 

-               AckRequested ackRequested = (AckRequested) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);

-               if (ackRequested == null) {

-                       throw new 
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.noAckRequestedElement));

+               SOAPEnvelope envelope = message.getEnvelope();

+               SOAPHeader header = envelope.getHeader();

+               

+               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);

+                         processAckRequestedHeader(message, ackReq);

+                       }

                }

 

-               // settting must understand to false.

-               ackRequested.setMustUnderstand(false);

-               rmMsgCtx.addSOAPEnvelope();

+               if (log.isDebugEnabled())

+                       log.debug("Exit: 
AckRequestedProcessor::processAckRequestHeaders");

+       }

+

+       public void processAckRequestedHeader(MessageContext msgContext, 
AckRequested ackRequested) throws SandeshaException {

+               if (log.isDebugEnabled())

+                       log.debug("Enter: 
AckRequestedProcessor::processAckRequestedHeader");

 

-               MessageContext msgContext = rmMsgCtx.getMessageContext();

+               // TODO: Note that this RMMessageContext is not really any use 
- but we need to create it

+               // so that it can be passed to the fault handling chain. It's 
really no more than a

+               // container for the correct addressing and RM spec levels, so 
we'd be better off passing

+               // them in directly. Unfortunately that change ripples through 
the codebase...

+               RMMsgContext rmMsgCtx = 
MsgInitializer.initializeMessage(msgContext);

 

                String sequenceId = 
ackRequested.getIdentifier().getIdentifier();

 

-               ConfigurationContext configurationContext = 
rmMsgCtx.getMessageContext().getConfigurationContext();

+               ConfigurationContext configurationContext = 
msgContext.getConfigurationContext();

 

                StorageManager storageManager = 
SandeshaUtil.getSandeshaStorageManager(configurationContext,

                                configurationContext.getAxisConfiguration());

@@ -90,7 +112,7 @@
                SequencePropertyBeanMgr seqPropMgr = 
storageManager.getSequencePropertyBeanMgr();

 

                //not getting the sequencePropertyKey from the usual method 
since the ackRequest may be embedded in a message

-               //of a different sequence. (usua method 
SandeshaUtil.getSequencePropertyKey)

+               //of a different sequence. (usual method 
SandeshaUtil.getSequencePropertyKey)

                String sequencePropertyKey = sequenceId;

                

                // Check that the sender of this AckRequest holds the correct 
token

@@ -278,16 +300,8 @@
                        msgContext.pause();

 

                        if (log.isDebugEnabled())

-                               log.debug("Exit: 
AckRequestedProcessor::processInMessage");

-               }

-       }

-

-       public void processOutMessage(RMMsgContext rmMsgCtx) throws 
SandeshaException {

-               if (log.isDebugEnabled()) {

-                       log.debug("Enter: 
AckRequestedProcessor::processOutMessage");

-                       log.debug("Exit: 
AckRequestedProcessor::processOutMessage");

+                               log.debug("Exit: 
AckRequestedProcessor::processAckRequestedHeader");

                }

-

        }

 

 }


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
 Fri Sep 15 19:02:26 2006
@@ -87,13 +87,6 @@
                if (log.isDebugEnabled())

                        log.debug("Enter: 
ApplicationMsgProcessor::processInMessage");

 

-               // TODO process embedded ack requests

-               AckRequested ackRequested = (AckRequested) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);

-               if (ackRequested != null) {

-                       ackRequested.setMustUnderstand(false);

-                       rmMsgCtx.addSOAPEnvelope();

-               }

-

                // Processing the application message.

                MessageContext msgCtx = rmMsgCtx.getMessageContext();

                if (msgCtx == null) {

@@ -376,14 +369,6 @@
                ConfigurationContext configCtx = 
rmMsgCtx.getMessageContext().getConfigurationContext();

                if (configCtx == null)

                        throw new 
SandeshaException(SandeshaMessageHelper.getMessage(SandeshaMessageKeys.configContextNotSet));

-

-               AckRequested ackRequested = (AckRequested) 
rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);

-

-               if (ackRequested != null) {

-                       // setting mustundestand=false for the ackRequested 
header block.

-                       ackRequested.setMustUnderstand(false);

-                       rmMsgCtx.addSOAPEnvelope();

-               }

 

                RMMsgContext ackRMMessage = 
AcknowledgementManager.generateAckMessage(rmMsgCtx, sequencePropertyKey 
,sequenceId, storageManager);

 


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/CreateSeqResponseMsgProcessor.java
 Fri Sep 15 19:02:26 2006
@@ -262,14 +262,6 @@
 

                        sequencePart.setIdentifier(identifier);

 

-                       AckRequested ackRequestedPart = (AckRequested) 
applicaionRMMsg

-                                       
.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);

-                       if (ackRequestedPart != null) {

-                               Identifier id1 = new 
Identifier(assumedRMNamespace);

-                               id1.setIndentifer(newOutSequenceId);

-                               ackRequestedPart.setIdentifier(id1);

-                       }

-

                        try {

                                applicaionRMMsg.addSOAPEnvelope();

                        } catch (AxisFault e) {


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/msgprocessors/MsgProcessorFactory.java
 Fri Sep 15 19:02:26 2006
@@ -43,8 +43,6 @@
                        return new CreateSeqResponseMsgProcessor();

                case (Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE):

                        return new CloseSequenceProcessor();

-               case (Sandesha2Constants.MessageTypes.ACK_REQUEST):

-                       return new AckRequestedProcessor();

                default:

                        return null;

                }


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/MsgInitializer.java
 Fri Sep 15 19:02:26 2006
@@ -106,7 +106,7 @@
                        rmNamespace = 
elements.getSequence().getNamespaceValue();

                }

 

-               //In case of ack messages RM Namespace is decided based on the 
sequenceId of the first 

+               //In case of ack messages RM Namespace is decided based on the 
sequenceId of the last 

                //sequence Ack. In other words Sandesha2 does not expect to 
receive two SequenceAcknowledgements

                //of different RM specifications in the same incoming message

                for (Iterator iter = 
elements.getSequenceAcknowledgements();iter.hasNext();) {

@@ -126,9 +126,12 @@
                        rmNamespace = 
elements.getTerminateSequenceResponse().getNamespaceValue();

                }

 

-               if (elements.getAckRequested() != null) {

-                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST, 
elements.getAckRequested());

-                       rmNamespace = 
elements.getAckRequested().getNamespaceValue();

+               //In case of ack request messages RM Namespace is decided based 
on the sequenceId of the last 

+               //ack request.

+               for (Iterator iter = elements.getAckRequests();iter.hasNext();) 
{

+                       AckRequested ackRequest = (AckRequested) iter.next();

+                       
rmMsgContext.setMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST, 
ackRequest);

+                       rmNamespace = ackRequest.getNamespaceValue();

                }

 

                if (elements.getCloseSequence() != null) {

@@ -193,7 +196,7 @@
                                
Sandesha2Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);

                Sequence sequence = (Sequence) rmMsgCtx.getMessagePart(

                                Sandesha2Constants.MessageParts.SEQUENCE);

-               AckRequested ackRequest = (AckRequested) 
rmMsgCtx.getMessagePart(

+               Iterator ackRequestedIter = rmMsgCtx.getMessageParts(

                                Sandesha2Constants.MessageParts.ACK_REQUEST);

                CloseSequence closeSequence = (CloseSequence) 
rmMsgCtx.getMessagePart(

                                Sandesha2Constants.MessageParts.CLOSE_SEQUENCE);

@@ -224,9 +227,13 @@
                        //if there is only on sequenceAck, sequenceId will be 
set. Otherwise it will not be.

                        if (!sequenceAcknowledgementsIter.hasNext())

                                sequenceID = 
sequenceAcknowledgement.getIdentifier().getIdentifier();

-               } else if (ackRequest != null) {

+               } else if (ackRequestedIter.hasNext()) {

                        
rmMsgCtx.setMessageType(Sandesha2Constants.MessageTypes.ACK_REQUEST);

-                       sequenceID = ackRequest.getIdentifier().getIdentifier();

+                       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);

                        sequenceID = 
closeSequence.getIdentifier().getIdentifier();


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/util/SandeshaUtil.java 
Fri Sep 15 19:02:26 2006
@@ -899,9 +899,14 @@
                        SequenceAcknowledgement sequenceAcknowledgement = 
(SequenceAcknowledgement) sequenceAckIter.next();

                        sequenceID = 
sequenceAcknowledgement.getIdentifier().getIdentifier();

                } else if (messageType == 
Sandesha2Constants.MessageTypes.ACK_REQUEST) {

-                       AckRequested ackRequested = (AckRequested) 
rmMessageContext

-                                       
.getMessagePart(Sandesha2Constants.MessageParts.ACK_REQUEST);

-                       sequenceID = 
ackRequested.getIdentifier().getIdentifier();

+                       Iterator ackRequestIter = rmMessageContext

+                                       
.getMessageParts(Sandesha2Constants.MessageParts.ACK_REQUEST);

+       

+                       //In case of ack request messages sequenceId is decided 
based on the sequenceId of the first 

+                       //AckRequested.

+                       

+                       AckRequested ackReq = (AckRequested) 
ackRequestIter.next();

+                       sequenceID = ackReq.getIdentifier().getIdentifier();

                } else if (messageType == 
Sandesha2Constants.MessageTypes.CLOSE_SEQUENCE) {

                        CloseSequence closeSequence = (CloseSequence) 
rmMessageContext

                                        
.getMessagePart(Sandesha2Constants.MessageParts.CLOSE_SEQUENCE);


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AckRequested.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AckRequested.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AckRequested.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/AckRequested.java 
Fri Sep 15 19:02:26 2006
@@ -33,16 +33,15 @@
 

 /**

  * Represent the AckRequested header block.

+ * The 2005/02 spec includes a 'MessageNumber' part in the ack request, but

+ * the 2006/08 spec does not. As the message number was never used in our

+ * implementation we simply ignore it.

  */

 

 public class AckRequested implements IOMRMPart {

        

        private Identifier identifier;

-       

-       private MessageNumber messageNumber;

-       

        private String namespaceValue = null;

-       

        private boolean mustUnderstand = false;

        

        public AckRequested(String namespaceValue) throws SandeshaException {

@@ -58,31 +57,11 @@
                return namespaceValue;

        }

 

-       public Object fromOMElement(OMElement header) throws 
OMException,SandeshaException {

-

-               if (header == null || !(header instanceof SOAPHeader))

-                       throw new OMException(SandeshaMessageHelper.getMessage(

-                                       
SandeshaMessageKeys.ackRequestedCannotBeAddedToNonHeader));

-

-               OMElement ackReqPart = header.getFirstChildWithName(new 
QName(namespaceValue, Sandesha2Constants.WSRM_COMMON.ACK_REQUESTED));

+       public Object fromOMElement(OMElement ackReqElement) throws 
OMException,SandeshaException {

 

-               if (ackReqPart == null)

-                       throw new OMException(SandeshaMessageHelper.getMessage(

-                                       
SandeshaMessageKeys.noAckRequestedElement,

-                                       header.toString()));

-

-//             ackElement = ackReqPart;

                identifier = new Identifier(namespaceValue);

-               identifier.fromOMElement(ackReqPart);

-

-               OMElement msgNoPart = ackReqPart.getFirstChildWithName(new 
QName(

-                               namespaceValue, 
Sandesha2Constants.WSRM_COMMON.MSG_NUMBER));

-

-               if (msgNoPart != null) {

-                       messageNumber = new MessageNumber(namespaceValue);

-                       messageNumber.fromOMElement(ackReqPart);

-               }

-

+               identifier.fromOMElement(ackReqElement);

+               

                return this;

        }

 

@@ -106,10 +85,6 @@
 

                identifier.toOMElement(ackReqHdrBlock);

 

-               if (messageNumber != null) {

-                       messageNumber.toOMElement(ackReqHdrBlock);

-               }

-

                return header;

        }

 

@@ -117,27 +92,12 @@
                this.identifier = identifier;

        }

 

-       public void setMessageNumber(MessageNumber messageNumber) {

-               this.messageNumber = messageNumber;

-       }

-

        public Identifier getIdentifier() {

                return identifier;

        }

 

-       public MessageNumber getMessageNumber() {

-               return messageNumber;

-       }

-

        public void toSOAPEnvelope(SOAPEnvelope envelope) {

                SOAPHeader header = envelope.getHeader();

-               

-               //detach if already exist.

-               OMElement elem = header.getFirstChildWithName(new 
QName(namespaceValue,

-                               Sandesha2Constants.WSRM_COMMON.ACK_REQUESTED));

-               if (elem!=null)

-                       elem.detach();

-               

                toOMElement(header);

        }

        


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java 
(original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/RMElements.java 
Fri Sep 15 19:02:26 2006
@@ -45,8 +45,9 @@
 

        private Sequence sequence = null;

        

-       //there can be more than one sequence acks in a single message.

+       //there can be more than one sequence ack or ack request in a single 
message.

        private ArrayList sequenceAcknowledgements = null;

+       private ArrayList ackRequests = null;

        

        private CreateSequence createSequence = null;

        private CreateSequenceResponse createSequenceResponse = null;

@@ -54,7 +55,6 @@
        private TerminateSequenceResponse terminateSequenceResponse = null;

        private CloseSequence closeSequence = null;

        private CloseSequenceResponse closeSequenceResponse = null;

-       private AckRequested ackRequested = null;

        private UsesSequenceSTR usesSequenceSTR = null;

        private MessagePending messagePending = null;

        private MakeConnection makeConnection = null;

@@ -63,6 +63,7 @@
        

        public RMElements () {

                sequenceAcknowledgements = new ArrayList ();

+               ackRequests = new ArrayList();

        }

        

        public RMElements (String addressingNamespace) {

@@ -100,12 +101,8 @@
                        String message = SandeshaMessageHelper.getMessage(

                                        SandeshaMessageKeys.unknownWSAVersion, 
envelope.toString());

                        throw new SandeshaException (message);

-//                     return;

                }

                

-//             if (addressingNamespaceValue==null)

-//                     addressingNamespaceValue = 
AddressingConstants.Final.WSA_NAMESPACE;   //Final is the default version for 
addressing

-       

                OMElement sequenceElement = 
envelope.getHeader().getFirstChildWithName(

                                new QName(rmNamespaceValue, 
Sandesha2Constants.WSRM_COMMON.SEQUENCE));

                if (sequenceElement != null) {

@@ -149,15 +146,6 @@
                                
terminateSequenceResponse.fromOMElement(envelope.getBody());

                }

 

-               OMElement ackRequestedElement = envelope.getHeader()

-                               .getFirstChildWithName(

-                                               new QName(rmNamespaceValue,

-                                                               
Sandesha2Constants.WSRM_COMMON.ACK_REQUESTED));

-               if (ackRequestedElement != null) {

-                       ackRequested = new AckRequested(rmNamespaceValue);

-                       ackRequested.fromOMElement(envelope.getHeader());

-               }

-               

                OMElement closeSequenceElement = envelope.getBody()

                        .getFirstChildWithName(

                                new QName(rmNamespaceValue,

@@ -187,6 +175,17 @@
                        sequenceAcknowledgements.add(sequenceAcknowledgement);

                }

 

+               Iterator ackRequestIter = envelope.getHeader()

+                               .getChildrenWithName (new 
QName(rmNamespaceValue,

+                                               
Sandesha2Constants.WSRM_COMMON.ACK_REQUESTED));

+               while (ackRequestIter.hasNext()) {

+                       OMElement ackRequestElement = (OMElement) 
ackRequestIter.next();

+                       AckRequested ackRequest = new 
AckRequested(rmNamespaceValue);

+                       ackRequest.fromOMElement(ackRequestElement);

+                       

+                       ackRequests.add(ackRequest);

+               }

+

                OMElement usesSequenceSTRElement = envelope.getHeader()

                .getFirstChildWithName(

                                new QName(rmNamespaceValue,

@@ -221,6 +220,10 @@
                        SequenceAcknowledgement sequenceAck = 
(SequenceAcknowledgement) iter.next();

                        sequenceAck.toOMElement(envelope.getHeader());

                }

+               for (Iterator iter=ackRequests.iterator();iter.hasNext();) {

+                       AckRequested ackReq = (AckRequested) iter.next();

+                       ackReq.toOMElement(envelope.getHeader());

+               }

                if (createSequence != null) {

                        createSequence.toOMElement(envelope.getBody());

                }

@@ -230,10 +233,6 @@
                if (terminateSequence != null) {

                        terminateSequence.toOMElement(envelope.getBody());

                }

-               if (ackRequested != null) {

-                       ackRequested.toOMElement(envelope.getBody());

-               }

-               

                if (terminateSequenceResponse != null) {

                        
terminateSequenceResponse.toOMElement(envelope.getBody());

                }

@@ -311,12 +310,16 @@
                this.terminateSequenceResponse = terminateSequenceResponse;

        }

 

-       public AckRequested getAckRequested() {

-               return ackRequested;

+       public Iterator getAckRequests() {

+               return ackRequests.iterator();

        }

 

-       public void setAckRequested(AckRequested ackRequested) {

-               this.ackRequested = ackRequested;

+       public void setAckRequested(ArrayList ackRequests) {

+               this.ackRequests = ackRequests;

+       }

+       

+       public void addAckRequested(AckRequested ackRequested) {

+               ackRequests.add(ackRequested);

        }

        

        public void setMakeConnection(MakeConnection makeConnection) {


Modified: 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
 (original)
+++ 
webservices/sandesha/trunk/java/src/org/apache/sandesha2/wsrm/SequenceAcknowledgement.java
 Fri Sep 15 19:02:26 2006
@@ -28,7 +28,6 @@
 import org.apache.axiom.om.OMFactory;

 import org.apache.axiom.om.OMNamespace;

 import org.apache.axiom.soap.SOAPEnvelope;

-import org.apache.axiom.soap.SOAPFactory;

 import org.apache.axiom.soap.SOAPHeader;

 import org.apache.axiom.soap.SOAPHeaderBlock;

 import org.apache.sandesha2.Sandesha2Constants;

@@ -68,8 +67,6 @@
 

        public Object fromOMElement(OMElement sequenceAckElement) throws 
OMException,SandeshaException {

 

-               OMFactory factory = sequenceAckElement.getOMFactory();

-               

                identifier = new Identifier(namespaceValue);

                identifier.fromOMElement(sequenceAckElement);

 

@@ -207,7 +204,7 @@
                acknowledgementRangeList = acknowledgementRagngesList;

        }

 

-       public Nack addNackRangges(Nack nack) {

+       public Nack addNackRanges(Nack nack) {

                nackList.add(nack);

                return nack;

        }

@@ -230,19 +227,8 @@
                return nackList;

        }

 

-       public void addChildElement(OMElement element) {

-               acknowledgementRangeList.add(element);

-       }

-

        public void toSOAPEnvelope(SOAPEnvelope envelope) throws 
SandeshaException {

                SOAPHeader header = envelope.getHeader();

-

-               //detach if already exist.

-               OMElement elem = header.getFirstChildWithName(new QName(

-                               namespaceValue, 
Sandesha2Constants.WSRM_COMMON.SEQUENCE_ACK));

-               if (elem != null)

-                       elem.detach();

-

                toOMElement(header);

        }

 


Added: webservices/sandesha/trunk/java/test-resources/AckRequested.xml
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test-resources/AckRequested.xml?view=auto&rev=446809
==============================================================================
--- webservices/sandesha/trunk/java/test-resources/AckRequested.xml (added)
+++ webservices/sandesha/trunk/java/test-resources/AckRequested.xml Fri Sep 15 
19:02:26 2006
@@ -0,0 +1,15 @@
+<?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:Header>

+         <wsa:MessageID 
soapenv:mustUnderstand="1">uuid:8d8f8d80-1624-11da-a28e-b3b9c4e71445</wsa:MessageID>

+         <wsa:To 
soapenv:mustUnderstand="1">http://127.0.0.1:9070/axis/services/RMService</wsa:To>

+         <wsa:Action 
soapenv:mustUnderstand="1">http://schemas.xmlsoap.org/ws/2005/02/rm/AckRequested</wsa:Action>

+         <wsa:From soapenv:mustUnderstand="1">

+            
<wsa:Address>http://localhost:8070/axis/services/TestService</wsa:Address>

+         </wsa:From>

+         <wsrm:AckRequested soapenv:mustUnderstand="1">

+            
<wsrm:Identifier>uuid:897ee740-1624-11da-a28e-b3b9c4e71445</wsrm:Identifier>

+         </wsrm:AckRequested>

+      </soapenv:Header>

+      <soapenv:Body/>

+   </soapenv:Envelope>


Modified: 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/AckRequestedTest.java
URL: 
http://svn.apache.org/viewvc/webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/AckRequestedTest.java?view=diff&rev=446809&r1=446808&r2=446809
==============================================================================
--- 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/AckRequestedTest.java
 (original)
+++ 
webservices/sandesha/trunk/java/test/src/org/apache/sandesha2/wsrm/AckRequestedTest.java
 Fri Sep 15 19:02:26 2006
@@ -16,28 +16,48 @@
 

 package org.apache.sandesha2.wsrm;

 

-import junit.framework.TestCase;

+import javax.xml.namespace.QName;

 

 import org.apache.axiom.om.OMAbstractFactory;

+import org.apache.axiom.om.OMElement;

+import org.apache.axiom.soap.SOAPEnvelope;

 import org.apache.axiom.soap.SOAPFactory;

-import org.apache.axis2.addressing.AddressingConstants;

 import org.apache.sandesha2.Sandesha2Constants;

 import org.apache.sandesha2.SandeshaException;

+import org.apache.sandesha2.SandeshaTestCase;

 

-public class AckRequestedTest extends TestCase {

+public class AckRequestedTest extends SandeshaTestCase {

 

        SOAPFactory factory = OMAbstractFactory.getSOAP11Factory();

-       String rmNamespaceValue = Sandesha2Constants.SPEC_2005_02.NS_URI;

-       String addressingNamespaceValue = 
AddressingConstants.Final.WSA_NAMESPACE;

+       String rmNamespace = Sandesha2Constants.SPEC_2005_02.NS_URI;

        

-    public AckRequestedTest() {

-//        super("CreateSequenceResponseTest");

-

-    }

-

-    public void testFromOMElement() throws SandeshaException {

-       

-    }

-

-    public void testToSOAPEnvelope()  throws SandeshaException {}

+       public AckRequestedTest() {

+               super("AckRequestedTest");

+       }

+

+       public void testFromOMElement() throws SandeshaException {

+               QName name = new QName(rmNamespace, "AckRequested");

+               AckRequested ackReq = new AckRequested(rmNamespace);

+               SOAPEnvelope env = getSOAPEnvelope("", "AckRequested.xml");

+               
ackReq.fromOMElement(env.getHeader().getFirstChildWithName(name));

+               

+               Identifier identifier = ackReq.getIdentifier();

+               assertEquals("uuid:897ee740-1624-11da-a28e-b3b9c4e71445", 
identifier.getIdentifier());

+       }

+

+       public void testToSOAPEnvelope()  throws SandeshaException {

+               AckRequested ackReq = new AckRequested(rmNamespace);

+               Identifier identifier = new Identifier(rmNamespace);

+               
identifier.setIndentifer("uuid:897ee740-1624-11da-a28e-b3b9c4e71445");

+               ackReq.setIdentifier(identifier);

+               

+               SOAPEnvelope env = getEmptySOAPEnvelope();

+               ackReq.toSOAPEnvelope(env);

+               

+               OMElement ackReqPart = env.getHeader().getFirstChildWithName(

+                               new QName(rmNamespace, 
Sandesha2Constants.WSRM_COMMON.ACK_REQUESTED));

+               OMElement identifierPart = ackReqPart.getFirstChildWithName(

+                               new QName(rmNamespace, 
Sandesha2Constants.WSRM_COMMON.IDENTIFIER));

+               assertEquals("uuid:897ee740-1624-11da-a28e-b3b9c4e71445", 
identifierPart.getText());

+       }

 }




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

Reply via email to