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/08/19 08:37:42 UTC

svn commit: r686964 - /servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java

Author: ffang
Date: Mon Aug 18 23:37:41 2008
New Revision: 686964

URL: http://svn.apache.org/viewvc?rev=686964&view=rev
Log:
[SM-1497]cxf bc provider should handle soap fault mesage without detail element

Modified:
    servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java

Modified: servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java
URL: http://svn.apache.org/viewvc/servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java?rev=686964&r1=686963&r2=686964&view=diff
==============================================================================
--- servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java (original)
+++ servicemix/components/bindings/servicemix-cxf-bc/trunk/src/main/java/org/apache/servicemix/cxfbc/interceptors/JbiInWsdl1Interceptor.java Mon Aug 18 23:37:41 2008
@@ -225,12 +225,25 @@
                 CxfJbiConstants.WSDL11_WRAPPER_NAMESPACE, JbiFault.JBI_FAULT_ROOT));
         Node jbiFaultDetail = null;
         if (message.getVersion() instanceof Soap11) {
-            jbiFaultDetail = doc.importNode(soapFault.getElementsByTagName(
-                "detail").item(0).getFirstChild(), true);
+            NodeList nodeList = soapFault.getElementsByTagName("detail");
+            if (nodeList == null) {
+                //there is no detail in the fault, which means the fault is
+                //thrown during soap header process according to soap spec,
+                //try get the mandatory elemenet faultstring
+                nodeList = soapFault.getElementsByTagName("faultstring");
+            }
+            jbiFaultDetail = doc.importNode(nodeList.item(0).getFirstChild(), true);
         } else {
-            jbiFaultDetail = doc.importNode(soapFault.getElementsByTagName(
-                    "soap:Detail").item(0).getFirstChild(), true);
+            NodeList nodeList = soapFault.getElementsByTagName("soap:Detail");
+            if (nodeList == null) {
+                //there is no detail in the fault, which means the fault is
+                //thrown during soap header process according to soap spec,
+                //try get the mandatory elemenet soap:Reason
+                nodeList = soapFault.getElementsByTagName("soap:Reason");
+            }
+            jbiFaultDetail = doc.importNode(nodeList.item(0).getFirstChild(), true);
         }
+
         SchemaInfo schemaInfo = 
             getOperation(message).getBinding().getService().getSchema(jbiFaultDetail.getNamespaceURI());
         if (schemaInfo != null && !schemaInfo.isElementFormQualified()) {