You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@synapse.apache.org by su...@apache.org on 2010/11/25 07:09:23 UTC
svn commit: r1038930 - in /synapse/trunk/java/modules:
core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java
extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
Author: supun
Date: Thu Nov 25 06:09:22 2010
New Revision: 1038930
URL: http://svn.apache.org/viewvc?rev=1038930&view=rev
Log:
applying the patch SYNAPSE-705 with a minor change, many thanks Heshan for the contribution
Modified:
synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java
synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
Modified: synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java?rev=1038930&r1=1038929&r2=1038930&view=diff
==============================================================================
--- synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java (original)
+++ synapse/trunk/java/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java Thu Nov 25 06:09:22 2010
@@ -19,10 +19,7 @@
package org.apache.synapse.mediators.transform;
-import org.apache.axiom.om.OMAbstractFactory;
-import org.apache.axiom.om.OMDocument;
-import org.apache.axiom.om.OMElement;
-import org.apache.axiom.om.OMFactory;
+import org.apache.axiom.om.*;
import org.apache.axiom.soap.*;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.RelatesTo;
@@ -32,6 +29,7 @@ import org.apache.synapse.SynapseLog;
import org.apache.synapse.core.axis2.Axis2MessageContext;
import org.apache.synapse.mediators.AbstractMediator;
import org.apache.synapse.util.xpath.SynapseXPath;
+import org.jaxen.JaxenException;
import javax.xml.namespace.QName;
import java.net.URI;
@@ -379,7 +377,23 @@ public class FaultMediator extends Abstr
fault.setDetail(soapFaultDetail);
} else if (faultDetailExpr != null) {
SOAPFaultDetail soapFaultDetail = factory.createSOAPFaultDetail();
- soapFaultDetail.setText(faultDetailExpr.stringValueOf(synCtx));
+ Object result = null;
+ try {
+ result = faultDetailExpr.evaluate(synCtx);
+ } catch (JaxenException e) {
+ handleException("Evaluation of the XPath expression " + this.toString() +
+ " resulted in an error", e);
+ }
+ if (result instanceof List) {
+ List list = (List) result;
+ for (Object obj : list) {
+ if (obj instanceof OMNode) {
+ soapFaultDetail.addChild((OMNode) obj);
+ }
+ }
+ } else {
+ soapFaultDetail.setText(faultDetailExpr.stringValueOf(synCtx));
+ }
fault.setDetail(soapFaultDetail);
} else if (!faultDetailElements.isEmpty()) {
SOAPFaultDetail soapFaultDetail = factory.createSOAPFaultDetail();
@@ -518,4 +532,9 @@ public class FaultMediator extends Abstr
log.error(msg);
throw new SynapseException(msg);
}
+
+ private void handleException(String msg, Throwable e) {
+ log.error(msg, e);
+ throw new SynapseException(msg, e);
+ }
}
Modified: synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java
URL: http://svn.apache.org/viewvc/synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java?rev=1038930&r1=1038929&r2=1038930&view=diff
==============================================================================
--- synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java (original)
+++ synapse/trunk/java/modules/extensions/src/main/java/org/apache/synapse/mediators/bsf/ScriptMessageContext.java Thu Nov 25 06:09:22 2010
@@ -47,6 +47,7 @@ import org.apache.synapse.core.SynapseEn
import org.apache.synapse.endpoints.Endpoint;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.mozilla.javascript.xml.XMLObject;
/**
* ScriptMessageContext decorates the Synapse MessageContext adding methods to use the
@@ -190,7 +191,19 @@ public class ScriptMessageContext implem
}
public void setProperty(String key, Object value) {
- mc.setProperty(key, value);
+ if (value instanceof XMLObject) {
+ OMElement omElement = null;
+ try {
+ omElement = xmlHelper.toOMElement(value);
+ } catch (ScriptException e) {
+ mc.setProperty(key, value);
+ }
+ if (omElement != null) {
+ mc.setProperty(key, omElement);
+ }
+ } else {
+ mc.setProperty(key, value);
+ }
}
public Set getPropertyKeySet() {