You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@synapse.apache.org by sa...@apache.org on 2006/07/25 12:32:16 UTC

svn commit: r425363 - in /incubator/synapse/trunk/java/modules/core/src/org/apache/synapse: Constants.java core/axis2/Axis2Sender.java core/axis2/EmptyRMMessageReceiver.java mediators/builtin/RMMediator.java

Author: saminda
Date: Tue Jul 25 03:32:14 2006
New Revision: 425363

URL: http://svn.apache.org/viewvc?rev=425363&view=rev
Log:
More updates to <enableRM/>.  

Modified:
    incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java
    incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/Axis2Sender.java
    incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/EmptyRMMessageReceiver.java
    incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/RMMediator.java

Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java?rev=425363&r1=425362&r2=425363&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/Constants.java Tue Jul 25 03:32:14 2006
@@ -79,4 +79,6 @@
 
     String PROCESSED_MUST_UNDERSTAND = "__PROCESSED_MUST_UNDERSTAND__";
 
+    String RESPONSE_SOAP_ENVELOPE = "_RESPONSE_SOAP_ENVELOPE_";
+
 }

Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/Axis2Sender.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/Axis2Sender.java?rev=425363&r1=425362&r2=425363&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/Axis2Sender.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/Axis2Sender.java Tue Jul 25 03:32:14 2006
@@ -73,6 +73,10 @@
                     ((Axis2MessageContext) synapseInMessageContext).
                         getAxis2MessageContext());
 
+            //set the response Envelop as a property in Original axisMsgCtx
+            synapseInMessageContext.setProperty(org.apache.synapse.Constants.RESPONSE_SOAP_ENVELOPE,
+                                                axisOutMsgContext.getEnvelope());
+
             // create the synapse message context for the response
             org.apache.synapse.MessageContext synapseOutMessageContext =
                 new Axis2MessageContext(

Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/EmptyRMMessageReceiver.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/EmptyRMMessageReceiver.java?rev=425363&r1=425362&r2=425363&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/EmptyRMMessageReceiver.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/core/axis2/EmptyRMMessageReceiver.java Tue Jul 25 03:32:14 2006
@@ -16,10 +16,13 @@
 package org.apache.synapse.core.axis2;
 
 import org.apache.axis2.engine.MessageReceiver;
+import org.apache.axis2.engine.AxisEngine;
 import org.apache.axis2.context.MessageContext;
 import org.apache.axis2.AxisFault;
+import org.apache.axis2.util.Utils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
+import org.apache.axiom.soap.SOAPEnvelope;
 /*
  * 
  */
@@ -32,20 +35,35 @@
         /*
          Message Recieved with RM
         */
-        
-        log.info("EmptyRMMessageReceiver#receive() and inject the Message into Synapse Environment");
+
+        log.info(
+                "EmptyRMMessageReceiver#receive() and inject the Message into Synapse Environment");
         log.debug("Application Message  :  " + messageContext.getEnvelope().toString());
 
+        MessageContext outMsgContext = Utils.createOutMessageContext(messageContext);
+        outMsgContext.getOperationContext().addMessageContext(outMsgContext);
+
         org.apache.synapse.MessageContext synCtx =
                 Axis2MessageContextFinder.getSynapseMessageContext(messageContext);
+
+        //setting the property that Application Message in RM Need not to hit RM Mediators anymore
+        messageContext.setProperty(org.apache.synapse.Constants.MESSAGE_RECEIVED_RM_ENGAGED,
+                                   Boolean.TRUE);
+
         synCtx.getEnvironment().injectMessage(synCtx);
 
-        log.debug("Executed EmptyRMMessageReceiver#receive() and Java Return for RMMediator");
+        Object obj = messageContext.getProperty(org.apache.synapse.Constants.RESPONSE_SOAP_ENVELOPE);
+        if (obj != null) {
+            outMsgContext.setEnvelope((SOAPEnvelope)obj);
+        } else {
+            outMsgContext.setEnvelope(messageContext.getEnvelope());
+        }
 
+        log.debug("Executed EmptyRMMessageReceiver#receive() and Java Return for RMMediator");
 
-        messageContext.setProperty(
-                org.apache.synapse.Constants.MESSAGE_RECEIVED_RM_ENGAGED,
-                Boolean.TRUE);
+        AxisEngine engine = new AxisEngine(
+                messageContext.getOperationContext().getServiceContext().getConfigurationContext());
+        engine.send(outMsgContext);
 
     }
 }

Modified: incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/RMMediator.java
URL: http://svn.apache.org/viewvc/incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/RMMediator.java?rev=425363&r1=425362&r2=425363&view=diff
==============================================================================
--- incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/RMMediator.java (original)
+++ incubator/synapse/trunk/java/modules/core/src/org/apache/synapse/mediators/builtin/RMMediator.java Tue Jul 25 03:32:14 2006
@@ -54,6 +54,11 @@
         log.debug("RM Mediator  ::  mediate() ");
         org.apache.axis2.context.MessageContext msgCtx =
                 ((Axis2MessageContext) synCtx).getAxis2MessageContext();
+        Object obj = msgCtx.getProperty(org.apache.synapse.Constants.MESSAGE_RECEIVED_RM_ENGAGED);
+        if (obj != null && ((Boolean)obj).booleanValue()) {
+            log.debug("RM Mediator works only for the First Chain");
+            return true;
+        }
 
         ConfigurationContext cc = msgCtx.getConfigurationContext();
         AxisConfiguration ac = cc.getAxisConfiguration();
@@ -65,19 +70,11 @@
 
             ae.receive(msgCtx);
 
-            if (msgCtx.getProperty(
-                    org.apache.synapse.Constants.MESSAGE_RECEIVED_RM_ENGAGED) !=
-                                                                              null)
-            {
-                return ((Boolean) msgCtx.getProperty(
-                        org.apache.synapse.Constants.MESSAGE_RECEIVED_RM_ENGAGED))
-                        .booleanValue();
-            }
-
         } catch (AxisFault axisFault) {
             throw new SynapseException(axisFault);
         }
         return false;
+
     }
 
     private void rmEnabledService(ConfigurationContext cc, AxisConfiguration ac,



---------------------------------------------------------------------
To unsubscribe, e-mail: synapse-dev-unsubscribe@ws.apache.org
For additional commands, e-mail: synapse-dev-help@ws.apache.org