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