You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fx-dev@ws.apache.org by ja...@apache.org on 2005/04/27 12:30:46 UTC

cvs commit: ws-fx/sandesha/src/org/apache/sandesha/ws/rm Sequence.java

jaliya      2005/04/27 03:30:46

  Modified:    sandesha/src/org/apache/sandesha EnvelopeCreator.java
               sandesha/src/org/apache/sandesha/server Sender.java
               sandesha/src/org/apache/sandesha/storage/queue
                        SandeshaQueue.java
               sandesha/src/org/apache/sandesha/util RMMessageCreator.java
               sandesha/src/org/apache/sandesha/ws/rm Sequence.java
  Log:
  Fix a bug of adding several sequence elements to SOAP envelops when re-transmitting messages
  
  Revision  Changes    Path
  1.30      +3 -2      ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java
  
  Index: EnvelopeCreator.java
  ===================================================================
  RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/EnvelopeCreator.java,v
  retrieving revision 1.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- EnvelopeCreator.java	26 Apr 2005 03:24:50 -0000	1.29
  +++ EnvelopeCreator.java	27 Apr 2005 10:30:45 -0000	1.30
  @@ -30,6 +30,7 @@
   import org.apache.axis.message.addressing.ReplyTo;
   import org.apache.axis.message.addressing.To;
   import org.apache.axis.types.URI;
  +import org.apache.axis.Message;
   import org.apache.commons.logging.Log;
   import org.apache.sandesha.ws.rm.AcksTo;
   import org.apache.sandesha.ws.rm.CreateSequence;
  @@ -343,8 +344,8 @@
           rmMessageContext.setRMHeaders(rmHeaders);
   
           //requestEnvelope = new SOAPEnvelope();
  -        requestEnvelope = rmMessageContext.getMsgContext()
  -                .getRequestMessage().getSOAPEnvelope();
  +        String str= rmMessageContext.getMsgContext().getRequestMessage().getSOAPPartAsString();
  +        requestEnvelope = new Message(str).getSOAPEnvelope();
   
           rmMessageContext.getRMHeaders().toSoapEnvelop(requestEnvelope);
           AddressingHeaders outGoingAddressingHaders = new AddressingHeaders(requestEnvelope);
  
  
  
  1.34      +34 -0     ws-fx/sandesha/src/org/apache/sandesha/server/Sender.java
  
  Index: Sender.java
  ===================================================================
  RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/server/Sender.java,v
  retrieving revision 1.33
  retrieving revision 1.34
  diff -u -r1.33 -r1.34
  --- Sender.java	12 Apr 2005 02:15:33 -0000	1.33
  +++ Sender.java	27 Apr 2005 10:30:45 -0000	1.34
  @@ -22,7 +22,11 @@
   import org.apache.axis.client.Call;
   import org.apache.axis.client.Service;
   import org.apache.axis.components.logger.LogFactory;
  +import org.apache.axis.components.uuid.UUIDGen;
  +import org.apache.axis.components.uuid.UUIDGenFactory;
   import org.apache.axis.message.addressing.AddressingHeaders;
  +import org.apache.axis.message.addressing.MessageID;
  +import org.apache.axis.types.URI;
   import org.apache.commons.logging.Log;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.EnvelopeCreator;
  @@ -35,6 +39,7 @@
   import javax.xml.rpc.ServiceException;
   import javax.xml.soap.SOAPEnvelope;
   import javax.xml.soap.SOAPException;
  +import java.util.List;
   
   /**
    * @author JEkanayake
  @@ -168,6 +173,35 @@
           } else {
               Call call;
   
  +
  +
  +            //EDITED FOR MSG NO REPITITION
  +            String oldOutSeqId, newOutSeqId;
  +
  +            String oldCreateSeqId = rmMessageContext.getMessageID().toString();
  +            UUIDGen uuidGen = UUIDGenFactory.getUUIDGen();
  +            String uuid = uuidGen.nextUUID();
  +
  +
  +            String newCreateSeqId = Constants.UUID + uuid;
  +            rmMessageContext.setMessageID(newCreateSeqId);
  +
  +            oldOutSeqId = oldCreateSeqId;
  +            newOutSeqId = newCreateSeqId;
  +
  +
  +            //MessageContext msgContext = tempMsg.getMsgContext();
  +            //String toAddress = tempMsg.getOutGoingAddress();
  +
  +
  +            AddressingHeaders addrHeaders = new AddressingHeaders(rmMessageContext.getMsgContext().getRequestMessage().getSOAPEnvelope());
  +            addrHeaders.setMessageID(new MessageID(new URI(newCreateSeqId)));
  +            addrHeaders.toEnvelope(rmMessageContext.getMsgContext().getRequestMessage().getSOAPEnvelope());
  +
  +
  +            rmMessageContext.addToMsgIdList(rmMessageContext.getMessageID().toString());
  +            List msgIdList = rmMessageContext.getMessageIdList();
  +            //Iterator it = msgIdList.iterator();
               rmMessageContext.setLastPrecessedTime(System.currentTimeMillis());
               rmMessageContext.setReTransmissionCount(rmMessageContext.getReTransmissionCount() + 1);
               call = prepareCall(rmMessageContext);
  
  
  
  1.12      +0 -35     ws-fx/sandesha/src/org/apache/sandesha/storage/queue/SandeshaQueue.java
  
  Index: SandeshaQueue.java
  ===================================================================
  RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/storage/queue/SandeshaQueue.java,v
  retrieving revision 1.11
  retrieving revision 1.12
  diff -u -r1.11 -r1.12
  --- SandeshaQueue.java	27 Apr 2005 07:08:50 -0000	1.11
  +++ SandeshaQueue.java	27 Apr 2005 10:30:45 -0000	1.12
  @@ -20,9 +20,6 @@
   import org.apache.axis.components.logger.LogFactory;
   import org.apache.axis.components.uuid.UUIDGen;
   import org.apache.axis.components.uuid.UUIDGenFactory;
  -import org.apache.axis.message.addressing.AddressingHeaders;
  -import org.apache.axis.message.addressing.MessageID;
  -import org.apache.axis.types.URI;
   import org.apache.commons.logging.Log;
   import org.apache.sandesha.Constants;
   import org.apache.sandesha.RMMessageContext;
  @@ -92,16 +89,11 @@
   
                   if (seqHash.hasMessage(messageNo))
                       throw new QueueException(Constants.Queue.MESSAGE_EXISTS);
  -                //Messages will not be replaced automatically.
   
  -                //setting last message
                   if (msgCon.isLastMessage())
                       seqHash.setLastMsg(msgCon.getMsgNumber());
   
  -                //setting sequence id
  -                //TODO: Do this in create seq response processor
                   seqHash.setSequenceId(msgCon.getSequenceID());
  -
                   seqHash.putNewMessage(messageNo, msgCon);
                   successful = true;
               }
  @@ -132,7 +124,6 @@
   
                   if (msgCon.isHasResponse())
                       resSeqHash.setHasResponse(true);
  -
               }
           }
           return successful;
  @@ -301,34 +292,11 @@
                                       newOutSeqId = newCreateSeqId;
   
   
  -                                    //MessageContext msgContext = tempMsg.getMsgContext();
  -                                    //String toAddress = tempMsg.getOutGoingAddress();
  -
                                       try {
  -                                        AddressingHeaders addrHeaders = new AddressingHeaders(tempMsg.getMsgContext().getRequestMessage().getSOAPEnvelope());
  -                                        addrHeaders.setMessageID(new MessageID(new URI(newCreateSeqId)));
  -                                        addrHeaders.toEnvelope(tempMsg.getMsgContext().getRequestMessage().getSOAPEnvelope());
  -
  -
   
  -                                        //SOAPEnvelope resEnvelope = EnvelopeCreator.createCreateSequenceEnvelope(uuid, tempMsg, Constants.CLIENT);
  -                                        //MessageContext createSeqMsgContext = tempMsg.getMsgContext(); //new MessageContext(msgContext.getAxisEngine());
  -
  -                                        //createSeqMsgContext.setRequestMessage(new Message(resEnvelope));
  -                                        //tempMsg.setMsgContext(createSeqMsgContext);
  -
  -                                        //changing the out sequence to the messageid of new create sequence.
  -                                        //String seqId = getSequenceOfOutSequence(oldOutSeqId);
  -                                        //setOutSequence(seqId,newOutSeqId);
                                           tempMsg.setLastSentTime(currentTime);
                                           msg = tempMsg;
   
  -                                        if (msg != null) {
  -                                            msg.addToMsgIdList(msg.getMessageID().toString());
  -                                            List msgIdList = msg.getMessageIdList();
  -                                            Iterator it = msgIdList.iterator();
  -
  -                                        }
   
                                           break forLoop;
   
  @@ -336,9 +304,6 @@
                                           ex.printStackTrace();
                                       }
   
  -                                    //END EDITED
  -
  -
                                   }
                                   break;
   
  
  
  
  1.11      +1 -0      ws-fx/sandesha/src/org/apache/sandesha/util/RMMessageCreator.java
  
  Index: RMMessageCreator.java
  ===================================================================
  RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/util/RMMessageCreator.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- RMMessageCreator.java	27 Apr 2005 07:08:50 -0000	1.10
  +++ RMMessageCreator.java	27 Apr 2005 10:30:45 -0000	1.11
  @@ -119,6 +119,7 @@
           requestMesssageContext.setMessageType(Constants.MSG_TYPE_SERVICE_REQUEST);
           requestMesssageContext.setMessageID(Constants.UUID + uuidGen.nextUUID());
           return requestMesssageContext;
  +
       }
   
       private static MessageContext cloneMsgContext(MessageContext msgContext) throws AxisFault {
  
  
  
  1.14      +18 -4     ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Sequence.java
  
  Index: Sequence.java
  ===================================================================
  RCS file: /home/cvs/ws-fx/sandesha/src/org/apache/sandesha/ws/rm/Sequence.java,v
  retrieving revision 1.13
  retrieving revision 1.14
  diff -u -r1.13 -r1.14
  --- Sequence.java	7 Mar 2005 05:34:35 -0000	1.13
  +++ Sequence.java	27 Apr 2005 10:30:46 -0000	1.14
  @@ -100,11 +100,10 @@
           if (env.getHeader() == null) {
               env.addHeader();
           }
  +        removeHeaders(envelope);
   
  -        Name name = env.createName("", Constants.WSRM.NS_PREFIX_RM,
  -                Constants.WSRM.NS_URI_RM);
  -        SOAPHeaderElement headerElement = (SOAPHeaderElement) env.getHeader()
  -                .addHeaderElement(name);
  +        Name name = env.createName("", Constants.WSRM.NS_PREFIX_RM, Constants.WSRM.NS_URI_RM);
  +        SOAPHeaderElement headerElement = (SOAPHeaderElement) env.getHeader().addHeaderElement(name);
   
           headerElement.setActor(null);
           headerElement.setName(Constants.WSRM.SEQUENCE);
  @@ -173,6 +172,21 @@
           return this;
       }
   
  +    public void removeHeaders(SOAPEnvelope soapEnvelope) throws Exception {
  +
  +        Iterator iterator = soapEnvelope.getHeader().getChildElements();
  +        MessageElement childElement;
  +
  +        while (iterator.hasNext()) {
  +            childElement = (MessageElement) iterator.next();
  +
  +            if (Constants.WSRM.SEQUENCE.equals(childElement.getName()) && (Constants.WSRM.NS_URI_RM.equals(childElement.getNamespaceURI()))) {
  +                childElement.detachNode();
  +                break;
  +            }
  +        }
  +    }
  +
       /*
        * (non-Javadoc)
        *