[prev in list] [next in list] [prev in thread] [next in thread]
List: sandesha-dev
Subject: svn commit: r292160 - in /webservices/sandesha/trunk: samples/interop/
From: chamikara () apache ! org
Date: 2005-09-28 10:48:17
Message-ID: 20050928104819.89862.qmail () minotaur ! apache ! org
[Download RAW message or body]
Author: chamikara
Date: Wed Sep 28 03:47:35 2005
New Revision: 292160
URL: http://svn.apache.org/viewcvs?rev=292160&view=rev
Log:
Previously since the acks were set at the SandeshaOutHandler it didnt work when the \
msgReceiver was InOnly. Fixed this by setting the ack in the SandeshaInHandler. In \
handler sents the ack message and call engine.send ().
Modified:
webservices/sandesha/trunk/samples/interop/services.xml
webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java
webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java
Modified: webservices/sandesha/trunk/samples/interop/services.xml
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/samples/interop/services.xml?rev=292160&r1=292159&r2=292160&view=diff
==============================================================================
--- webservices/sandesha/trunk/samples/interop/services.xml (original)
+++ webservices/sandesha/trunk/samples/interop/services.xml Wed Sep 28 03:47:35 2005
@@ -8,7 +8,7 @@
<module ref="sandesha" />
<operation name="ping">
- <messageReceiver \
class="org.apache.axis2.receivers.RawXMLINOutMessageReceiver" /> + \
<messageReceiver class="org.apache.axis2.receivers.RawXMLINOnlyMessageReceiver" /> \
</operation>
<operation name="echoString">
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java?rev=292160&r1=292159&r2=292160&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/RMMsgCreator.java Wed Sep 28 \
03:47:35 2005 @@ -24,6 +24,7 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.addressing.MessageInformationHeaders;
import org.apache.axis2.addressing.om.AddressingHeaders;
+import org.apache.axis2.clientapi.Call;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.context.OperationContext;
@@ -62,23 +63,56 @@
public static RMMsgContext createCreateSeqMsg(RMMsgContext applicationRMMsg)
throws SandeshaException {
- ConfigurationContext context = applicationRMMsg.getMessageContext()
- .getSystemContext();
+ MessageContext applicationMsgContext = applicationRMMsg
+ .getMessageContext();
+ if (applicationMsgContext == null)
+ throw new SandeshaException("Application message is null");
+ ConfigurationContext context = applicationMsgContext.getSystemContext();
if (context == null)
throw new SandeshaException("Configuration Context is null");
- MessageContext msgContext;
+ MessageContext createSeqmsgContext;
try {
- msgContext = new MessageContext(context, applicationRMMsg
- .getMessageContext().getTransportIn(), applicationRMMsg
- .getMessageContext().getTransportOut());
- } catch (AxisFault e) {
+ //creating by copying common contents. (this will not set contexts
+ // except for configCtx).
+ createSeqmsgContext = SandeshaUtil
+ .shallowCopy(applicationMsgContext);
+ } catch (SandeshaException e) {
throw new SandeshaException(e.getMessage());
}
- msgContext.setTo(applicationRMMsg.getTo());
- msgContext.setReplyTo(applicationRMMsg.getReplyTo());
- RMMsgContext createSeqRMMsg = new RMMsgContext(msgContext);
+ //setting contexts
+ createSeqmsgContext.setServiceGroupContext(applicationMsgContext
+ .getServiceGroupContext());
+ createSeqmsgContext.setServiceGroupContextId(applicationMsgContext
+ .getServiceGroupContextId());
+ createSeqmsgContext.setServiceContext(applicationMsgContext
+ .getServiceContext());
+ createSeqmsgContext.setServiceContextID(applicationMsgContext
+ .getServiceContextID());
+
+ try {
+ //TODO set a suitable ope. description
+ OperationContext createSeqOpContext = new OperationContext(
+ applicationMsgContext.getOperationDescription());
+ createSeqmsgContext.setOperationContext(createSeqOpContext);
+ createSeqOpContext.addMessageContext(createSeqmsgContext);
+
+ //Setting a new SOAP Envelop.
+ SOAPEnvelope envelope = SOAPAbstractFactory.getSOAPFactory(
+ Constants.DEFAULT_SOAP_VERSION).getDefaultEnvelope();
+
+ createSeqmsgContext.setEnvelope(envelope);
+ createSeqOpContext.addMessageContext(createSeqmsgContext);
+ createSeqmsgContext.setOperationContext(createSeqOpContext);
+ } catch (AxisFault e2) {
+ throw new SandeshaException(e2.getMessage());
+ }
+
+ createSeqmsgContext.setTo(applicationRMMsg.getTo());
+ createSeqmsgContext.setReplyTo(applicationRMMsg.getReplyTo());
+
+ RMMsgContext createSeqRMMsg = new RMMsgContext(createSeqmsgContext);
CreateSequence createSequencePart = new CreateSequence();
@@ -171,8 +205,8 @@
}
//Adds a ack message to the following message.
- public static void addAckMessage(RMMsgContext applicationMsg)
- throws SandeshaException {
+ public static void addAckMessage(RMMsgContext applicationMsg,
+ String sequenceId) throws SandeshaException {
SOAPEnvelope envelope = applicationMsg.getSOAPEnvelope();
if (envelope == null) {
SOAPEnvelope newEnvelope = SOAPAbstractFactory.getSOAPFactory(
@@ -181,30 +215,22 @@
}
envelope = applicationMsg.getSOAPEnvelope();
- MessageContext requestMessage = null;
-
- try {
- requestMessage = applicationMsg.getMessageContext()
- .getOperationContext().getMessageContext(
- WSDLConstants.MESSAGE_LABEL_IN);
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
-
- if (requestMessage == null)
- throw new SandeshaException("Request message is null");
-
- RMMsgContext reqRMMsgCtx = null;
-
- reqRMMsgCtx = MsgInitializer.initializeMessage(requestMessage);
-
- Sequence reqSequence = (Sequence) reqRMMsgCtx
- .getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
- if (reqSequence == null)
- throw new SandeshaException(
- "Sequence part of application message is null");
-
- String sequenceId = reqSequence.getIdentifier().getIdentifier();
+// MessageContext requestMessage = null;
+//
+// try {
+// requestMessage = applicationMsg.getMessageContext()
+// .getOperationContext().getMessageContext(
+// WSDLConstants.MESSAGE_LABEL_IN);
+// } catch (AxisFault e) {
+// throw new SandeshaException(e.getMessage());
+// }
+//
+// if (requestMessage == null)
+// throw new SandeshaException("Request message is null");
+//
+// RMMsgContext reqRMMsgCtx = null;
+//
+// reqRMMsgCtx = MsgInitializer.initializeMessage(requestMessage);
SequenceAcknowledgement sequenceAck = new SequenceAcknowledgement();
Identifier id = new Identifier();
@@ -243,13 +269,13 @@
}
- public static RMMsgContext createAckMessage(RMMsgContext applicationMsg)
+ public static RMMsgContext createAckMessage(RMMsgContext applicationRMMsgCtx)
throws SandeshaException {
try {
- MessageContext applicationMsgCtx = applicationMsg
+ MessageContext applicationMsgCtx = applicationRMMsgCtx
.getMessageContext();
MessageContext ackMsgCtx = SandeshaUtil
- .copyMessageContext(applicationMsgCtx);
+ .shallowCopy(applicationMsgCtx);
ackMsgCtx.setServiceGroupContext(applicationMsgCtx
.getServiceGroupContext());
ackMsgCtx.setServiceGroupContextId(applicationMsgCtx
@@ -257,21 +283,34 @@
ackMsgCtx.setServiceContext(applicationMsgCtx.getServiceContext());
ackMsgCtx.setServiceContextID(applicationMsgCtx
.getServiceContextID());
+
RMMsgContext ackRMMsgCtx = new RMMsgContext(ackMsgCtx);
- OperationContext ackOpCtx = new OperationContext(ackMsgCtx
+ //TODO set a suitable description
+ OperationContext ackOpCtx = new OperationContext(applicationMsgCtx
.getOperationDescription());
- MessageContext requestAppMsg = applicationMsgCtx
- .getOperationContext().getMessageContext(
- WSDLConstants.MESSAGE_LABEL_IN);
-
- //added request applicatin message as the request message for the newly created \
ack. +
+ // //TODO set a suitable request msg (if required)
+ // MessageContext requestAppMsg = applicationMsgCtx
+ // .getOperationContext().getMessageContext(
+ // WSDLConstants.MESSAGE_LABEL_IN);
+
+ //added request applicatin message as the request message for the
+ // newly created ack.
//this helps to tread addAck and createAck cases equally.
- ackOpCtx.addMessageContext(requestAppMsg);
+ //ackOpCtx.addMessageContext(requestAppMsg);
ackMsgCtx.setOperationContext(ackOpCtx);
ackOpCtx.addMessageContext(ackMsgCtx);
- addAckMessage(ackRMMsgCtx);
+ Sequence reqSequence = (Sequence) applicationRMMsgCtx
+ .getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
+ if (reqSequence == null)
+ throw new SandeshaException(
+ "Sequence part of application message is null");
+
+ String sequenceId = reqSequence.getIdentifier().getIdentifier();
+
+ addAckMessage(ackRMMsgCtx, sequenceId);
return ackRMMsgCtx;
} catch (AxisFault e) {
throw new SandeshaException(e.getMessage());
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java?rev=292160&r1=292159&r2=292160&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/Sender.java Wed Sep 28 \
03:47:35 2005 @@ -19,6 +19,11 @@
import java.util.Collection;
import java.util.Iterator;
+import javax.xml.stream.FactoryConfigurationError;
+import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
+import javax.xml.stream.XMLStreamWriter;
+
import org.apache.axis2.AxisFault;
import org.apache.axis2.context.AbstractContext;
import org.apache.axis2.context.ConfigurationContext;
@@ -45,6 +50,7 @@
public void run () {
while (senderStarted) {
+ System.out.println ("|-|");
try {
if (context==null)
throw new SandeshaException ("Can't continue the Sender. Context is null");
@@ -60,11 +66,25 @@
RetransmitterBean bean = (RetransmitterBean) iter.next();
String key = (String) bean.getKey();
MessageContext msgCtx = SandeshaUtil.getStoredMessageContext(key);
+
try {
+ System.out.println ("SERIALIZATION BEFORE SENDING....");
+ XMLStreamWriter writer = \
XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); + \
msgCtx.getEnvelope().serialize(writer); + } catch (XMLStreamException e2) {
+ // TODO Auto-generated catch block
+ e2.printStackTrace();
+ } catch (FactoryConfigurationError e2) {
+ // TODO Auto-generated catch block
+ e2.printStackTrace();
+ }
+
+ try {
new AxisEngine(context).send(msgCtx);
} catch (AxisFault e1) {
e1.printStackTrace();
}
+
}
try {
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java?rev=292160&r1=292159&r2=292160&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java \
(original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/ServerOutHandler.java \
Wed Sep 28 03:47:35 2005 @@ -18,7 +18,9 @@
package org.apache.sandesha2.handlers;
import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import org.apache.axis2.AxisFault;
@@ -67,6 +69,12 @@
ConfigurationContext ctx = msgCtx.getSystemContext();
SandeshaUtil.startSenderIfStopped(ctx);
+
+
+
+
+
+
//getting rm message
RMMsgContext rmMsgCtx;
try {
@@ -87,7 +95,7 @@
AbstractContext context = rmMsgCtx.getContext();
if (context == null)
throw new SandeshaException("Context is null");
-
+
Sequence sequence = (Sequence) requestRMMsgCtx
.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
if (sequence == null)
@@ -131,50 +139,86 @@
if (!validResponse) { //TODO either change MsgReceiver or move
if (Constants.WSA.NS_URI_ANONYMOUS.equals(acksToEPR
.getAddress())) {
- RMMsgCreator.addAckMessage(rmMsgCtx);
+ Sequence reqSequence = (Sequence) requestRMMsgCtx
+ .getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
+ if (reqSequence == null)
+ throw new SandeshaException(
+ "Sequence part of application message is null");
+
+ String sequenceId = reqSequence.getIdentifier()
+ .getIdentifier();
+
+ RMMsgCreator.addAckMessage(rmMsgCtx, sequenceId);
}
} else {
//valid response
RMMsgContext ackRMMsgContext = RMMsgCreator
- .createAckMessage(rmMsgCtx);
- MessageContext ackMsgContext = ackRMMsgContext.getMessageContext();
- ackMsgContext.setServiceGroupContext(msgCtx.getServiceGroupContext());
- ackMsgContext.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
+ .createAckMessage(requestRMMsgCtx);
+ MessageContext ackMsgContext = ackRMMsgContext
+ .getMessageContext();
+ ackMsgContext.setServiceGroupContext(msgCtx
+ .getServiceGroupContext());
+ ackMsgContext.setServiceGroupContextId(msgCtx
+ .getServiceGroupContextId());
ackMsgContext.setServiceContext(msgCtx.getServiceContext());
- ackMsgContext.setServiceContextID(msgCtx.getServiceContextID());
- OperationContext ackOpContext = new OperationContext \
(ackMsgContext.getOperationDescription()); \
+ ackMsgContext.setServiceContextID(msgCtx + .getServiceContextID());
+
+ //TODO set a suitable operation description
+ OperationContext ackOpContext = new OperationContext(
+ reqMsgCtx.getOperationDescription());
+
ackOpContext.addMessageContext(ackMsgContext);
ackMsgContext.setOperationContext(ackOpContext);
- RMMsgContext newRMMsgCtx = SandeshaUtil
- .copyRMMessageContext(rmMsgCtx);
+ RMMsgContext newRMMsgCtx = SandeshaUtil.deepCopy(rmMsgCtx);
MessageContext newMsgCtx = newRMMsgCtx.getMessageContext();
rmMsgCtx.setSOAPEnvelop(ackRMMsgContext.getSOAPEnvelope());
//setting contexts
- newMsgCtx.setServiceGroupContext(msgCtx.getServiceGroupContext());
- newMsgCtx.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
+ newMsgCtx.setServiceGroupContext(msgCtx
+ .getServiceGroupContext());
+ newMsgCtx.setServiceGroupContextId(msgCtx
+ .getServiceGroupContextId());
newMsgCtx.setServiceContext(msgCtx.getServiceContext());
newMsgCtx.setServiceContextID(msgCtx.getServiceContextID());
- OperationContext newOpContext = new OperationContext \
(newMsgCtx.getOperationDescription());
- newOpContext.addMessageContext(newMsgCtx);
- newMsgCtx.setOperationContext(newOpContext);
-
+ OperationContext newOpContext = new OperationContext(
+ newMsgCtx.getOperationDescription());
+ newOpContext.addMessageContext(newMsgCtx);
+ newMsgCtx.setOperationContext(newOpContext);
+
//processing the response
processResponseMessage(newRMMsgCtx, requestRMMsgCtx);
+ //msgCtx.setTo(null);
+ msgCtx.setPausedTrue(getName());
+
+
}
}
} catch (SandeshaException e) {
throw new AxisFault(e.getMessage());
}
+
+ // serializing
+ try {
+ SOAPEnvelope env11 = msgCtx.getEnvelope();
+ XMLStreamWriter writer = \
XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); \
+ env11.serialize(writer); + } catch (XMLStreamException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ } catch (FactoryConfigurationError e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
}
- private void processResponseMessage(RMMsgContext msg, RMMsgContext reqMsg)
+ private void processResponseMessage(RMMsgContext rmMsg, RMMsgContext reqRMMsg)
throws SandeshaException {
- if (msg == null || reqMsg == null)
+ if (rmMsg == null || reqRMMsg == null)
throw new SandeshaException("Message or reques message is null");
- Sequence sequence = (Sequence) reqMsg
+ Sequence sequence = (Sequence) reqRMMsg
.getMessagePart(Constants.MESSAGE_PART_SEQUENCE);
if (sequence == null)
throw new SandeshaException("Sequence part is null");
@@ -183,7 +227,7 @@
if (incomingSeqId == null || incomingSeqId == "")
throw new SandeshaException("Invalid seqence Id");
- AbstractContext context = msg.getContext();
+ AbstractContext context = rmMsg.getContext();
if (context == null)
throw new SandeshaException("Context is null");
@@ -193,7 +237,7 @@
SequencePropertyBean toBean = mgr.retrieve(incomingSeqId,
Constants.SEQ_PROPERTY_TO_EPR);
SequencePropertyBean replyToBean = mgr.retrieve(incomingSeqId,
- Constants.SEQ_PROPERTY_ACKS_TO_EPR);
+ Constants.SEQ_PROPERTY_REPLY_TO_EPR);
SequencePropertyBean outSequenceBean = mgr.retrieve(incomingSeqId,
Constants.SEQ_PROPERTY_OUT_SEQUENCE_ID);
@@ -213,27 +257,58 @@
|| incomingReplyTo.getAddress() == "")
throw new SandeshaException("ReplyTo is not set correctly");
- msg.setTo(incomingReplyTo);
- msg.setReplyTo(incomingTo);
+ rmMsg.setTo(incomingReplyTo);
+ rmMsg.setReplyTo(incomingTo);
if (outSequenceBean == null || outSequenceBean.getValue() == null) {
RetransmitterBeanMgr retransmitterMgr = AbstractBeanMgrFactory
.getInstance(context).getRetransmitterBeanMgr();
- msg.getMessageContext().setPausedTrue(getName());
+ rmMsg.getMessageContext().setPausedTrue(getName());
RetransmitterBean appMsgEntry = new RetransmitterBean();
- String key = SandeshaUtil.storeMessageContext(msg
+
+ RMMsgContext copiedRMMsgCtx = SandeshaUtil.deepCopy(rmMsg);
+ MessageContext copiedMsgCtx = copiedRMMsgCtx.getMessageContext();
+ MessageContext msg = rmMsg.getMessageContext();
+ //msg.setResponseWritten(false);
+ //msg.setOutPutWritten(true);
+ //msg.getOperationContext().setProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN,org.apache.axis2.Constants.VALUE_TRUE);
+
+
+ Object val = msg.getOperationContext().getProperty \
(org.apache.axis2.Constants.RESPONSE_WRITTEN); \
+ copiedMsgCtx.setServiceGroupContext(msg + .getServiceGroupContext());
+ copiedMsgCtx.setServiceGroupContextId(msg
+ .getServiceGroupContextId());
+ copiedMsgCtx.setServiceContext(msg
+ .getServiceContext());
+ copiedMsgCtx.setServiceContextID(msg
+ .getServiceContextID());
+ copiedMsgCtx.setOperationContext(msg.getOperationContext());
+
+ //TODO IF - may not work when op context is changed
+ try {
+ msg.getOperationContext().addMessageContext(copiedMsgCtx);
+ } catch (AxisFault e) {
+ e.printStackTrace();
+ }
+
+ String key = SandeshaUtil.storeMessageContext(rmMsg
.getMessageContext());
appMsgEntry.setKey(key);
appMsgEntry.setLastSentTime(0);
appMsgEntry.setTempSequenceId(incomingSeqId);
appMsgEntry.setSend(false);
- appMsgEntry.setMessageId(msg.getMessageId());
+ appMsgEntry.setMessageId(rmMsg.getMessageId());
+
retransmitterMgr.insert(appMsgEntry);
- addCreateSequenceMessage(msg);
+ addCreateSequenceMessage(rmMsg);
+
+
+
} else {
//Sequence id is present
//set sequence part
@@ -245,8 +320,8 @@
public void addCreateSequenceMessage(RMMsgContext applicationRMMsg)
throws SandeshaException {
MessageContext applicationMsg = applicationRMMsg.getMessageContext();
- if (applicationMsg==null)
- throw new SandeshaException ("Message context is null");
+ if (applicationMsg == null)
+ throw new SandeshaException("Message context is null");
RMMsgContext createSeqRMMessage = RMMsgCreator
.createCreateSeqMsg(applicationRMMsg);
MessageContext createSeqMsg = createSeqRMMessage.getMessageContext();
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2 \
/msgprocessors/ApplicationMsgProcessor.java?rev=292160&r1=292159&r2=292160&view=diff \
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java \
(original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java \
Wed Sep 28 03:47:35 2005 @@ -29,6 +29,7 @@
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.soap.SOAPEnvelope;
import org.apache.sandesha2.Constants;
@@ -36,7 +37,9 @@
import org.apache.sandesha2.MsgValidator;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.RMMsgCreator;
+import org.apache.sandesha2.SOAPAbstractFactory;
import org.apache.sandesha2.SandeshaException;
+import org.apache.sandesha2.msgreceivers.RMMessageReceiver;
import org.apache.sandesha2.storage.AbstractBeanMgrFactory;
import org.apache.sandesha2.storage.beanmanagers.NextMsgBeanMgr;
import org.apache.sandesha2.storage.beanmanagers.SequencePropertyBeanMgr;
@@ -59,6 +62,10 @@
System.out.println("Application msg processor called");
+ MessageContext msgCtx = rmMsgCtx.getMessageContext();
+ if (msgCtx==null)
+ throw new SandeshaException ("Message context is null");
+
if (rmMsgCtx.getProperty(Constants.APPLICATION_PROCESSING_DONE) != null
&& rmMsgCtx.getProperty(Constants.APPLICATION_PROCESSING_DONE)
.equals("true")) {
@@ -123,28 +130,72 @@
if (acksToStr.equals(Constants.WSA.NS_URI_ANONYMOUS)) {
- //Adding sync ack
- //set acknowledgement
- //TODO stop adding acks to every message. Add acks only when
- // needed.
-
-
-// try {
-// MessageContext responseMsgCtx = \
rmMsgCtx.getMessageContext().getOperationContext().getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT);
-// if (responseMsgCtx==null){
-// responseMsgCtx = new MessageContext \
(configCtx,rmMsgCtx.getMessageContext().getTransportIn(),rmMsgCtx.getMessageContext().getTransportOut());
-// rmMsgCtx.getMessageContext().getOperationContext().addMessageContext(responseMsgCtx);
-//
-// //TODO following line is due to a bug in Axis2. Remove this when it is fixed.
-// responseMsgCtx.setOperationContext(rmMsgCtx.getMessageContext().getOperationContext());
-// }
-//
-// RMMsgContext responseRMMsg = new RMMsgContext (responseMsgCtx);
-// RMMsgCreator.addAckMessage(responseRMMsg);
-//
-// } catch (AxisFault af) {
-// throw new SandeshaException (af.getMessage());
-// }
+// //Adding sync ack
+// //set acknowledgement
+// //TODO stop adding acks to every message. Add acks only when
+// // needed.
+//
+//
+//// try {
+//// MessageContext responseMsgCtx = \
rmMsgCtx.getMessageContext().getOperationContext().getMessageContext(WSDLConstants.MESSAGE_LABEL_OUT);
+//// if (responseMsgCtx==null){
+//// responseMsgCtx = new MessageContext \
(configCtx,rmMsgCtx.getMessageContext().getTransportIn(),rmMsgCtx.getMessageContext().getTransportOut());
+//// rmMsgCtx.getMessageContext().getOperationContext().addMessageContext(responseMsgCtx);
+////
+//// //TODO following line is due to a bug in Axis2. Remove this when it is \
fixed. +//// responseMsgCtx.setOperationContext(rmMsgCtx.getMessageContext().getOperationContext());
+//// }
+////
+//// RMMsgContext responseRMMsg = new RMMsgContext (responseMsgCtx);
+//// RMMsgCreator.addAckMessage(responseRMMsg);
+////
+//// } catch (AxisFault af) {
+//// throw new SandeshaException (af.getMessage());
+//// }
+
+
+ RMMsgContext ackRMMsgCtx = SandeshaUtil.deepCopy(rmMsgCtx);
+ MessageContext ackMsgCtx = ackRMMsgCtx.getMessageContext();
+ ackMsgCtx.setServiceGroupContext(msgCtx
+ .getServiceGroupContext());
+ ackMsgCtx.setServiceGroupContextId(msgCtx
+ .getServiceGroupContextId());
+ ackMsgCtx.setServiceContext(msgCtx.getServiceContext());
+ ackMsgCtx.setServiceContextID(msgCtx
+ .getServiceContextID());
+
+ //TODO set a suitable operation description
+ OperationContext ackOpContext = new OperationContext(
+ msgCtx.getOperationDescription());
+
+ try {
+ ackOpContext.addMessageContext(ackMsgCtx);
+ } catch (AxisFault e2) {
+ throw new SandeshaException (e2.getMessage());
+ }
+ ackMsgCtx.setOperationContext(ackOpContext);
+
+ //Set new envelope
+ SOAPEnvelope envelope = \
SOAPAbstractFactory.getSOAPFactory(Constants.DEFAULT_SOAP_VERSION).getDefaultEnvelope();
+ try {
+ ackMsgCtx.setEnvelope(envelope);
+ } catch (AxisFault e3) {
+ throw new SandeshaException (e3.getMessage());
+ }
+
+ //FIXME set acksTo instead of ReplyTo
+ ackMsgCtx.setTo(msgCtx.getReplyTo());
+ ackMsgCtx.setReplyTo(msgCtx.getTo());
+ RMMsgCreator.addAckMessage(ackRMMsgCtx,sequenceId);
+
+
+ AxisEngine engine = new AxisEngine(
+ ackRMMsgCtx.getMessageContext().getSystemContext());
+ try {
+ engine.send(ackRMMsgCtx.getMessageContext());
+ } catch (AxisFault e1) {
+ throw new SandeshaException (e1.getMessage());
+ }
} else {
//TODO Add async Ack
@@ -207,6 +258,8 @@
"true");
System.out.println("paused");
+
+
} catch (Exception ex) {
throw new SandeshaException(ex.getMessage());
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java?rev=292160&r1=292159&r2=292160&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java \
(original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java Wed \
Sep 28 03:47:35 2005 @@ -22,14 +22,19 @@
import java.util.StringTokenizer;
import org.apache.axis2.AxisFault;
+import org.apache.axis2.addressing.AddressingConstants;
import org.apache.axis2.addressing.MessageInformationHeaders;
+import org.apache.axis2.addressing.miheaders.RelatesTo;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.description.TransportInDescription;
import org.apache.axis2.description.TransportOutDescription;
+import org.apache.axis2.engine.AxisEngine;
import org.apache.axis2.om.impl.MIMEOutputUtils;
+import org.apache.axis2.transport.http.HTTPConstants;
import org.apache.axis2.util.UUIDGenerator;
+import org.apache.sandesha2.Constants;
import org.apache.sandesha2.RMMsgContext;
import org.apache.sandesha2.SandeshaException;
import org.apache.sandesha2.Sender;
@@ -44,8 +49,9 @@
public class SandeshaUtil {
private static Hashtable storedMsgContexts = new Hashtable();
- private static Sender sender = new Sender ();
-
+
+ private static Sender sender = new Sender();
+
public static String getUUID() {
String uuid = "uuid:" + UUIDGenerator.getUUID();
return uuid;
@@ -151,70 +157,97 @@
// getAckRangeArray( msgList);
//
// }
-
- public static MessageContext copyMessageContext (MessageContext msgCtx) throws \
SandeshaException {
- ConfigurationContext configCtx = msgCtx.getSystemContext();
- TransportInDescription transportIn = msgCtx.getTransportIn();
- TransportOutDescription transportOut = msgCtx.getTransportOut();
- MessageInformationHeaders msgInfoHeaders = msgCtx.getMessageInformationHeaders();
-
+
+ public static MessageContext deepCopy(MessageContext msgCtx)
+ throws SandeshaException {
+
try {
- MessageContext newMessageContext = new MessageContext \
(configCtx,transportIn,transportOut); + MessageContext newMessageContext = \
shallowCopy(msgCtx); newMessageContext.setDoingMTOM(msgCtx.isDoingMTOM());
newMessageContext.setDoingREST(msgCtx.isDoingREST());
- newMessageContext.setEnvelope(msgCtx.getEnvelope());
- newMessageContext.setFaultTo(msgCtx.getFaultTo());
- newMessageContext.setFrom(msgCtx.getFrom());
- //newMessageContext.setInFaultFlow(msgCtx.geti);
newMessageContext.setMessageID(getUUID());
- newMessageContext.setMessageInformationHeaders(msgCtx.getMessageInformationHeaders());
- //newMessageContext.setOperationContext(msgCtx.getOperationContext());
- newMessageContext.setOperationDescription(msgCtx.getOperationDescription());
newMessageContext.setOutPutWritten(msgCtx.isOutPutWritten());
newMessageContext.setParent(msgCtx.getParent());
newMessageContext.setPausedPhaseName(msgCtx.getPausedPhaseName());
- newMessageContext.setProcessingFault(msgCtx.isProcessingFault() );
- newMessageContext.setRelatesTo(msgCtx.getRelatesTo());
+ newMessageContext.setProcessingFault(msgCtx.isProcessingFault());
newMessageContext.setResponseWritten(msgCtx.isResponseWritten());
newMessageContext.setRestThroughPOST(msgCtx.isRestThroughPOST());
newMessageContext.setServerSide(msgCtx.isServerSide());
- //newMessageContext.setServiceContext(msgCtx.getServiceContext());
- //newMessageContext.setServiceContextID(msgCtx.getServiceContextID());
- newMessageContext.setServiceDescription(msgCtx.getServiceDescription());
- //newMessageContext.setServiceGroupContext(msgCtx.getServiceGroupContext());
- //newMessageContext.setServiceGroupContextId(msgCtx.getServiceGroupContextId());
- if (msgCtx.getServiceGroupDescription()!=null)
- newMessageContext.setServiceGroupDescription(msgCtx.getServiceGroupDescription());
+ newMessageContext.setOperationDescription(msgCtx
+ .getOperationDescription());
+
+ newMessageContext.setProperty(MessageContext.TRANSPORT_OUT, msgCtx
+ .getProperty(MessageContext.TRANSPORT_OUT));
+ newMessageContext.setProperty(HTTPConstants.HTTPOutTransportInfo,
+ msgCtx.getProperty(HTTPConstants.HTTPOutTransportInfo));
+
+ //Setting the charater set encoding
+ newMessageContext
+ .setProperty(MessageContext.CHARACTER_SET_ENCODING, msgCtx
+ .getProperty(MessageContext.CHARACTER_SET_ENCODING));
+
+ if (msgCtx.getEnvelope() != null)
+ newMessageContext.setEnvelope(msgCtx.getEnvelope());
+
+ //copying transport info. TODO remove http specific ness.
+ newMessageContext.setProperty(MessageContext.TRANSPORT_OUT, msgCtx
+ .getProperty(MessageContext.TRANSPORT_OUT));
+ newMessageContext.setProperty(HTTPConstants.HTTPOutTransportInfo,
+ msgCtx.getProperty(HTTPConstants.HTTPOutTransportInfo));
+ return newMessageContext;
+
+ } catch (AxisFault e) {
+ throw new SandeshaException("Cannot copy message");
+ }
+ }
+
+ public static MessageContext shallowCopy(MessageContext msgCtx)
+ throws SandeshaException {
+ ConfigurationContext configCtx = msgCtx.getSystemContext();
+ TransportInDescription transportIn = msgCtx.getTransportIn();
+ TransportOutDescription transportOut = msgCtx.getTransportOut();
+ MessageInformationHeaders msgInfoHeaders1 = new MessageInformationHeaders();
+ msgInfoHeaders1.setTo(msgCtx.getTo());
+ msgInfoHeaders1.setFrom(msgCtx.getFrom());
+ msgInfoHeaders1.setReplyTo(msgCtx.getReplyTo());
+ msgInfoHeaders1.setFaultTo(msgCtx.getFaultTo());
+ msgInfoHeaders1.setMessageId(getUUID());
+
+ try {
+ MessageContext newMessageContext = new MessageContext(configCtx,
+ transportIn, transportOut);
+ newMessageContext.setMessageInformationHeaders(msgInfoHeaders1);
+ newMessageContext.setServiceDescription(msgCtx
+ .getServiceDescription());
+ if (msgCtx.getServiceGroupDescription() != null)
+ newMessageContext.setServiceGroupDescription(msgCtx
+ .getServiceGroupDescription());
+
newMessageContext.setSoapAction(msgCtx.getSoapAction());
- newMessageContext.setTo(msgCtx.getTo());
newMessageContext.setWSAAction(msgCtx.getWSAAction());
-
- if (msgCtx.getEnvelope()!=null)
- newMessageContext.setEnvelope(msgCtx.getEnvelope());
-
- //newMessageContext.setServiceContext(msgCtx.getServiceContext());
- //newMessageContext.setse
-
+
return newMessageContext;
-
+
} catch (AxisFault e) {
- throw new SandeshaException ("Cannot copy message");
+ throw new SandeshaException("Cannot copy message");
}
+
}
-
- public static RMMsgContext copyRMMessageContext (RMMsgContext rmMsgContext) throws \
SandeshaException{ +
+ public static RMMsgContext deepCopy(RMMsgContext rmMsgContext)
+ throws SandeshaException {
MessageContext msgCtx = null;
- if (rmMsgContext.getMessageContext()!=null)
- msgCtx = copyMessageContext(rmMsgContext.getMessageContext());
-
- RMMsgContext newRMMsgCtx = new RMMsgContext ();
- if (msgCtx!=null)
- newRMMsgCtx.setMessageContext(msgCtx);
-
- return newRMMsgCtx;
+ if (rmMsgContext.getMessageContext() != null)
+ msgCtx = deepCopy(rmMsgContext.getMessageContext());
+
+ RMMsgContext newRMMsgCtx = new RMMsgContext();
+ if (msgCtx != null)
+ newRMMsgCtx.setMessageContext(msgCtx);
+
+ return newRMMsgCtx;
}
-
- public static void startSenderIfStopped (ConfigurationContext context) {
+
+ public static void startSenderIfStopped(ConfigurationContext context) {
if (!sender.isSenderStarted()) {
sender.start(context);
}
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java?rev=292160&r1=292159&r2=292160&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java \
(original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/AcknowledgementRange.java \
Wed Sep 28 03:47:35 2005 @@ -19,7 +19,9 @@
import java.util.Iterator;
import javax.xml.namespace.QName;
+import javax.xml.stream.FactoryConfigurationError;
import javax.xml.stream.XMLOutputFactory;
+import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamWriter;
import org.apache.axis2.om.OMAbstractFactory;
@@ -70,10 +72,24 @@
if (ackRangePart == null)
throw new OMException("The passed element is null");
+
+ // serializing
+ try {
+ XMLStreamWriter writer = \
XMLOutputFactory.newInstance().createXMLStreamWriter(System.out); \
+ ackRangePart.serialize(writer); + } catch (XMLStreamException e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ } catch (FactoryConfigurationError e1) {
+ // TODO Auto-generated catch block
+ e1.printStackTrace();
+ }
+
+
OMAttribute lowerAttrib = ackRangePart.getAttribute(new QName(
- Constants.WSRM.LOWER));
+ Constants.WSRM.NS_URI_RM,Constants.WSRM.LOWER));
OMAttribute upperAttrib = ackRangePart.getAttribute(new QName(
- Constants.WSRM.UPPER));
+ Constants.WSRM.NS_URI_RM,Constants.WSRM.UPPER));
if (lowerAttrib == null || upperAttrib == null)
throw new OMException(
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java?rev=292160&r1=292159&r2=292160&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java \
(original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/wsrm/RMElements.java Wed Sep \
28 03:47:35 2005 @@ -67,7 +67,7 @@
Constants.WSRM.SEQUENCE_ACK));
if (sequenceAckElement != null) {
sequenceAcknowledgement = new SequenceAcknowledgement();
- sequence.fromOMElement(envelope.getHeader());
+ sequenceAcknowledgement.fromOMElement(envelope.getHeader());
}
OMElement createSeqElement = envelope.getBody().getFirstChildWithName(
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic