Author: supun
Date: Sun May 24 23:24:37 2009
New Revision: 36684
URL: http://wso2.org/svn/browse/wso2?view=rev&revision=36684

Log:
Fixing issue CARBON-3858

Modified:
   
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
   
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorSerializer.java
   
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java

Modified: 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java?rev=36684&r1=36683&r2=36684&view=diff
==============================================================================
--- 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
      (original)
+++ 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorFactory.java
      Sun May 24 23:24:37 2009
@@ -21,6 +21,8 @@
 
 import org.apache.axiom.om.OMAttribute;
 import org.apache.axiom.om.OMElement;
+import org.apache.axiom.om.OMNode;
+import org.apache.axiom.om.OMText;
 import org.apache.synapse.Mediator;
 import org.apache.synapse.mediators.transform.FaultMediator;
 import org.jaxen.JaxenException;
@@ -189,8 +191,13 @@
                     handleException("Unable to build the XPath for fault 
detail " +
                             "from the expression : " + 
detailExpr.getAttributeValue(), e);
                 }
-            } else if (detail.getText() != null) {
-                faultMediator.setFaultDetail(detail.getText());
+            } else if (detail.getFirstOMChild() != null) {
+                OMNode detailNode = detail.getFirstOMChild();
+                if (detailNode instanceof OMText) {
+                    faultMediator.setFaultDetail(detail.getText());
+                } else if (detailNode instanceof OMElement) {
+                    
faultMediator.setFaultDetailElement(detail.getFirstElement());
+                }
             }
         }
 

Modified: 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorSerializer.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorSerializer.java?rev=36684&r1=36683&r2=36684&view=diff
==============================================================================
--- 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorSerializer.java
   (original)
+++ 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/config/xml/FaultMediatorSerializer.java
   Sun May 24 23:24:37 2009
@@ -115,6 +115,9 @@
         } else if (mediator.getFaultDetail() != null) {
             OMElement detail = fac.createOMElement("detail", synNS, fault);
             detail.setText(mediator.getFaultDetail());
+        } else if (mediator.getFaultDetailElement() != null) {
+            OMElement detail = fac.createOMElement("detail", synNS, fault);
+            detail.addChild(mediator.getFaultDetailElement());    
         }
 
         if (parent != null) {

Modified: 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java
URL: 
http://wso2.org/svn/browse/wso2/branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java?rev=36684&r1=36683&r2=36684&view=diff
==============================================================================
--- 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java
    (original)
+++ 
branches/synapse/1.3-wso2v1/modules/core/src/main/java/org/apache/synapse/mediators/transform/FaultMediator.java
    Sun May 24 23:24:37 2009
@@ -81,6 +81,8 @@
     private String faultDetail = null;
     /** An XPath expression that will give the fault code QName at runtime */  
  
     private SynapseXPath faultDetailExpr = null;
+    /** The fault detail as an element to be used */
+    private OMElement faultDetailElement = null;
 
     public boolean mediate(MessageContext synCtx) {
 
@@ -377,6 +379,10 @@
             SOAPFaultDetail soapFaultDetail = factory.createSOAPFaultDetail();
             soapFaultDetail.setText(faultDetailExpr.stringValueOf(synCtx));
             fault.setDetail(soapFaultDetail);
+        } else if (faultDetailElement != null) {
+            SOAPFaultDetail soapFaultDetail = factory.createSOAPFaultDetail();
+            soapFaultDetail.addChild(faultDetailElement);
+            fault.setDetail(soapFaultDetail);
         } else if (fault.getDetail() != null) {
             // work around for a rampart issue in the following thread
             // 
http://www.nabble.com/Access-to-validation-error-message-tf4498668.html#a13284520
@@ -496,6 +502,14 @@
         this.faultDetailExpr = faultDetailExpr;
     }
 
+    public OMElement getFaultDetailElement() {
+        return faultDetailElement;
+    }
+
+    public void setFaultDetailElement(OMElement faultDetailElement) {
+        this.faultDetailElement = faultDetailElement;
+    }
+
     private void handleException(String msg) {
         log.error(msg);
         throw new SynapseException(msg);

_______________________________________________
Esb-java-dev mailing list
[email protected]
https://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev

Reply via email to