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)
*