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) {