You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by dk...@apache.org on 2014/07/30 19:57:22 UTC

git commit: [CXF-5911] Make sure the xml:lang attribute is recorded for SOAP 1.1 faults. If the user specifies a lang for a SOAP 1.1 fault, write it out. (otherwise, don't)

Repository: cxf
Updated Branches:
  refs/heads/master cb4bc5312 -> 3bf3d07c9


[CXF-5911] Make sure the xml:lang attribute is recorded for SOAP 1.1 faults.
If the user specifies a lang for a SOAP 1.1 fault, write it out.  (otherwise, don't)


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/3bf3d07c
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/3bf3d07c
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/3bf3d07c

Branch: refs/heads/master
Commit: 3bf3d07c954536d099274ebf1c5690e84ff3a423
Parents: cb4bc53
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Jul 30 13:55:55 2014 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Wed Jul 30 13:55:55 2014 -0400

----------------------------------------------------------------------
 .../binding/soap/interceptor/Soap11FaultInInterceptor.java    | 7 ++++++-
 .../binding/soap/interceptor/Soap11FaultOutInterceptor.java   | 5 +++++
 .../binding/soap/interceptor/Soap12FaultOutInterceptor.java   | 2 +-
 .../src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java  | 3 ++-
 4 files changed, 14 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/3bf3d07c/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultInInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultInInterceptor.java b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultInInterceptor.java
index ff0b05a..2943f77 100644
--- a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultInInterceptor.java
+++ b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultInInterceptor.java
@@ -32,6 +32,7 @@ import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.binding.soap.SoapMessage;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.interceptor.ClientFaultConverter;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.phase.Phase;
@@ -57,12 +58,13 @@ public class Soap11FaultInInterceptor extends AbstractSoapInterceptor {
         QName faultCode = null;
         String role = null;
         Element detail = null;
-        
+        String lang = null;
         try {
             while (reader.nextTag() == XMLStreamReader.START_ELEMENT) {
                 if (reader.getLocalName().equals("faultcode")) {
                     faultCode = StaxUtils.readQName(reader);
                 } else if (reader.getLocalName().equals("faultstring")) {
+                    lang = reader.getAttributeValue("http://www.w3.org/XML/1998/namespace", "lang");
                     exMessage = reader.getElementText();
                 } else if (reader.getLocalName().equals("faultactor")) {
                     role = reader.getElementText();
@@ -84,6 +86,9 @@ public class Soap11FaultInInterceptor extends AbstractSoapInterceptor {
         SoapFault fault = new SoapFault(exMessage, faultCode);
         fault.setDetail(detail);
         fault.setRole(role);
+        if (!StringUtils.isEmpty(lang)) {
+            fault.setLang(lang);
+        }
         return fault;
     }
 }

http://git-wip-us.apache.org/repos/asf/cxf/blob/3bf3d07c/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultOutInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultOutInterceptor.java b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultOutInterceptor.java
index b7a9bd1..45ad4ad 100644
--- a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultOutInterceptor.java
+++ b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap11FaultOutInterceptor.java
@@ -33,6 +33,7 @@ import org.apache.cxf.binding.soap.SoapFault;
 import org.apache.cxf.binding.soap.SoapMessage;
 import org.apache.cxf.binding.soap.interceptor.Soap12FaultOutInterceptor.Soap12FaultOutInterceptorInternal;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.interceptor.Fault;
 import org.apache.cxf.phase.Phase;
 import org.apache.cxf.staxutils.StaxUtils;
@@ -90,6 +91,10 @@ public class Soap11FaultOutInterceptor extends AbstractSoapInterceptor {
                 writer.writeEndElement();
 
                 writer.writeStartElement("faultstring");
+                String lang = f.getLang();
+                if (!StringUtils.isEmpty(lang)) {
+                    writer.writeAttribute("xml", "http://www.w3.org/XML/1998/namespace", "lang", lang);
+                }
                 writer.writeCharacters(getFaultMessage(message, fault));
                 writer.writeEndElement();
                 prepareStackTrace(message, fault);

http://git-wip-us.apache.org/repos/asf/cxf/blob/3bf3d07c/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java
----------------------------------------------------------------------
diff --git a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java
index ea0cf4b..e0affa9 100644
--- a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java
+++ b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java
@@ -112,7 +112,7 @@ public class Soap12FaultOutInterceptor extends AbstractSoapInterceptor {
                 writer.writeStartElement(defaultPrefix, "Reason", ns);
                 writer.writeStartElement(defaultPrefix, "Text", ns);
                 String lang = f.getLang();
-                if (lang == null || lang.equalsIgnoreCase("")) {
+                if (StringUtils.isEmpty(lang)) {
                     lang = getLangCode();
                 }
                 writer.writeAttribute("xml", "http://www.w3.org/XML/1998/namespace", "lang", lang);

http://git-wip-us.apache.org/repos/asf/cxf/blob/3bf3d07c/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
----------------------------------------------------------------------
diff --git a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
index 3b97d5d..d155ab8 100644
--- a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
+++ b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
@@ -52,6 +52,7 @@ import org.apache.cxf.binding.soap.saaj.SAAJFactoryResolver;
 import org.apache.cxf.binding.soap.saaj.SAAJUtils;
 import org.apache.cxf.common.i18n.Message;
 import org.apache.cxf.common.logging.LogUtils;
+import org.apache.cxf.common.util.StringUtils;
 import org.apache.cxf.endpoint.Client;
 import org.apache.cxf.endpoint.ClientCallback;
 import org.apache.cxf.endpoint.Endpoint;
@@ -218,7 +219,7 @@ public class JaxWsClientProxy extends org.apache.cxf.frontend.ClientProxy implem
             }
             final boolean isSoap11 = SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(soapFault.getNamespaceURI());
             
-            if (isSoap11 || ((SoapFault)ex).getLang() == null) {
+            if (StringUtils.isEmpty(((SoapFault)ex).getLang())) {
                 soapFault.setFaultString(((SoapFault)ex).getReason());
             } else {
                 soapFault.setFaultString(((SoapFault)ex).getReason(), stringToLocale(((SoapFault)ex).getLang()));