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/03/03 07:03:36 UTC

svn commit: r918329 - in /synapse/trunk/java/modules/core/src/main/java/org/apache/synapse: SynapseConstants.java mediators/builtin/CalloutMediator.java

Author: hiranya
Date: Wed Mar  3 06:03:35 2010
New Revision: 918329

URL: http://svn.apache.org/viewvc?rev=918329&view=rev
Log:
Fixing SYNAPSE-616

Now when the callout mediator encounters an AxisFault, ERROR_CODE, ERROR_MESSAGE etc are set properly


Modified:
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
    synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java?rev=918329&r1=918328&r2=918329&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/SynapseConstants.java Wed Mar  3 06:03:35 2010
@@ -370,4 +370,7 @@
     // referring real endpoint is null
     public static final int ENDPOINT_IN_DIRECT_NOT_READY = 305100;
 
+    // callout operation failed
+    public static final int CALLOUT_OPERATION_FAILED    = 401000;
+
 }

Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java?rev=918329&r1=918328&r2=918329&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/builtin/CalloutMediator.java Wed Mar  3 06:03:35 2010
@@ -31,10 +31,7 @@
 import org.apache.axis2.client.ServiceClient;
 import org.apache.axis2.context.ConfigurationContext;
 import org.apache.axis2.context.ConfigurationContextFactory;
-import org.apache.synapse.ManagedLifecycle;
-import org.apache.synapse.MessageContext;
-import org.apache.synapse.SynapseException;
-import org.apache.synapse.SynapseLog;
+import org.apache.synapse.*;
 import org.apache.synapse.core.SynapseEnvironment;
 import org.apache.synapse.core.axis2.Axis2MessageContext;
 import org.apache.synapse.mediators.AbstractMediator;
@@ -108,7 +105,12 @@
                 }
             }
 
-            OMElement result = sc.sendReceive(request);
+            OMElement result = null;
+            try {
+                result = sc.sendReceive(request);
+            } catch (AxisFault axisFault) {
+                handleFault(synCtx, axisFault);
+            }
 
             if (synLog.isTraceTraceEnabled()) {
                 synLog.traceTrace("Response payload received : " + result);
@@ -147,6 +149,33 @@
         return true;
     }
 
+    private void handleFault(MessageContext synCtx, AxisFault axisFault) {
+        synCtx.setProperty(SynapseConstants.SENDING_FAULT, Boolean.TRUE);
+        if (axisFault.getFaultCodeElement() != null) {
+            synCtx.setProperty(SynapseConstants.ERROR_CODE,
+                    axisFault.getFaultCodeElement().getText());
+        } else {
+            synCtx.setProperty(SynapseConstants.ERROR_CODE,
+                    SynapseConstants.CALLOUT_OPERATION_FAILED);
+        }
+
+        if (axisFault.getFaultReasonElement() != null) {
+            synCtx.setProperty(SynapseConstants.ERROR_MESSAGE,
+                    axisFault.getFaultReasonElement().getText());
+        } else {
+            synCtx.setProperty(SynapseConstants.ERROR_MESSAGE, "Error while performing " +
+                    "the callout operation");
+        }
+
+        if (axisFault.getFaultDetailElement() != null) {
+            synCtx.setProperty(SynapseConstants.ERROR_DETAIL,
+                    axisFault.getFaultDetailElement().getText());
+        }
+
+        synCtx.setProperty(SynapseConstants.ERROR_EXCEPTION, axisFault);
+        throw new SynapseException("Error while performing the callout operation", axisFault);
+    }
+
     private OMElement getRequestPayload(MessageContext synCtx) throws AxisFault {
 
         if (requestKey != null) {