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