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
