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]

Reply via email to