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 ch...@apache.org on 2005/11/22 08:29:19 UTC
svn commit: r348116 - in
/webservices/sandesha/trunk/src/org/apache/sandesha2:
handlers/SandeshaOutHandler.java msgprocessors/AcknowledgementProcessor.java
msgprocessors/ApplicationMsgProcessor.java util/RMMsgCreator.java
util/SandeshaUtil.java
Author: chamikara
Date: Mon Nov 21 23:28:24 2005
New Revision: 348116
URL: http://svn.apache.org/viewcvs?rev=348116&view=rev
Log:
Removed copy methods of SandeshaUtil (shallowCopy, deepCopy). (These were buggy).
Added a new method createNewRelatedMessageContext instead.
Modified:
webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java?rev=348116&r1=348115&r2=348116&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/handlers/SandeshaOutHandler.java Mon Nov 21 23:28:24 2005
@@ -314,44 +314,11 @@
if (rmMsgCtx.getMessageId() == null) {
rmMsgCtx.setMessageId(messageId1);
}
- //OperationContext opCtx = msgCtx.getOperationContext();
- // msgCtx.getSystemContext().registerOperationContext(messageId,
- // opCtx);
if (serverSide) {
- //FIXME - do not copy application messages. Coz u loose
- // properties etc.
- RMMsgContext newRMMsgCtx = SandeshaUtil.deepCopy(rmMsgCtx);
- MessageContext newMsgCtx = newRMMsgCtx.getMessageContext();
-
- //setting contexts
- newMsgCtx.setServiceGroupContext(msgCtx
- .getServiceGroupContext());
- newMsgCtx.setServiceGroupContextId(msgCtx
- .getServiceGroupContextId());
- newMsgCtx.setServiceContext(msgCtx.getServiceContext());
- newMsgCtx.setServiceContextID(msgCtx.getServiceContextID());
- OperationContext newOpContext = new OperationContext(newMsgCtx
- .getAxisOperation());
-
- //if server side add request message
- if (msgCtx.isServerSide()) {
- MessageContext reqMsgCtx = msgCtx.getOperationContext()
- .getMessageContext(
- WSDLConstants.MESSAGE_LABEL_IN_VALUE);
- newOpContext.addMessageContext(reqMsgCtx);
- }
-
- newOpContext.addMessageContext(newMsgCtx);
- newMsgCtx.setOperationContext(newOpContext);
-
- //Thid does not have to be processed again by RMHandlers
- newMsgCtx.setProperty(Constants.APPLICATION_PROCESSING_DONE,
- "true");
-
//processing the response
- processResponseMessage(newRMMsgCtx, tempSequenceId,
+ processResponseMessage(rmMsgCtx, tempSequenceId,
messageNumber);
MessageContext reqMsgCtx = msgCtx
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java?rev=348116&r1=348115&r2=348116&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/AcknowledgementProcessor.java Mon Nov 21 23:28:24 2005
@@ -45,10 +45,6 @@
public void processMessage(RMMsgContext rmMsgCtx) throws SandeshaException {
- // boolean b = true;
- // if (b)
- // return;
-
SequenceAcknowledgement sequenceAck = (SequenceAcknowledgement) rmMsgCtx
.getMessagePart(Constants.MessageParts.SEQ_ACKNOWLEDGEMENT);
if (sequenceAck == null)
@@ -152,9 +148,6 @@
//stopping the progress of the message further.
rmMsgCtx.getMessageContext().setPausedTrue(
new QName(Constants.IN_HANDLER_NAME));
-
- //return;
- //}
}
int i = 1;
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=348116&r1=348115&r2=348116&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/msgprocessors/ApplicationMsgProcessor.java Mon Nov 21 23:28:24 2005
@@ -51,6 +51,7 @@
import org.apache.sandesha2.storage.beans.RetransmitterBean;
import org.apache.sandesha2.storage.beans.SequencePropertyBean;
import org.apache.sandesha2.storage.beans.StorageMapBean;
+import org.apache.sandesha2.util.MsgInitializer;
import org.apache.sandesha2.util.RMMsgCreator;
import org.apache.sandesha2.util.SOAPAbstractFactory;
import org.apache.sandesha2.util.SandeshaUtil;
@@ -300,51 +301,30 @@
return;
}
}
-
- AxisConfiguration axisConfig = configCtx.getAxisConfiguration();
- AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
- AxisService service = new AxisService(new QName("RMClientService")); // This
- // is a
- // dummy
- // service.
- ServiceGroupContext serviceGroupContext = new ServiceGroupContext(
- configCtx, serviceGroup);
- ServiceContext serviceContext = new ServiceContext(service,
- serviceGroupContext);
-
- RMMsgContext ackRMMsgCtx = SandeshaUtil.deepCopy(rmMsgCtx);
- MessageContext ackMsgCtx = ackRMMsgCtx.getMessageContext();
-
- ackMsgCtx.setMessageID(SandeshaUtil.getUUID());
-
- ackMsgCtx.setAxisServiceGroup(serviceGroup);
- ackMsgCtx.setServiceGroupContext(serviceGroupContext);
- ackMsgCtx.setAxisService(service);
- ackMsgCtx.setServiceContext(serviceContext);
+ AxisOperation ackOperation = null;
try {
- AxisOperation ackOperation = AxisOperationFactory
+ ackOperation = AxisOperationFactory
.getOperetionDescription(AxisOperationFactory.MEP_URI_IN_ONLY);
+ } catch (AxisFault e) {
+ throw new SandeshaException("Could not create the Operation");
+ }
- AxisOperation rmMsgOperation = rmMsgCtx.getMessageContext()
- .getAxisOperation();
- if (rmMsgOperation != null) {
- ArrayList outFlow = rmMsgOperation.getPhasesOutFlow();
- if (outFlow != null) {
- ackOperation.setPhasesOutFlow(outFlow);
- ackOperation.setPhasesOutFaultFlow(outFlow);
- }
+ AxisOperation rmMsgOperation = rmMsgCtx.getMessageContext()
+ .getAxisOperation();
+ if (rmMsgOperation != null) {
+ ArrayList outFlow = rmMsgOperation.getPhasesOutFlow();
+ if (outFlow != null) {
+ ackOperation.setPhasesOutFlow(outFlow);
+ ackOperation.setPhasesOutFaultFlow(outFlow);
}
+ }
- OperationContext ackOpContext = new OperationContext(ackOperation);
- ackMsgCtx.setAxisOperation(ackOperation);
- ackMsgCtx.setOperationContext(ackOpContext);
- ackOpContext.addMessageContext(ackMsgCtx);
- ackMsgCtx.setOperationContext(ackOpContext);
+ MessageContext ackMsgCtx = SandeshaUtil.createNewRelatedMessageContext(
+ rmMsgCtx, ackOperation);
+ RMMsgContext ackRMMsgCtx = MsgInitializer.initializeMessage(ackMsgCtx);
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
- }
+ ackMsgCtx.setMessageID(SandeshaUtil.getUUID());
//Set new envelope
SOAPEnvelope envelope = factory.getDefaultEnvelope();
@@ -357,9 +337,6 @@
ackMsgCtx.setTo(acksTo);
ackMsgCtx.setReplyTo(msgCtx.getTo());
RMMsgCreator.addAckMessage(ackRMMsgCtx, sequenceId);
-
- // Object obj =
- // rmMsgCtx.getMessageContext().getOperationContext().getProperty(org.apache.axis2.Constants.RESPONSE_WRITTEN);
if (Constants.WSA.NS_URI_ANONYMOUS.equals(acksTo.getAddress())) {
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java?rev=348116&r1=348115&r2=348116&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java Mon Nov 21 23:28:24 2005
@@ -91,69 +91,42 @@
try {
//creating by copying common contents. (this will not set contexts
// except for configCtx).
- createSeqmsgContext = SandeshaUtil
- .shallowCopy(applicationMsgContext);
- } catch (SandeshaException e) {
+ AxisOperation createSequenceOperation = AxisOperationFactory
+ .getAxisOperation(AxisOperation.MEP_CONSTANT_OUT_IN);
+
+ createSeqmsgContext = SandeshaUtil.createNewRelatedMessageContext(
+ applicationRMMsg, createSequenceOperation);
+ OperationContext createSeqOpCtx = createSeqmsgContext
+ .getOperationContext();
+ String createSeqMsgId = SandeshaUtil.getUUID();
+ createSeqmsgContext.setMessageID(createSeqMsgId);
+ context.registerOperationContext(createSeqMsgId, createSeqOpCtx);
+
+ } catch (AxisFault e) {
throw new SandeshaException(e.getMessage());
}
- //setting contexts
- createSeqmsgContext.setServiceGroupContext(applicationMsgContext
- .getServiceGroupContext());
- createSeqmsgContext.setServiceGroupContextId(applicationMsgContext
- .getServiceGroupContextId());
- createSeqmsgContext.setServiceContext(applicationMsgContext
- .getServiceContext());
- createSeqmsgContext.setServiceContextID(applicationMsgContext
- .getServiceContextID());
-
setUpMessage(createSeqmsgContext);
- String createSeqMsgId = SandeshaUtil.getUUID();
- try {
- AxisOperation appMsgOperationDesc = applicationMsgContext
- .getAxisOperation();
- AxisOperation createSeqOperationDesc = AxisOperationFactory
- .getOperetionDescription(AxisOperationFactory.MEP_URI_OUT_IN);
-
- createSeqOperationDesc
- .setName(new QName("CreateSequenceOperation"));
- if (appMsgOperationDesc != null) {
- createSeqOperationDesc.setPhasesOutFlow(appMsgOperationDesc
- .getPhasesOutFlow());
- createSeqOperationDesc
- .setPhasesOutFaultFlow(appMsgOperationDesc
- .getPhasesOutFaultFlow());
- createSeqOperationDesc.setPhasesInFaultFlow(appMsgOperationDesc
- .getPhasesInFaultFlow());
- createSeqOperationDesc
- .setRemainingPhasesInFlow(appMsgOperationDesc
- .getRemainingPhasesInFlow());
- }
+ AxisOperation appMsgOperationDesc = applicationMsgContext
+ .getAxisOperation();
- createSeqmsgContext.setAxisOperation(createSeqOperationDesc);
- //TODO set a suitable ope. description
- OperationContext createSeqOpContext = new OperationContext(
- createSeqmsgContext.getAxisOperation());
-
- createSeqmsgContext.setOperationContext(createSeqOpContext);
- createSeqOpContext.addMessageContext(createSeqmsgContext);
- //registering opearion context
- context
- .registerOperationContext(createSeqMsgId,
- createSeqOpContext);
-
- //Setting a new SOAP Envelop.
-
- SOAPEnvelope envelope = factory.getDefaultEnvelope();
-
- createSeqmsgContext.setEnvelope(envelope);
- // createSeqOpContext.addMessageContext(createSeqmsgContext);
- // createSeqmsgContext.setOperationContext(createSeqOpContext);
- } catch (AxisFault e2) {
- throw new SandeshaException(e2.getMessage());
+ AxisOperation createSeqOperation = createSeqmsgContext
+ .getAxisOperation();
+ createSeqOperation.setName(new QName("CreateSequenceOperation"));
+ if (appMsgOperationDesc != null) {
+ createSeqOperation.setPhasesOutFlow(appMsgOperationDesc
+ .getPhasesOutFlow());
+ createSeqOperation.setPhasesOutFaultFlow(appMsgOperationDesc
+ .getPhasesOutFaultFlow());
+ createSeqOperation.setPhasesInFaultFlow(appMsgOperationDesc
+ .getPhasesInFaultFlow());
+ createSeqOperation.setRemainingPhasesInFlow(appMsgOperationDesc
+ .getRemainingPhasesInFlow());
}
+ createSeqmsgContext.setAxisOperation(createSeqOperation);
+
createSeqmsgContext.setTo(applicationRMMsg.getTo());
createSeqmsgContext.setReplyTo(applicationRMMsg.getReplyTo());
@@ -189,14 +162,6 @@
EndpointReference replyToEPR = null;
EndpointReference acksToEPR = null;
- //AcksTo value is replyto value (if set). Otherwise anonymous.
- // if (replyToBean==null || replyToBean.getValue()==null){
- // if (acksTo==null)
- // acksToEPR = new EndpointReference (Constants.WSA.NS_URI_ANONYMOUS);
- // }else {
- // acksToEPR = (EndpointReference) replyToBean.getValue();
- // }
-
if (acksTo == null || "".equals(acksTo))
acksTo = Constants.WSA.NS_URI_ANONYMOUS;
@@ -227,16 +192,6 @@
createSeqRMMsg.setAction(Constants.WSRM.Actions.ACTION_CREATE_SEQUENCE);
createSeqRMMsg
.setSOAPAction(Constants.WSRM.Actions.SOAP_ACTION_CREATE_SEQUENCE);
- createSeqRMMsg.setMessageId(createSeqMsgId);
-
- MessageContext createSeqMsg = createSeqRMMsg.getMessageContext();
- MessageContext applicationMsg = applicationRMMsg.getMessageContext();
- createSeqMsg.setServiceGroupContext(applicationMsg
- .getServiceGroupContext());
- createSeqMsg.setServiceGroupContextId(applicationMsg
- .getServiceGroupContextId());
- createSeqMsg.setServiceContext(applicationMsg.getServiceContext());
- createSeqMsg.setServiceContextID(applicationMsg.getServiceContextID());
return createSeqRMMsg;
}
@@ -249,10 +204,24 @@
if (referenceMessage == null)
throw new SandeshaException("MessageContext is null");
- RMMsgContext terminateRMMessage = SandeshaUtil
- .shallowCopy(referenceRMMessage);
- MessageContext terminateMessage = terminateRMMessage
- .getMessageContext();
+ AxisOperation terminateOperation = null;
+
+ try {
+ terminateOperation = AxisOperationFactory
+ .getAxisOperation(AxisOperationFactory.MEP_CONSTANT_OUT_ONLY);
+ } catch (AxisFault e1) {
+ throw new SandeshaException(e1.getMessage());
+ }
+
+ if (terminateOperation == null)
+ throw new SandeshaException("Terminate Operation was null");
+
+ MessageContext terminateMessage = SandeshaUtil
+ .createNewRelatedMessageContext(referenceRMMessage,
+ terminateOperation);
+ RMMsgContext terminateRMMessage = MsgInitializer
+ .initializeMessage(terminateMessage);
+
if (terminateMessage == null)
throw new SandeshaException("MessageContext is null");
@@ -269,44 +238,14 @@
if (configCtx == null)
throw new SandeshaException("Configuration Context is null");
- AxisConfiguration axisConfig = configCtx.getAxisConfiguration();
- AxisServiceGroup serviceGroup = new AxisServiceGroup(axisConfig);
- AxisService service = new AxisService(new QName("RMClientService")); // This
- // is a
- // dummy
- // service.
- ServiceGroupContext serviceGroupContext = new ServiceGroupContext(
- configCtx, serviceGroup);
- ServiceContext serviceContext = new ServiceContext(service,
- serviceGroupContext);
-
- terminateMessage.setAxisServiceGroup(serviceGroup);
- terminateMessage.setServiceGroupContext(serviceGroupContext);
- terminateMessage.setAxisService(service);
- terminateMessage.setServiceContext(serviceContext);
-
- try {
- AxisOperation terminateOperaiton = AxisOperationFactory
- .getOperetionDescription(AxisOperationFactory.MEP_URI_IN_ONLY);
- AxisOperation referenceMsgOperation = referenceMessage
- .getAxisOperation();
- if (referenceMsgOperation != null) {
- ArrayList outPhases = referenceMsgOperation.getPhasesOutFlow();
- if (outPhases != null) {
- terminateOperaiton.setPhasesOutFlow(outPhases);
- terminateOperaiton.setPhasesOutFaultFlow(outPhases);
- }
+ AxisOperation referenceMsgOperation = referenceMessage
+ .getAxisOperation();
+ if (referenceMsgOperation != null) {
+ ArrayList outPhases = referenceMsgOperation.getPhasesOutFlow();
+ if (outPhases != null) {
+ terminateOperation.setPhasesOutFlow(outPhases);
+ terminateOperation.setPhasesOutFaultFlow(outPhases);
}
-
- OperationContext terminateOpContext = new OperationContext(
- terminateOperaiton);
- terminateMessage.setAxisOperation(terminateOperaiton);
- terminateMessage.setOperationContext(terminateOpContext);
- terminateOpContext.addMessageContext(terminateMessage);
- terminateMessage.setOperationContext(terminateOpContext);
-
- } catch (AxisFault e) {
- throw new SandeshaException(e.getMessage());
}
SOAPEnvelope envelope = factory.getDefaultEnvelope();
@@ -436,27 +375,17 @@
try {
MessageContext applicationMsgCtx = applicationRMMsgCtx
.getMessageContext();
- MessageContext ackMsgCtx = SandeshaUtil
- .shallowCopy(applicationMsgCtx);
- ackMsgCtx.setServiceGroupContext(applicationMsgCtx
- .getServiceGroupContext());
- ackMsgCtx.setServiceGroupContextId(applicationMsgCtx
- .getServiceGroupContextId());
- ackMsgCtx.setServiceContext(applicationMsgCtx.getServiceContext());
- ackMsgCtx.setServiceContextID(applicationMsgCtx
- .getServiceContextID());
-
- RMMsgContext ackRMMsgCtx = new RMMsgContext(ackMsgCtx);
-
- //TODO set a suitable description
- OperationContext ackOpCtx = new OperationContext(applicationMsgCtx
- .getAxisOperation());
- ackMsgCtx.setOperationContext(ackOpCtx);
+ AxisOperation ackOperation = AxisOperationFactory
+ .getAxisOperation(AxisOperationFactory.MEP_CONSTANT_OUT_ONLY);
- setUpMessage(ackMsgCtx);
+ MessageContext ackMsgCtx = SandeshaUtil
+ .createNewRelatedMessageContext(applicationRMMsgCtx,
+ ackOperation);
+ RMMsgContext ackRMMsgCtx = MsgInitializer
+ .initializeMessage(ackMsgCtx);
- ackOpCtx.addMessageContext(ackMsgCtx);
+ setUpMessage(ackMsgCtx);
Sequence reqSequence = (Sequence) applicationRMMsgCtx
.getMessagePart(Constants.MessageParts.SEQUENCE);
@@ -472,4 +401,5 @@
throw new SandeshaException(e.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=348116&r1=348115&r2=348116&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java Mon Nov 21 23:28:24 2005
@@ -31,6 +31,8 @@
import org.apache.axis2.addressing.MessageInformationHeaders;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.context.OperationContext;
+import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.TransportInDescription;
import org.apache.axis2.description.TransportOutDescription;
import org.apache.axis2.i18n.Messages;
@@ -174,133 +176,6 @@
return (MessageContext) storedMsgContexts.get(key);
}
- // public static void main (String[] args) {
- // String msgList = "13,2,6,4,4,1,999,12,3";
- // getAckRangeArray( msgList);
- //
- // }
-
- public static MessageContext deepCopy(MessageContext msgCtx)
- throws SandeshaException {
-
- try {
- MessageContext newMessageContext = shallowCopy(msgCtx);
- newMessageContext.setDoingMTOM(msgCtx.isDoingMTOM());
- newMessageContext.setDoingREST(msgCtx.isDoingREST());
- newMessageContext.setMessageID(msgCtx.getMessageID());
- newMessageContext.setOutPutWritten(msgCtx.isOutPutWritten());
- newMessageContext.setParent(msgCtx.getParent());
- newMessageContext.setPausedPhaseName(msgCtx.getPausedPhaseName());
- newMessageContext.setProcessingFault(msgCtx.isProcessingFault());
- newMessageContext.setResponseWritten(msgCtx.isResponseWritten());
- newMessageContext.setRestThroughPOST(msgCtx.isRestThroughPOST());
- if (msgCtx.getAxisOperation() != null)
- newMessageContext.setAxisOperation(msgCtx.getAxisOperation());
-
- 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();
- MessageInformationHeaders oldMsgInfoHeaders = msgCtx
- .getMessageInformationHeaders();
-
- msgInfoHeaders1.setTo(oldMsgInfoHeaders.getTo());
- msgInfoHeaders1.setFrom(oldMsgInfoHeaders.getFrom());
- msgInfoHeaders1.setReplyTo(oldMsgInfoHeaders.getReplyTo());
- msgInfoHeaders1.setFaultTo(oldMsgInfoHeaders.getFaultTo());
- msgInfoHeaders1.setMessageId(getUUID());
- msgInfoHeaders1.setRelatesTo(oldMsgInfoHeaders.getRelatesTo());
- msgInfoHeaders1.setAction(oldMsgInfoHeaders.getAction());
- msgInfoHeaders1.setReferenceParameters(oldMsgInfoHeaders
- .getReferenceParameters());
-
- try {
-
- MessageContext newMessageContext = new MessageContext(configCtx);
- newMessageContext.setTransportIn(transportIn);
- newMessageContext.setTransportOut(transportOut);
-
- newMessageContext.setProperty(MessageContext.TRANSPORT_OUT, msgCtx
- .getProperty(MessageContext.TRANSPORT_OUT));
- newMessageContext.setProperty(HTTPConstants.HTTPOutTransportInfo,
- msgCtx.getProperty(HTTPConstants.HTTPOutTransportInfo));
-
- //Setting the charater set encoding
- Object charSetEncoding = msgCtx
- .getProperty(MessageContext.CHARACTER_SET_ENCODING);
-
- //TODO - this is required due to a bug in axis2. Remove this when
- // it get fixed
- //BUG - Commons HTTP transport sender sets a NameValuepair to as
- // the CHAR_SET_ENCODING
- //instead of a String
- if (charSetEncoding instanceof NameValuePair)
- charSetEncoding = ((NameValuePair) charSetEncoding).getValue();
-
- newMessageContext.setProperty(
- MessageContext.CHARACTER_SET_ENCODING, charSetEncoding);
-
- newMessageContext.setMessageInformationHeaders(msgInfoHeaders1);
- newMessageContext.setAxisService(msgCtx.getAxisService());
- if (msgCtx.getAxisServiceGroup() != null)
- newMessageContext.setAxisServiceGroup(msgCtx
- .getAxisServiceGroup());
-
- newMessageContext.setSoapAction(msgCtx.getSoapAction());
- newMessageContext.setWSAAction(msgCtx.getWSAAction());
-
- newMessageContext.setServerSide(msgCtx.isServerSide());
- return newMessageContext;
-
- } catch (AxisFault e) {
- throw new SandeshaException("Cannot copy message");
- }
-
- }
-
- public static RMMsgContext deepCopy(RMMsgContext rmMsgContext)
- throws SandeshaException {
- MessageContext msgCtx = null;
- if (rmMsgContext.getMessageContext() != null)
- msgCtx = deepCopy(rmMsgContext.getMessageContext());
-
- RMMsgContext newRMMsgCtx = new RMMsgContext();
- if (msgCtx != null)
- newRMMsgCtx.setMessageContext(msgCtx);
-
- return newRMMsgCtx;
- }
-
- public static RMMsgContext shallowCopy(RMMsgContext rmMsgContext)
- throws SandeshaException {
- MessageContext msgCtx = null;
- if (rmMsgContext.getMessageContext() != null)
- msgCtx = shallowCopy(rmMsgContext.getMessageContext());
-
- RMMsgContext newRMMsgCtx = new RMMsgContext();
- if (msgCtx != null)
- newRMMsgCtx.setMessageContext(msgCtx);
-
- return newRMMsgCtx;
- }
-
public static void startSenderIfStopped(ConfigurationContext context) {
if (!sender.isSenderStarted()) {
sender.start(context);
@@ -554,6 +429,58 @@
} catch (AxisFault e) {
throw new SandeshaException(e.getMessage());
}
+ }
+
+ public static MessageContext createNewRelatedMessageContext(
+ RMMsgContext referenceRMMessage, AxisOperation operation)
+ throws SandeshaException {
+ try {
+ MessageContext referenceMessage = referenceRMMessage
+ .getMessageContext();
+ ConfigurationContext configContext = referenceMessage
+ .getSystemContext();
+ MessageContext newMessageContext = new MessageContext(configContext);
+
+ newMessageContext.setAxisServiceGroup(referenceMessage
+ .getAxisServiceGroup());
+ newMessageContext.setAxisService(referenceMessage.getAxisService());
+ newMessageContext.setAxisOperation(operation);
+ newMessageContext.setServiceGroupContext(referenceMessage
+ .getServiceGroupContext());
+ newMessageContext.setServiceGroupContextId(referenceMessage
+ .getServiceGroupContextId());
+ newMessageContext.setServiceContext(referenceMessage
+ .getServiceContext());
+ newMessageContext.setServiceContextID(referenceMessage
+ .getServiceContextID());
+
+ OperationContext operationContext = new OperationContext(operation);
+ newMessageContext.setOperationContext(operationContext);
+ operationContext.addMessageContext(newMessageContext);
+
+ //adding a blank envelope
+ SOAPFactory factory = SOAPAbstractFactory
+ .getSOAPFactory(SandeshaUtil
+ .getSOAPVersion(referenceMessage.getEnvelope()));
+ newMessageContext.setEnvelope(factory.getDefaultEnvelope());
+
+ newMessageContext.setTransportIn(referenceMessage.getTransportIn());
+ newMessageContext.setTransportOut(referenceMessage
+ .getTransportOut());
+
+ //copying transport info. TODO remove http specific ness.
+ newMessageContext.setProperty(MessageContext.TRANSPORT_OUT,
+ referenceMessage.getProperty(MessageContext.TRANSPORT_OUT));
+ newMessageContext.setProperty(HTTPConstants.HTTPOutTransportInfo,
+ referenceMessage
+ .getProperty(HTTPConstants.HTTPOutTransportInfo));
+
+ return newMessageContext;
+
+ } catch (AxisFault e) {
+ throw new SandeshaException(e.getMessage());
+ }
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org