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 2012/03/23 19:31:41 UTC
svn commit: r1304548 - in /cxf/branches/2.5.x-fixes: ./
rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/
rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/
Author: dkulp
Date: Fri Mar 23 18:31:41 2012
New Revision: 1304548
URL: http://svn.apache.org/viewvc?rev=1304548&view=rev
Log:
Merged revisions 1304535 via svn merge from
https://svn.apache.org/repos/asf/cxf/trunk
........
r1304535 | dkulp | 2012-03-23 14:10:40 -0400 (Fri, 23 Mar 2012) | 1 line
[CXF-4181] Fix fault qname namespace handling
........
Added:
cxf/branches/2.5.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/cxf4181.xml
- copied unchanged from r1304535, cxf/trunk/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/cxf4181.xml
Modified:
cxf/branches/2.5.x-fixes/ (props changed)
cxf/branches/2.5.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java
cxf/branches/2.5.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java
Propchange: cxf/branches/2.5.x-fixes/
('svn:mergeinfo' removed)
Propchange: cxf/branches/2.5.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: cxf/branches/2.5.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.5.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java?rev=1304548&r1=1304547&r2=1304548&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java (original)
+++ cxf/branches/2.5.x-fixes/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/interceptor/Soap12FaultInInterceptor.java Fri Mar 23 18:31:41 2012
@@ -27,7 +27,6 @@ import javax.xml.stream.XMLStreamExcepti
import javax.xml.stream.XMLStreamReader;
import javax.xml.xpath.XPathConstants;
-import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
@@ -71,9 +70,23 @@ public class Soap12FaultInInterceptor ex
Map<String, String> ns = new HashMap<String, String>();
ns.put("s", Soap12.SOAP_NAMESPACE);
XPathUtils xu = new XPathUtils(ns);
-
try {
- Document fault = StaxUtils.read(new FragmentStreamReader(reader));
+ Node mainNode = message.getContent(Node.class);
+
+ Node fault = null;
+ if (mainNode != null) {
+ Node bodyNode = (Node) xu.getValue("//s:Body",
+ mainNode,
+ XPathConstants.NODE);
+
+ StaxUtils.readDocElements(bodyNode.getOwnerDocument(),
+ bodyNode,
+ new FragmentStreamReader(reader),
+ false, false);
+ fault = (Element)xu.getValue("//s:Fault", bodyNode, XPathConstants.NODE);
+ } else {
+ fault = StaxUtils.read(new FragmentStreamReader(reader));
+ }
Element el = (Element)xu.getValue("//s:Fault/s:Code/s:Value",
fault,
XPathConstants.NODE);
Modified: cxf/branches/2.5.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.5.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java?rev=1304548&r1=1304547&r2=1304548&view=diff
==============================================================================
--- cxf/branches/2.5.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java (original)
+++ cxf/branches/2.5.x-fixes/rt/bindings/soap/src/test/java/org/apache/cxf/binding/soap/interceptor/SoapFaultSerializerTest.java Fri Mar 23 18:31:41 2012
@@ -178,4 +178,27 @@ public class SoapFaultSerializerTest ext
assertEquals(Soap12.getInstance().getReceiver(), fault2.getFaultCode());
}
+ @Test
+ public void testCXF4181() throws Exception {
+
+ SoapMessage m = new SoapMessage(new MessageImpl());
+ m.setVersion(Soap12.getInstance());
+
+
+ XMLStreamReader reader = StaxUtils.createXMLStreamReader(this.getClass()
+ .getResourceAsStream("cxf4181.xml"));
+
+ m.setContent(XMLStreamReader.class, reader);
+
+ new ReadHeadersInterceptor(null).handleMessage(m);
+ Soap12FaultInInterceptor inInterceptor = new Soap12FaultInInterceptor();
+ inInterceptor.handleMessage(m);
+
+ SoapFault fault2 = (SoapFault)m.getContent(Exception.class);
+ assertNotNull(fault2);
+
+ assertEquals(Soap12.getInstance().getSender(), fault2.getFaultCode());
+ assertEquals(new QName("http://schemas.xmlsoap.org/ws/2005/02/trust", "FailedAuthentication"),
+ fault2.getSubCode());
+ }
}