You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by hi...@apache.org on 2010/04/30 08:21:01 UTC

svn commit: r939564 - /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java

Author: hiranya
Date: Fri Apr 30 06:21:00 2010
New Revision: 939564

URL: http://svn.apache.org/viewvc?rev=939564&view=rev
Log:
Fixing SYNAPSE-630 (Patch provided by Rajika)

With this fix, the fault sequence is invoked whenever a proxy service encounters an error in the out-sequence.


Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java?rev=939564&r1=939563&r2=939564&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/core/axis2/SynapseCallbackReceiver.java Fri Apr 30 06:21:00 2010
@@ -36,6 +36,8 @@ import org.apache.sandesha2.client.Sande
 import org.apache.synapse.FaultHandler;
 import org.apache.synapse.SynapseConstants;
 import org.apache.synapse.SynapseException;
+import org.apache.synapse.Mediator;
+import org.apache.synapse.mediators.MediatorFaultHandler;
 import org.apache.synapse.aspects.statistics.ErrorLogFactory;
 import org.apache.synapse.aspects.statistics.StatisticsReporter;
 import org.apache.synapse.config.SynapseConfigUtils;
@@ -326,6 +328,35 @@ public class SynapseCallbackReceiver imp
                         (String) key, synapseOutMsgCtx.getProperty((String) key));
             }
 
+            Object proxyName = synapseOutMsgCtx.getProperty(SynapseConstants.PROXY_SERVICE);
+            if (proxyName != null) {
+                ProxyService proxy = synapseOutMsgCtx.getConfiguration().
+                        getProxyService((String) proxyName);
+
+                if (proxy.getTargetFaultSequence() != null) {
+                    Mediator faultSequence = synapseOutMsgCtx.getSequence(
+                            proxy.getTargetFaultSequence());
+                    if (faultSequence != null) {
+                        synapseInMessageContext.pushFaultHandler(
+                                new MediatorFaultHandler(faultSequence));
+                    } else {
+                        log.warn("Cloud not find any fault-sequence named :" +
+                                    proxy.getTargetFaultSequence() + "; Setting the deafault" +
+                                    " fault sequence for out path");
+                        synapseInMessageContext.pushFaultHandler(new MediatorFaultHandler(
+                                synapseInMessageContext.getFaultSequence()));
+                    }
+
+                } else if (proxy.getTargetInLineFaultSequence() != null) {
+                    synapseInMessageContext.pushFaultHandler(
+                            new MediatorFaultHandler(proxy.getTargetInLineFaultSequence()));
+
+                } else {
+                    synapseInMessageContext.pushFaultHandler(new MediatorFaultHandler(
+                            synapseInMessageContext.getFaultSequence()));
+                }
+           }
+
             // If this response is related to session affinity endpoints -Server initiated session
             Dispatcher dispatcher =
                     (Dispatcher) synapseOutMsgCtx.getProperty(