Repository: cxf
Updated Branches:
  refs/heads/3.1.x-fixes 0da892a50 -> 0ba98f03e


[CXF-6919] For soap 1.2, make sure the fault code is valid

# Conflicts:
#       
rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java


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

Branch: refs/heads/3.1.x-fixes
Commit: c00005724b774580889fcdd1b75ca7e7dd762ccb
Parents: 0da892a
Author: Daniel Kulp <dk...@apache.org>
Authored: Wed Apr 5 11:29:05 2017 -0400
Committer: Daniel Kulp <dk...@apache.org>
Committed: Wed Apr 5 15:16:37 2017 -0400

----------------------------------------------------------------------
 .../apache/cxf/binding/soap/saaj/SAAJUtils.java | 39 +++++++++++++-------
 1 file changed, 25 insertions(+), 14 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/c0000572/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
----------------------------------------------------------------------
diff --git 
a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
 
b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
index f1abe19..0215519 100644
--- 
a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
+++ 
b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJUtils.java
@@ -21,12 +21,14 @@ package org.apache.cxf.binding.soap.saaj;
 
 import javax.xml.namespace.QName;
 import javax.xml.soap.SOAPBody;
+import javax.xml.soap.SOAPConstants;
 import javax.xml.soap.SOAPElement;
 import javax.xml.soap.SOAPException;
 import javax.xml.soap.SOAPFault;
 import javax.xml.soap.SOAPHeader;
 import javax.xml.soap.SOAPMessage;
 
+import org.apache.cxf.binding.soap.Soap12;
 import org.apache.cxf.common.util.StringUtils;
 
 /**
@@ -52,24 +54,33 @@ public final class SAAJUtils {
             return m.getSOAPPart().getEnvelope().getBody();
         }
     }
+    
     public static void setFaultCode(SOAPFault f, QName code) throws 
SOAPException {
-        try {
-            f.setFaultCode(code);
-        } catch (Throwable t) {
-            int count = 1;
-            String pfx = "fc1";
-            while (!StringUtils.isEmpty(f.getNamespaceURI(pfx))) {
-                count++;
-                pfx = "fc" + count;
+        if (f.getNamespaceURI().equals(Soap12.SOAP_NAMESPACE)) {
+            try {
+                f.setFaultCode(code);
+            } catch (SOAPException ex) {
+                f.setFaultCode(SOAPConstants.SOAP_SENDER_FAULT);
+                f.appendFaultSubcode(code);
             }
-            if (code.getNamespaceURI() != null && 
!"".equals(code.getNamespaceURI())) {
-                f.addNamespaceDeclaration(pfx, code.getNamespaceURI());
-            } else {
-                f.addNamespaceDeclaration(pfx, f.getNamespaceURI());
+        } else {
+            try {
+                f.setFaultCode(code);
+            } catch (Throwable t) {
+                int count = 1;
+                String pfx = "fc1";
+                while (!StringUtils.isEmpty(f.getNamespaceURI(pfx))) {
+                    count++;
+                    pfx = "fc" + count;
+                }
+                if (code.getNamespaceURI() != null && 
!"".equals(code.getNamespaceURI())) {
+                    f.addNamespaceDeclaration(pfx, code.getNamespaceURI());
+                } else {
+                    f.addNamespaceDeclaration(pfx, f.getNamespaceURI());
+                }
+                f.setFaultCode(pfx + ":" + code.getLocalPart());
             }
-            f.setFaultCode(pfx + ":" + code.getLocalPart());
         }
-        
     }
     
     public static SOAPElement adjustPrefix(SOAPElement e, String prefix) {

Reply via email to