[CXF-6900, CXF-6908] More fixes for namespace issues with decrypted faults and adding faults to SAAJ envelopes
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/e158c96d Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/e158c96d Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/e158c96d Branch: refs/heads/master-jaxrs-2.1 Commit: e158c96dc5b1e218cd523c6e2d1232813f8c24f4 Parents: 05b1252 Author: Daniel Kulp <dk...@apache.org> Authored: Mon May 23 12:21:56 2016 -0400 Committer: Daniel Kulp <dk...@apache.org> Committed: Mon May 23 12:22:49 2016 -0400 ---------------------------------------------------------------------- .../cxf/binding/soap/saaj/SAAJStreamWriter.java | 24 ++++++++++++++++++++ rt/ws/security/pom.xml | 5 ++++ .../cxf/ws/security/wss4j/StaxSerializer.java | 2 +- .../systest/ws/security/SecurityPolicyTest.java | 2 -- 4 files changed, 30 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/cxf/blob/e158c96d/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java ---------------------------------------------------------------------- diff --git a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java index 185079b..8c13b1e 100644 --- a/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java +++ b/rt/bindings/soap/src/main/java/org/apache/cxf/binding/soap/saaj/SAAJStreamWriter.java @@ -18,6 +18,8 @@ */ package org.apache.cxf.binding.soap.saaj; +import java.util.Iterator; + import javax.xml.namespace.QName; import javax.xml.soap.SOAPBody; import javax.xml.soap.SOAPElement; @@ -26,6 +28,7 @@ import javax.xml.soap.SOAPException; import javax.xml.soap.SOAPFault; import javax.xml.soap.SOAPHeader; import javax.xml.soap.SOAPPart; +import javax.xml.stream.XMLStreamException; import org.w3c.dom.DocumentFragment; import org.w3c.dom.Element; @@ -33,9 +36,11 @@ import org.w3c.dom.Node; import org.apache.cxf.common.util.StringUtils; import org.apache.cxf.staxutils.OverlayW3CDOMStreamWriter; +import org.apache.cxf.staxutils.W3CNamespaceContext; import static org.apache.cxf.binding.soap.saaj.SAAJUtils.adjustPrefix; + public final class SAAJStreamWriter extends OverlayW3CDOMStreamWriter { private final SOAPPart part; private final SOAPEnvelope envelope; @@ -69,6 +74,25 @@ public final class SAAJStreamWriter extends OverlayW3CDOMStreamWriter { isOverlaid = false; } + @Override + public String getPrefix(String nsuri) throws XMLStreamException { + if (isOverlaid && part != null && getCurrentNode() == null) { + Node nd = part.getFirstChild(); + while (nd != null) { + if (nd instanceof Element) { + Iterator<String> it = new W3CNamespaceContext((Element)nd).getPrefixes(nsuri); + if (it.hasNext()) { + return it.next(); + } else { + nd = null; + } + } else { + nd = nd.getNextSibling(); + } + } + } + return super.getPrefix(nsuri); + } private String getEnvelopeURI() throws SOAPException { if (uri == null) { uri = getEnvelope().getElementName().getURI(); http://git-wip-us.apache.org/repos/asf/cxf/blob/e158c96d/rt/ws/security/pom.xml ---------------------------------------------------------------------- diff --git a/rt/ws/security/pom.xml b/rt/ws/security/pom.xml index eba4d01..c88110c 100644 --- a/rt/ws/security/pom.xml +++ b/rt/ws/security/pom.xml @@ -79,6 +79,11 @@ <optional>true</optional> </dependency> <dependency> + <groupId>org.codehaus.woodstox</groupId> + <artifactId>woodstox-core-asl</artifactId> + <optional>true</optional> + </dependency> + <dependency> <groupId>net.sf.ehcache</groupId> <artifactId>ehcache</artifactId> <version>${cxf.ehcache.version}</version> http://git-wip-us.apache.org/repos/asf/cxf/blob/e158c96d/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/StaxSerializer.java ---------------------------------------------------------------------- diff --git a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/StaxSerializer.java b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/StaxSerializer.java index 3acb598..6927500 100644 --- a/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/StaxSerializer.java +++ b/rt/ws/security/src/main/java/org/apache/cxf/ws/security/wss4j/StaxSerializer.java @@ -95,7 +95,7 @@ public class StaxSerializer extends AbstractSerializer { } return true; } catch (Throwable t) { - t.printStackTrace(); + //ignore, not much we can do but hope the decrypted XML is stand alone ok } return false; } http://git-wip-us.apache.org/repos/asf/cxf/blob/e158c96d/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/security/SecurityPolicyTest.java ---------------------------------------------------------------------- diff --git a/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/security/SecurityPolicyTest.java b/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/security/SecurityPolicyTest.java index 4cd7b66..fb0eea0 100644 --- a/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/security/SecurityPolicyTest.java +++ b/systests/ws-security/src/test/java/org/apache/cxf/systest/ws/security/SecurityPolicyTest.java @@ -68,7 +68,6 @@ import org.example.contract.doubleit.DoubleItPortTypeHeader; import org.example.schema.doubleit.DoubleIt; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; public class SecurityPolicyTest extends AbstractBusClientServerTestBase { @@ -702,7 +701,6 @@ public class SecurityPolicyTest extends AbstractBusClientServerTestBase { } @Test - @Ignore("CXF-6908") public void testFault() throws Exception { SpringBusFactory bf = new SpringBusFactory();