Author: supun Date: Thu Jun 4 03:36:41 2009 New Revision: 37749 URL: http://wso2.org/svn/browse/wso2?view=rev&revision=37749
Log: Adding functionality to include multiple XML elements in fault detail through FaultMediator 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=37749&r1=37748&r2=37749&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 Thu Jun 4 03:36:41 2009 @@ -30,6 +30,7 @@ import javax.xml.namespace.QName; import java.net.URI; import java.net.URISyntaxException; +import java.util.Iterator; /** * Factory for {...@link FaultMediator} instances. @@ -191,13 +192,13 @@ handleException("Unable to build the XPath for fault detail " + "from the expression : " + detailExpr.getAttributeValue(), e); } - } 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()); + } else if (detail.getChildElements().hasNext()) { + Iterator it = detail.getChildElements(); + while (it.hasNext()) { + faultMediator.addFaultDetailElement((OMElement) it.next()); } + } else if (detail.getText() != null) { + faultMediator.setFaultDetail(detail.getText()); } else { // we have an empry detail element faultMediator.setFaultDetail(""); 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=37749&r1=37748&r2=37749&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 Thu Jun 4 03:36:41 2009 @@ -115,9 +115,11 @@ } else if (mediator.getFaultDetail() != null) { OMElement detail = fac.createOMElement("detail", synNS, fault); detail.setText(mediator.getFaultDetail()); - } else if (mediator.getFaultDetailElement() != null) { + } else if (mediator.getFaultDetailElements().size() > 0) { OMElement detail = fac.createOMElement("detail", synNS, fault); - detail.addChild(mediator.getFaultDetailElement()); + for (OMElement e : mediator.getFaultDetailElements()) { + detail.addChild(e.cloneOMElement()); + } } 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=37749&r1=37748&r2=37749&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 Thu Jun 4 03:36:41 2009 @@ -36,6 +36,8 @@ import javax.xml.namespace.QName; import java.net.URI; import java.util.Iterator; +import java.util.List; +import java.util.ArrayList; /** * This transforms the current message instance into a SOAP Fault message. The @@ -80,9 +82,9 @@ /** The fault detail to be used */ 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; + private SynapseXPath faultDetailExpr = null; + /** array of fault detail elements */ + private List<OMElement> faultDetailElements = new ArrayList<OMElement>(); public boolean mediate(MessageContext synCtx) { @@ -379,9 +381,11 @@ SOAPFaultDetail soapFaultDetail = factory.createSOAPFaultDetail(); soapFaultDetail.setText(faultDetailExpr.stringValueOf(synCtx)); fault.setDetail(soapFaultDetail); - } else if (faultDetailElement != null) { + } else if (!faultDetailElements.isEmpty()) { SOAPFaultDetail soapFaultDetail = factory.createSOAPFaultDetail(); - soapFaultDetail.addChild(faultDetailElement.cloneOMElement()); + for (OMElement faultDetailElement : faultDetailElements) { + soapFaultDetail.addChild(faultDetailElement.cloneOMElement()); + } fault.setDetail(soapFaultDetail); } else if (fault.getDetail() != null) { // work around for a rampart issue in the following thread @@ -502,12 +506,20 @@ this.faultDetailExpr = faultDetailExpr; } - public OMElement getFaultDetailElement() { - return faultDetailElement; + public List<OMElement> getFaultDetailElements() { + return faultDetailElements; + } + + public void addFaultDetailElement(OMElement element) { + faultDetailElements.add(element); + } + + public void addAllFaultDetailElements(List<OMElement> list) { + faultDetailElements.addAll(list); } - public void setFaultDetailElement(OMElement faultDetailElement) { - this.faultDetailElement = faultDetailElement; + public OMElement removeFaultDetailElement(int pos) { + return faultDetailElements.remove(pos); } private void handleException(String msg) { _______________________________________________ Esb-java-dev mailing list [email protected] https://wso2.org/cgi-bin/mailman/listinfo/esb-java-dev
