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/c572
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/c572
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/c572
Branch: refs/heads/3.1.x-fixes
Commit: c5724b774580889fcdd1b75ca7e7dd762ccb
Parents: 0da892a
Author: Daniel Kulp
Authored: Wed Apr 5 11:29:05 2017 -0400
Committer: Daniel Kulp
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/c572/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) {