You are viewing a plain text version of this content. The canonical link for it is here.
Posted to sandesha-dev@ws.apache.org by ch...@apache.org on 2006/02/09 07:17:19 UTC
svn commit: r376202 - in
/webservices/sandesha/trunk/src/org/apache/sandesha2:
SandeshaException.java util/RMMsgCreator.java util/SandeshaUtil.java
workers/Sender.java
Author: chamikara
Date: Wed Feb 8 22:17:17 2006
New Revision: 376202
URL: http://svn.apache.org/viewcvs?rev=376202&view=rev
Log:
Bug fixes
Modified:
webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java
webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java
webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java?rev=376202&r1=376201&r2=376202&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/SandeshaException.java Wed Feb 8 22:17:17 2006
@@ -36,4 +36,8 @@
super (e);
}
+ public SandeshaException (String message,Exception e) {
+ super (message,e);
+ }
+
}
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=376202&r1=376201&r2=376202&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/RMMsgCreator.java Wed Feb 8 22:17:17 2006
@@ -31,6 +31,7 @@
import org.apache.axis2.context.OperationContext;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisOperationFactory;
+import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.description.ParameterImpl;
import org.apache.commons.logging.Log;
@@ -107,7 +108,6 @@
throw new SandeshaException(e.getMessage());
}
}
-
}
private static void finalizeCreation(MessageContext relatedMessage,
@@ -269,6 +269,7 @@
AxisOperation createSeqOperation = createSeqmsgContext
.getAxisOperation();
+
createSeqOperation.setName(new QName("CreateSequenceOperation"));
if (appMsgOperationDesc != null) {
createSeqOperation.setPhasesOutFlow(appMsgOperationDesc
@@ -415,7 +416,7 @@
terminateOperation.setPhasesOutFaultFlow(outPhases);
}
}
-
+
SOAPEnvelope envelope = factory.getDefaultEnvelope();
terminateRMMessage.setSOAPEnvelop(envelope);
@@ -428,7 +429,10 @@
terminateSequencePart);
finalizeCreation(referenceMessage, terminateMessage);
-
+
+ terminateMessage.setProperty(MessageContext.TRANSPORT_IN,null); //no need for an incoming transport for an terminate
+ //message. If this is put, sender will look for an response.
+
return terminateRMMessage;
}
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=376202&r1=376201&r2=376202&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/util/SandeshaUtil.java Wed Feb 8 22:17:17 2006
@@ -539,6 +539,14 @@
newMessageContext.setAxisOperation(operation);
+
+ //setting parent child relationships
+ AxisService service = newMessageContext.getAxisService();
+ if (service!=null && operation!=null) {
+ service.addChild(operation);
+ operation.setParent(service);
+ }
+
OperationContext operationContext = new OperationContext(operation);
newMessageContext.setOperationContext(operationContext);
operationContext.addMessageContext(newMessageContext);
Modified: webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java
URL: http://svn.apache.org/viewcvs/webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java?rev=376202&r1=376201&r2=376202&view=diff
==============================================================================
--- webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java (original)
+++ webservices/sandesha/trunk/src/org/apache/sandesha2/workers/Sender.java Wed Feb 8 22:17:17 2006
@@ -62,17 +62,19 @@
public class Sender extends Thread {
private boolean runSender = false;
+
private boolean stopSenderAfterWork = false;
+
private ArrayList workingSequences = new ArrayList();
-
+
private ConfigurationContext context = null;
-
+
Log log = LogFactory.getLog(getClass());
public synchronized void stopSenderForTheSequence(String sequenceID) {
workingSequences.remove(sequenceID);
- if (workingSequences.size()==0) {
- //stopSenderAfterWork = true;
+ if (workingSequences.size() == 0) {
+ // stopSenderAfterWork = true;
}
}
@@ -88,14 +90,13 @@
storageManager = SandeshaUtil.getSandeshaStorageManager(context);
} catch (SandeshaException e2) {
// TODO Auto-generated catch block
- log.debug ("ERROR: Could not start sender");
+ log.debug("ERROR: Could not start sender");
e2.printStackTrace();
return;
}
-
+
while (runSender) {
-
-
+
try {
if (context == null) {
String message = "Can't continue the Sender. Context is null";
@@ -103,202 +104,214 @@
throw new SandeshaException(message);
}
- Transaction pickMessagesToSendTransaction = storageManager.getTransaction(); //starting
- // a
- // new
- // transaction
+ Transaction pickMessagesToSendTransaction = storageManager
+ .getTransaction(); // starting
+ // a
+ // new
+ // transaction
SenderBeanMgr mgr = storageManager.getRetransmitterBeanMgr();
Collection coll = mgr.findMsgsToSend();
- if (coll.size()==0 && stopSenderAfterWork) {
+ if (coll.size() == 0 && stopSenderAfterWork) {
runSender = false;
pickMessagesToSendTransaction.commit();
continue;
}
-
+
pickMessagesToSendTransaction.commit();
-
+
Iterator iter = coll.iterator();
while (iter.hasNext()) {
SenderBean bean = (SenderBean) iter.next();
String key = (String) bean.getMessageContextRefKey();
- MessageContext msgCtx = storageManager.retrieveMessageContext(key,context);
+ MessageContext msgCtx = storageManager
+ .retrieveMessageContext(key, context);
- if (msgCtx==null) {
+ if (msgCtx == null) {
String message = "Message context is not present in the storage";
}
- //sender will not send the message if following property is set and not true.
- //But it will set if it is not set (null)
-
- //This is used to make sure that the mesage get passed the Sandesha2TransportSender.
-
- String qualifiedForSending = (String) msgCtx.getProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING);
- if (qualifiedForSending!=null && !qualifiedForSending.equals(Sandesha2Constants.VALUE_TRUE)) {
+ // sender will not send the message if following property is
+ // set and not true.
+ // But it will set if it is not set (null)
+
+ // This is used to make sure that the mesage get passed the
+ // Sandesha2TransportSender.
+
+ String qualifiedForSending = (String) msgCtx
+ .getProperty(Sandesha2Constants.QUALIFIED_FOR_SENDING);
+ if (qualifiedForSending != null
+ && !qualifiedForSending
+ .equals(Sandesha2Constants.VALUE_TRUE)) {
continue;
}
-
- try {
- if (msgCtx == null) {
- log.debug ("ERROR: Sender has an Unavailable Message entry");
- break;
- }
-
- RMMsgContext rmMsgCtx = MsgInitializer
- .initializeMessage(msgCtx);
- //rmMsgCtx.addSOAPEnvelope();
-
- //skip sending if this message has been mentioned as a message not to send (within sandesha2.properties)
- ArrayList msgsNotToSend = PropertyManager.getInstance().getMessagesNotToSend();
- //SandeshaPropertyBean propertyBean = (SandeshaPropertyBean) messageContext.getParameter(Sandesha2Constants.SANDESHA2_POLICY_BEAN);
-
- if (msgsNotToSend!=null && msgsNotToSend.contains(new Integer (rmMsgCtx.getMessageType()))) {
- continue;
- }
-
- updateMessage(msgCtx);
+ // try {
-
- log.info("Sender is sending a '" + SandeshaUtil
- .getMessageTypeString(rmMsgCtx.getMessageType()) + "' message.");
-
- Transaction preSendTransaction = storageManager.getTransaction();
-
- int messageType = rmMsgCtx.getMessageType();
-
- if (messageType == Sandesha2Constants.MessageTypes.APPLICATION) {
-
- Sequence sequence = (Sequence) rmMsgCtx.getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
- String sequenceID = sequence.getIdentifier().getIdentifier();
- //checking weather the sequence has been timed out.
- boolean sequenceTimedOut = SequenceManager.hasSequenceTimedOut (sequenceID, rmMsgCtx);
- if (sequenceTimedOut) {
- //sequence has been timed out.
- //do time out processing.
-
- //TODO uncomment below line
- TerminateManager.terminateSendingSide(context,sequenceID,msgCtx.isServerSide());
-
- String message = "Sequence timed out";
- log.debug(message);
- throw new SandeshaException (message);
- }
-
- //piggybacking if an ack if available for the same
- // sequence.
- AcknowledgementManager
- .piggybackAckIfPresent(rmMsgCtx);
- }
-
- preSendTransaction.commit();
-
- try {
- //every message should be resumed (pause==false) when sending
-// boolean paused = msgCtx.isPaused();
-
-
-// AxisEngine engine = new AxisEngine(msgCtx
-// .getConfigurationContext());
-// if (paused) {
-// engine.resume(msgCtx);
-// }else {
-// engine.send(msgCtx);
-// }
-
- TransportOutDescription transportOutDescription = msgCtx.getTransportOut();
- TransportSender transportSender = transportOutDescription.getSender();
- if (transportSender!=null) {
- transportSender.invoke(msgCtx);
- }
-
- } catch (Exception e) {
- //Exception is sending. retry later
- String message = "Exception thrown in sending...";
- log.debug(message);
- log.debug(e.getMessage());
+ if (msgCtx == null) {
+ log
+ .debug("ERROR: Sender has an Unavailable Message entry");
+ break;
+ }
- }
-
- Transaction postSendTransaction = storageManager.getTransaction();
-
- MessageRetransmissionAdjuster retransmitterAdjuster = new MessageRetransmissionAdjuster();
-
- if (rmMsgCtx.getMessageType() == Sandesha2Constants.MessageTypes.APPLICATION) {
- Sequence sequence = (Sequence) rmMsgCtx
- .getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
- long messageNo = sequence.getMessageNumber()
- .getMessageNumber();
- }
+ RMMsgContext rmMsgCtx = MsgInitializer
+ .initializeMessage(msgCtx);
+ // rmMsgCtx.addSOAPEnvelope();
+
+ // skip sending if this message has been mentioned as a
+ // message not to send (within sandesha2.properties)
+ ArrayList msgsNotToSend = PropertyManager.getInstance()
+ .getMessagesNotToSend();
+ // SandeshaPropertyBean propertyBean =
+ // (SandeshaPropertyBean)
+ // messageContext.getParameter(Sandesha2Constants.SANDESHA2_POLICY_BEAN);
+
+ if (msgsNotToSend != null
+ && msgsNotToSend.contains(new Integer(rmMsgCtx
+ .getMessageType()))) {
+ continue;
+ }
+
+ updateMessage(msgCtx);
- retransmitterAdjuster.adjustRetransmittion(bean,context);
+ log.info("Sender is sending a '"
+ + SandeshaUtil.getMessageTypeString(rmMsgCtx
+ .getMessageType()) + "' message.");
+
+ Transaction preSendTransaction = storageManager
+ .getTransaction();
+
+ int messageType = rmMsgCtx.getMessageType();
+
+ if (messageType == Sandesha2Constants.MessageTypes.APPLICATION) {
+
+ Sequence sequence = (Sequence) rmMsgCtx
+ .getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+ String sequenceID = sequence.getIdentifier()
+ .getIdentifier();
+ // checking weather the sequence has been timed out.
+ boolean sequenceTimedOut = SequenceManager
+ .hasSequenceTimedOut(sequenceID, rmMsgCtx);
+ if (sequenceTimedOut) {
+ // sequence has been timed out.
+ // do time out processing.
+
+ // TODO uncomment below line
+ TerminateManager.terminateSendingSide(context,
+ sequenceID, msgCtx.isServerSide());
-
- //update or delete only if the object is still present.
- SenderBean bean1 = mgr.retrieve(bean.getMessageID());
- if (bean1 != null) {
- if (bean.isReSend()) {
- bean1.setSentCount(bean.getSentCount());
- bean1.setTimeToSend(bean.getTimeToSend());
-
- mgr.update(bean1);
- }else
- mgr.delete(bean1.getMessageID());
+ String message = "Sequence timed out";
+ log.debug(message);
+ throw new SandeshaException(message);
}
- postSendTransaction.commit(); //commiting the current
- // transaction
+ // piggybacking if an ack if available for the same
+ // sequence.
+ AcknowledgementManager.piggybackAckIfPresent(rmMsgCtx);
+ }
- if (!msgCtx.isServerSide())
- checkForSyncResponses(msgCtx);
-
-
- Transaction terminateCleaningTransaction = storageManager
- .getTransaction();
- if (rmMsgCtx.getMessageType() == Sandesha2Constants.MessageTypes.TERMINATE_SEQ) {
- //terminate sending side.
- TerminateSequence terminateSequence = (TerminateSequence) rmMsgCtx
- .getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
- String sequenceID = terminateSequence
- .getIdentifier().getIdentifier();
- ConfigurationContext configContext = msgCtx
- .getConfigurationContext();
-
- TerminateManager.terminateSendingSide(configContext, sequenceID,msgCtx.isServerSide());
-
- //removing a entry from the Listener
- String transport = msgCtx.getTransportOut().getName().getLocalPart();
-
-
- //TODO complete below. Need a more eligent method which finishes the current message before ending.
- //ListenerManager.stop(configContext,transport);
- }
+ preSendTransaction.commit();
+
+ // every message should be resumed (pause==false) when
+ // sending
+ // boolean paused = msgCtx.isPaused();
+
+ // AxisEngine engine = new AxisEngine(msgCtx
+ // .getConfigurationContext());
+ // if (paused) {
+ // engine.resume(msgCtx);
+ // }else {
+ // engine.send(msgCtx);
+ // }
+
+ TransportOutDescription transportOutDescription = msgCtx
+ .getTransportOut();
+ TransportSender transportSender = transportOutDescription
+ .getSender();
+ if (transportSender != null) {
+ transportSender.invoke(msgCtx);
+ }
+
+ Transaction postSendTransaction = storageManager
+ .getTransaction();
+
+ MessageRetransmissionAdjuster retransmitterAdjuster = new MessageRetransmissionAdjuster();
- terminateCleaningTransaction.commit();
+ if (rmMsgCtx.getMessageType() == Sandesha2Constants.MessageTypes.APPLICATION) {
+ Sequence sequence = (Sequence) rmMsgCtx
+ .getMessagePart(Sandesha2Constants.MessageParts.SEQUENCE);
+ long messageNo = sequence.getMessageNumber()
+ .getMessageNumber();
+ }
+
+ retransmitterAdjuster.adjustRetransmittion(bean, context);
- } catch (AxisFault e1) {
- e1.printStackTrace();
- } catch (Throwable e3) {
- e3.printStackTrace();
+ // update or delete only if the object is still present.
+ SenderBean bean1 = mgr.retrieve(bean.getMessageID());
+ if (bean1 != null) {
+ if (bean.isReSend()) {
+ bean1.setSentCount(bean.getSentCount());
+ bean1.setTimeToSend(bean.getTimeToSend());
+
+ mgr.update(bean1);
+ } else
+ mgr.delete(bean1.getMessageID());
}
+
+ postSendTransaction.commit(); // commiting the current
+ // transaction
+
+ if (!msgCtx.isServerSide())
+ checkForSyncResponses(msgCtx);
+
+ Transaction terminateCleaningTransaction = storageManager
+ .getTransaction();
+ if (rmMsgCtx.getMessageType() == Sandesha2Constants.MessageTypes.TERMINATE_SEQ) {
+ // terminate sending side.
+ TerminateSequence terminateSequence = (TerminateSequence) rmMsgCtx
+ .getMessagePart(Sandesha2Constants.MessageParts.TERMINATE_SEQ);
+ String sequenceID = terminateSequence.getIdentifier()
+ .getIdentifier();
+ ConfigurationContext configContext = msgCtx
+ .getConfigurationContext();
+
+ TerminateManager.terminateSendingSide(configContext,
+ sequenceID, msgCtx.isServerSide());
+
+ // removing a entry from the Listener
+ String transport = msgCtx.getTransportOut().getName()
+ .getLocalPart();
+
+ // TODO complete below. Need a more eligent method which
+ // finishes the current message before ending.
+ // ListenerManager.stop(configContext,transport);
+ }
+
+ terminateCleaningTransaction.commit();
+
}
- } catch (SandeshaException e) {
+ } catch (AxisFault e) {
+ String message = "An Exception was throws in sending";
+ System.out.println(message);
+ log.error(e.getMessage());
e.printStackTrace();
- return;
+
+ // TODO : when this is the client side throw the exception to
+ // the client when necessary.
+
}
try {
Thread.sleep(Sandesha2Constants.SENDER_SLEEP_TIME);
} catch (InterruptedException e1) {
- //e1.printStackTrace();
+ // e1.printStackTrace();
log.debug("Sender was interupted...");
log.debug(e1.getMessage());
log.debug("End printing Interrupt...");
}
}
-
}
private boolean isResponseExpected(RMMsgContext rmMsgCtx) {
@@ -308,7 +321,7 @@
responseExpected = true;
}
if (rmMsgCtx.getMessageType() == Sandesha2Constants.MessageTypes.APPLICATION) {
- //a ack may arrive. (not a application response)
+ // a ack may arrive. (not a application response)
if (rmMsgCtx.getMessageContext().getAxisOperation()
.getMessageExchangePattern().equals(
org.apache.wsdl.WSDLConstants.MEP_URI_IN_OUT)) {
@@ -319,139 +332,108 @@
return true;
}
- public synchronized void runSenderForTheSequence(ConfigurationContext context, String sequenceID) {
-
- if (sequenceID!=null && !workingSequences.contains(sequenceID))
+ public synchronized void runSenderForTheSequence(
+ ConfigurationContext context, String sequenceID) {
+
+ if (sequenceID != null && !workingSequences.contains(sequenceID))
workingSequences.add(sequenceID);
-
if (!isSenderStarted()) {
- runSender = true; //so that isSenderStarted()=true.
+ runSender = true; // so that isSenderStarted()=true.
super.start();
this.context = context;
}
}
private void updateMessage(MessageContext msgCtx1) throws SandeshaException {
-// try {
-// RMMsgContext rmMsgCtx1 = MsgInitializer.initializeMessage(msgCtx1);
-// rmMsgCtx1.addSOAPEnvelope();
-//
-// } catch (AxisFault e) {
-// String message = "Exception in updating contexts";
-// log.debug(message);
-// throw new SandeshaException(message);
-// }
+ // try {
+ // RMMsgContext rmMsgCtx1 = MsgInitializer.initializeMessage(msgCtx1);
+ // rmMsgCtx1.addSOAPEnvelope();
+ //
+ // } catch (AxisFault e) {
+ // String message = "Exception in updating contexts";
+ // log.debug(message);
+ // throw new SandeshaException(message);
+ // }
}
- private void checkForSyncResponses(MessageContext msgCtx) {
+ private void checkForSyncResponses(MessageContext msgCtx)
+ throws SandeshaException {
try {
-
+
boolean responsePresent = (msgCtx
.getProperty(MessageContext.TRANSPORT_IN) != null);
if (!responsePresent)
return;
- //we never expect sync responses. so we can freely create a new operation context for the incoming RM Specific message.
- // create the responseMessageContext
+ // create the responseMessageContext
MessageContext responseMessageContext = new MessageContext();
- responseMessageContext.setConfigurationContext(msgCtx.getConfigurationContext());
- responseMessageContext.setSessionContext(msgCtx.getSessionContext());
+ responseMessageContext.setServerSide(false);
+ responseMessageContext.setConfigurationContext(msgCtx
+ .getConfigurationContext());
+ responseMessageContext
+ .setSessionContext(msgCtx.getSessionContext());
responseMessageContext.setTransportIn(msgCtx.getTransportIn());
responseMessageContext.setTransportOut(msgCtx.getTransportOut());
- responseMessageContext.setProperty(MessageContext.TRANSPORT_IN,
- msgCtx.getProperty(MessageContext.TRANSPORT_IN));
- // msgCtx.getAxisOperation().registerOperationContext(responseMessageContext, msgCtx.getOperationContext());
- responseMessageContext.setServerSide(false);
- responseMessageContext.setServiceContext(msgCtx.getServiceContext());
- responseMessageContext.setServiceGroupContext(msgCtx.getServiceGroupContext());
-
- //we never expect sync responses. so we can freely create a new operation context for the incoming RM Specific message.
- AxisOperation inOnlyOperation = AxisOperationFactory.getAxisOperation(AxisOperationFactory.MEP_CONSTANT_IN_ONLY);
- inOnlyOperation.setRemainingPhasesInFlow(msgCtx.getAxisOperation().getRemainingPhasesInFlow());
-
- OperationContext inOnlyOperationContext = new OperationContext (inOnlyOperation);
- responseMessageContext.setAxisOperation(inOnlyOperation);
- responseMessageContext.setOperationContext(inOnlyOperationContext);
-
- // If request is REST we assume the responseMessageContext is REST, so set the variable
- responseMessageContext.setDoingREST(msgCtx.isDoingREST());
-
- SOAPEnvelope resenvelope = TransportUtils.createSOAPMessage(responseMessageContext,
- msgCtx.getEnvelope().getNamespace().getName());
-
- if (resenvelope != null) {
- responseMessageContext.setEnvelope(resenvelope);
- AxisEngine engine = new AxisEngine(msgCtx.getConfigurationContext());
- engine.receive(responseMessageContext);
- } else {
- String message = "Exception is Receiving message...";
- log.debug(message);
- throw new AxisFault(message);
- }
-
-
+ responseMessageContext.setProperty(MessageContext.TRANSPORT_IN,
+ msgCtx.getProperty(MessageContext.TRANSPORT_IN));
+ // msgCtx.getAxisOperation().registerOperationContext(responseMessageContext,
+ // msgCtx.getOperationContext());
+ // responseMessageContext.setServerSide(false);
+ responseMessageContext
+ .setServiceContext(msgCtx.getServiceContext());
+ responseMessageContext.setServiceGroupContext(msgCtx
+ .getServiceGroupContext());
+
+ // we never expect sync responses. so we can freely create a new
+ // operation context for the incoming RM Specific message.
+ AxisOperation inOnlyOperation =
+ AxisOperationFactory.getAxisOperation(AxisOperationFactory.MEP_CONSTANT_IN_ONLY);
+ inOnlyOperation.setRemainingPhasesInFlow(msgCtx.getAxisOperation().getRemainingPhasesInFlow());
+ AxisOperation syncResponseAxisOperation = msgCtx.getAxisOperation();
+ OperationContext inOnlyOperationContext = new OperationContext (inOnlyOperation);
+ responseMessageContext.setAxisOperation(inOnlyOperation);
+ responseMessageContext.setOperationContext(inOnlyOperationContext);
-
- /*boolean responsePresent = (msgCtx
- .getProperty(MessageContext.TRANSPORT_IN) != null);
+// //following set the operationContext & the axisOperation of the newIncoming message to those
+// //of the outGoing message. But does not add the message to the op. context or the AxisOperation.
+// //Currently opcontext does not allow messages outside the map to be added to it.
+// responseMessageContext.setAxisOperation(syncResponseAxisOperation);
+// responseMessageContext
+// .setOperationContext(syncResponseMsgOperationContext);
- if (responsePresent) {
- //create the response
- MessageContext response = new MessageContext(msgCtx
- .getConfigurationContext(), msgCtx.getSessionContext(),
- msgCtx.getTransportIn(), msgCtx.getTransportOut());
- response.setProperty(MessageContext.TRANSPORT_IN, msgCtx
- .getProperty(MessageContext.TRANSPORT_IN));
-
- response.setServerSide(false);
-
- //If request is REST we assume the response is REST, so set the
- // variable
- response.setDoingREST(msgCtx.isDoingREST());
- response.setServiceGroupContextId(msgCtx
- .getServiceGroupContextId());
- response
- .setServiceGroupContext(msgCtx.getServiceGroupContext());
- response.setServiceContext(msgCtx.getServiceContext());
- response.setAxisService(msgCtx.getAxisService());
- response.setAxisServiceGroup(msgCtx.getAxisServiceGroup());
-
-
- //setting the in-flow.
- //ArrayList inPhaseHandlers =
- // response.getAxisOperation().getRemainingPhasesInFlow();
- //
- // if (inPhaseHandlers==null || inPhaseHandlers.isEmpty()) {
- // ArrayList phases =
- // msgCtx.getSystemContext().getAxisConfiguration().getInPhasesUptoAndIncludingPostDispatch();
- // response.getAxisOperation().setRemainingPhasesInFlow(phases); }
- //
-
- //Changed following from TransportUtils to SandeshaUtil since
- // op.
- // context is anavailable.
- SOAPEnvelope resenvelope = null;
-// resenvelope = SandeshaUtil.createSOAPMessage(response, msgCtx
-// .getEnvelope().getNamespace().getName());
-
- resenvelope = TransportUtils.createSOAPMessage(response,msgCtx
- .getEnvelope().getNamespace().getName());
- if (resenvelope != null) {
- AxisEngine engine = new AxisEngine(msgCtx
- .getConfigurationContext());
- response.setEnvelope(resenvelope);
- engine.receive(response);
- }
- } */
+ // If request is REST we assume the responseMessageContext is REST,
+ // so set the variable
+ responseMessageContext.setDoingREST(msgCtx.isDoingREST());
+
+ SOAPEnvelope resenvelope = null;
+ try {
+ resenvelope = TransportUtils.createSOAPMessage(
+ responseMessageContext, msgCtx.getEnvelope().getNamespace()
+ .getName());
+ } catch (AxisFault e) {
+ // TODO Auto-generated catch block
+ log.debug("Valid SOAP envelope not found");
+ }
+
+ if (resenvelope != null) {
+ responseMessageContext.setEnvelope(resenvelope);
+ AxisEngine engine = new AxisEngine(msgCtx
+ .getConfigurationContext());
+ engine.receive(responseMessageContext);
+ }
+
} catch (Exception e) {
- log.info("No valid Sync response...");
+ String message = "No valid Sync response...";
+ log.info(message);
+ throw new SandeshaException(message, e);
+
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: sandesha-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: sandesha-dev-help@ws.apache.org