From 4381941b64afaebf2fde86152f383adb5a9c420f Mon Sep 17 00:00:00 2001 From: Ivo Studensky Date: Tue, 25 Jul 2017 16:04:34 +0200 Subject: [PATCH] CXF-7453 check subCodes only in case of SOAP 1.2 --- .../interceptors/WebFaultOutInterceptor.java | 28 +++++++++++-------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java index 49e94eda1be..c68d5443e95 100644 --- a/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java +++ b/rt/frontend/jaxws/src/main/java/org/apache/cxf/jaxws/interceptors/WebFaultOutInterceptor.java @@ -35,6 +35,7 @@ import org.apache.cxf.annotations.SchemaValidation.SchemaValidationType; import org.apache.cxf.binding.soap.SoapFault; +import org.apache.cxf.binding.soap.SoapVersion; import org.apache.cxf.common.classloader.ClassLoaderUtils; import org.apache.cxf.common.i18n.BundleUtils; import org.apache.cxf.common.logging.LogUtils; @@ -99,20 +100,23 @@ public void handleMessage(Message message) throws Fault { sf = (SOAPFaultException)thr.getCause(); } if (sf != null) { - if (f instanceof SoapFault) { - for (Iterator it = CastUtils.cast(sf.getFault().getFaultSubcodes()); it.hasNext();) { - ((SoapFault) f).addSubCode(it.next()); + SoapVersion soapVersion = (SoapVersion)message.get(SoapVersion.class.getName()); + if (soapVersion != null && soapVersion.getVersion() != 1.1) { + if (f instanceof SoapFault) { + for (Iterator it = CastUtils.cast(sf.getFault().getFaultSubcodes()); it.hasNext();) { + ((SoapFault) f).addSubCode(it.next()); + } } - } - if (sf.getFault().getFaultReasonLocales().hasNext()) { - Locale lang = (Locale) sf.getFault() - .getFaultReasonLocales().next(); - String convertedLang = lang.getLanguage(); - String country = lang.getCountry(); - if (country.length() > 0) { - convertedLang = convertedLang + '-' + country; + if (sf.getFault().getFaultReasonLocales().hasNext()) { + Locale lang = (Locale) sf.getFault() + .getFaultReasonLocales().next(); + String convertedLang = lang.getLanguage(); + String country = lang.getCountry(); + if (country.length() > 0) { + convertedLang = convertedLang + '-' + country; + } + f.setLang(convertedLang); } - f.setLang(convertedLang); } message.setContent(Exception.class, f); }