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 2011/03/11 05:38:39 UTC
svn commit: r1080446 - in /cxf/branches/2.3.x-fixes: ./
rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java
Author: dkulp
Date: Fri Mar 11 04:38:39 2011
New Revision: 1080446
URL: http://svn.apache.org/viewvc?rev=1080446&view=rev
Log:
Merged revisions 1080438 via svnmerge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1080438 | dkulp | 2011-03-10 23:24:21 -0500 (Thu, 10 Mar 2011) | 2 lines
[CXF-3342] Port some fixes from the Soap11FaultOutInterceptor
Pointers from Aaron Pieper applied
........
Modified:
cxf/branches/2.3.x-fixes/ (props changed)
cxf/branches/2.3.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java
Propchange: cxf/branches/2.3.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.3.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.3.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java?rev=1080446&r1=1080445&r2=1080446&view=diff
==============================================================================
--- cxf/branches/2.3.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java (original)
+++ cxf/branches/2.3.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultOutInterceptor.java Fri Mar 11 04:38:39 2011
@@ -66,25 +66,30 @@ public class Soap12FaultOutInterceptor e
Fault f = (Fault)message.getContent(Exception.class);
SoapFault fault = SoapFault.createFault(f, message.getVersion());
-
+
try {
Map<String, String> namespaces = fault.getNamespaces();
for (Map.Entry<String, String> e : namespaces.entrySet()) {
writer.writeNamespace(e.getKey(), e.getValue());
}
-
+
String ns = message.getVersion().getNamespace();
- String defaultPrefix = StaxUtils.getUniquePrefix(writer, ns, true);
-
- writer.writeStartElement(defaultPrefix, "Fault", ns);
-
+ String defaultPrefix = writer.getPrefix(ns);
+ if (defaultPrefix == null) {
+ defaultPrefix = StaxUtils.getUniquePrefix(writer, ns, false);
+ writer.writeStartElement(defaultPrefix, "Fault", ns);
+ writer.writeNamespace(defaultPrefix, ns);
+ } else {
+ writer.writeStartElement(defaultPrefix, "Fault", ns);
+ }
+
writer.writeStartElement(defaultPrefix, "Code", ns);
writer.writeStartElement(defaultPrefix, "Value", ns);
writer.writeCharacters(fault.getCodeString(getFaultCodePrefix(writer, fault.getFaultCode()),
defaultPrefix));
writer.writeEndElement();
-
+
if (fault.getSubCode() != null) {
writer.writeStartElement(defaultPrefix, "Subcode", ns);
writer.writeStartElement(defaultPrefix, "Value", ns);
@@ -95,7 +100,7 @@ public class Soap12FaultOutInterceptor e
writer.writeEndElement();
}
writer.writeEndElement();
-
+
writer.writeStartElement(defaultPrefix, "Reason", ns);
writer.writeStartElement(defaultPrefix, "Text", ns);
writer.writeAttribute("xml", "http://www.w3.org/XML/1998/namespace", "lang", getLangCode());
@@ -106,27 +111,27 @@ public class Soap12FaultOutInterceptor e
}
writer.writeEndElement();
writer.writeEndElement();
-
+
if (fault.hasDetails()) {
Element detail = fault.getDetail();
writer.writeStartElement(defaultPrefix, "Detail", ns);
-
+
Node node = detail.getFirstChild();
while (node != null) {
StaxUtils.writeNode(node, writer, true);
node = node.getNextSibling();
}
-
+
// Details
writer.writeEndElement();
}
-
+
if (fault.getRole() != null) {
writer.writeStartElement(defaultPrefix, "Role", ns);
writer.writeCharacters(fault.getRole());
writer.writeEndElement();
}
-
+
// Fault
writer.writeEndElement();
} catch (Exception xe) {
@@ -134,7 +139,7 @@ public class Soap12FaultOutInterceptor e
throw f;
}
}
-
+
private String getLangCode() {
String code = LOG.getResourceBundle().getLocale().getLanguage();
if (StringUtils.isEmpty(code)) {