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(


Reply via email to