You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2008/04/24 06:07:55 UTC
svn commit: r651146 -
/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java
Author: ffang
Date: Wed Apr 23 21:07:54 2008
New Revision: 651146
URL: http://svn.apache.org/viewvc?rev=651146&view=rev
Log:
[SM-1328]cxf bc provider should support unqualified fault defined in the wsdl
Modified:
servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java
Modified: servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java
URL: http://svn.apache.org/viewvc/servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java?rev=651146&r1=651145&r2=651146&view=diff
==============================================================================
--- servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java (original)
+++ servicemix/smx3/trunk/deployables/bindingcomponents/servicemix-cxf-bc/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java Wed Apr 23 21:07:54 2008
@@ -49,6 +49,7 @@
import org.apache.cxf.service.model.BindingMessageInfo;
import org.apache.cxf.service.model.BindingOperationInfo;
import org.apache.cxf.service.model.MessagePartInfo;
+import org.apache.cxf.service.model.SchemaInfo;
import org.apache.cxf.staxutils.PartialXMLStreamReader;
import org.apache.cxf.staxutils.StaxUtils;
import org.apache.servicemix.jbi.util.QNameUtil;
@@ -212,7 +213,6 @@
private void handleJBIFault(SoapMessage message, Element soapFault) {
Document doc = DomUtil.createDocument();
-
Element jbiFault = DomUtil.createElement(doc, new QName(
JBIConstants.NS_JBI_BINDING, JBIFault.JBI_FAULT_ROOT));
Node jbiFaultDetail = null;
@@ -223,11 +223,34 @@
jbiFaultDetail = doc.importNode(soapFault.getElementsByTagName(
"soap:Detail").item(0).getFirstChild(), true);
}
+ SchemaInfo schemaInfo =
+ getOperation(message).getBinding().getService().getSchema(jbiFaultDetail.getNamespaceURI());
+ if (!schemaInfo.isElementFormQualified()) {
+ //that's unquailied fault
+ jbiFaultDetail = addEmptyDefaultTns((Element)jbiFaultDetail);
+ }
jbiFault.appendChild(jbiFaultDetail);
message.setContent(Source.class, new DOMSource(doc));
message.put("jbiFault", true);
}
+ private Element addEmptyDefaultTns(Element ret) {
+
+ if (!ret.hasAttribute("xmlns")) {
+ ret.setAttribute("xmlns", "");
+ }
+ NodeList nodes = ret.getChildNodes();
+ for (int i = 0; i < nodes.getLength(); i++) {
+ if (nodes.item(i) instanceof Element) {
+ Element ele = (Element) nodes.item(i);
+ ele = addEmptyDefaultTns(ele);
+
+ }
+ }
+ return ret;
+ }
+
+
private NodeList wrapNodeList(final NodeList childNodes) {
return new NodeList() {
public int getLength() {