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