You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by as...@apache.org on 2013/08/08 14:37:43 UTC

svn commit: r1511748 - in /cxf/branches/2.7.x-fixes: ./ rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/ rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/

Author: asoldano
Date: Thu Aug  8 12:37:43 2013
New Revision: 1511748

URL: http://svn.apache.org/r1511748
Log:
Merged revisions 1511398 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r1511398 | asoldano | 2013-08-07 18:59:13 +0200 (Wed, 07 Aug 2013) | 2 lines
  
  [CXF-5186] Properly parse soap 1.2 faul reason xml:lang attribute
........

Modified:
    cxf/branches/2.7.x-fixes/   (props changed)
    cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java
    cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
    cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java

Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
    svn:mergeinfo = /cxf/trunk:1511398

Propchange: cxf/branches/2.7.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java?rev=1511748&r1=1511747&r2=1511748&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java Thu Aug  8 12:37:43 2013
@@ -74,6 +74,7 @@ public class Soap12FaultInInterceptor ex
         String role = null;
         String node = null;
         Element detail = null;
+        String lang = null;
 
         Map<String, String> ns = new HashMap<String, String>();
         ns.put("s", Soap12.SOAP_NAMESPACE);
@@ -122,6 +123,10 @@ public class Soap12FaultInInterceptor ex
                                              fault,
                                              XPathConstants.STRING);
             
+            lang = (String) xu.getValue("//s:Fault/s:Reason/s:Text/@xml:lang", 
+                                             fault,
+                                             XPathConstants.STRING);
+            
             Node detailNode = (Node) xu.getValue("//s:Fault/s:Detail",
                                                  fault,
                                                  XPathConstants.NODE);
@@ -152,6 +157,7 @@ public class Soap12FaultInInterceptor ex
         fault.setDetail(detail);
         fault.setRole(role);
         fault.setNode(node);
+        fault.setLang(lang);
         return fault;
     }
 

Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java?rev=1511748&r1=1511747&r2=1511748&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/JaxWsClientProxy.java Thu Aug  8 12:37:43 2013
@@ -24,6 +24,7 @@ import java.io.IOException;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.net.HttpURLConnection;
+import java.util.Locale;
 import java.util.Map;
 import java.util.concurrent.Future;
 import java.util.logging.Logger;
@@ -213,14 +214,20 @@ public class JaxWsClientProxy extends or
                     //ignore
                 }
             }
-            soapFault.setFaultString(((SoapFault)ex).getReason());
+            final boolean isSoap11 = SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(soapFault.getNamespaceURI());
+            
+            if (isSoap11 || ((SoapFault)ex).getLang() == null) {
+                soapFault.setFaultString(((SoapFault)ex).getReason());
+            } else {
+                soapFault.setFaultString(((SoapFault)ex).getReason(), stringToLocale(((SoapFault)ex).getLang()));
+            }
+            
             SAAJUtils.setFaultCode(soapFault, ((SoapFault)ex).getFaultCode());
             String role = ((SoapFault)ex).getRole();
             if (role != null) {
                 soapFault.setFaultActor(role);
             }
-            if (((SoapFault)ex).getSubCodes() != null 
-                && !SOAPConstants.URI_NS_SOAP_1_1_ENVELOPE.equals(soapFault.getNamespaceURI())) {
+            if (((SoapFault)ex).getSubCodes() != null && !isSoap11) {
                 // set the subcode only if it is supported (e.g, 1.2)
                 for (QName fsc : ((SoapFault)ex).getSubCodes()) {
                     soapFault.appendFaultSubcode(fsc);    
@@ -246,6 +253,17 @@ public class JaxWsClientProxy extends or
         }      
         return soapFault;
     }
+    
+    private static Locale stringToLocale(String locale) {
+        String parts[] = locale.split("_", -1);
+        if (parts.length == 1) {
+            return new Locale(parts[0]);
+        } else if (parts.length == 2) {
+            return new Locale(parts[0], parts[1]);
+        } else {
+            return new Locale(parts[0], parts[1], parts[2]);
+        }
+    }
 
     private boolean addressChanged(String address) {
         return !(address == null

Modified: cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java?rev=1511748&r1=1511747&r2=1511748&view=diff
==============================================================================
--- cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java (original)
+++ cxf/branches/2.7.x-fixes/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java Thu Aug  8 12:37:43 2013
@@ -101,7 +101,7 @@ public class WebFaultOutInterceptor exte
                     String convertedLang = lang.getLanguage();
                     String country = lang.getCountry();
                     if (country.length() > 0) {
-                        convertedLang = convertedLang + '-' + country;
+                        convertedLang = convertedLang + '_' + country;
                     }
                     f.setLang(convertedLang);
                 }