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: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]