Return-Path: X-Original-To: apmail-cxf-commits-archive@www.apache.org Delivered-To: apmail-cxf-commits-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 09E90DE9B for ; Tue, 16 Oct 2012 15:56:36 +0000 (UTC) Received: (qmail 74002 invoked by uid 500); 16 Oct 2012 15:56:35 -0000 Delivered-To: apmail-cxf-commits-archive@cxf.apache.org Received: (qmail 73950 invoked by uid 500); 16 Oct 2012 15:56:35 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 73907 invoked by uid 99); 16 Oct 2012 15:56:35 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Oct 2012 15:56:35 +0000 X-ASF-Spam-Status: No, hits=-2000.0 required=5.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.4] (HELO eris.apache.org) (140.211.11.4) by apache.org (qpsmtpd/0.29) with ESMTP; Tue, 16 Oct 2012 15:56:34 +0000 Received: from eris.apache.org (localhost [127.0.0.1]) by eris.apache.org (Postfix) with ESMTP id A0BD823888E4; Tue, 16 Oct 2012 15:55:51 +0000 (UTC) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r1398860 - in /cxf/trunk/api/src: main/java/org/apache/cxf/staxutils/transform/ test/java/org/apache/cxf/staxutils/transform/ Date: Tue, 16 Oct 2012 15:55:51 -0000 To: commits@cxf.apache.org From: ay@apache.org X-Mailer: svnmailer-1.0.8-patched Message-Id: <20121016155551.A0BD823888E4@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org Author: ay Date: Tue Oct 16 15:55:50 2012 New Revision: 1398860 URL: http://svn.apache.org/viewvc?rev=1398860&view=rev Log: [CXF-4566] StaxTransformFeature outTransformElements does not work when coverting namespaces Modified: cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java cxf/trunk/api/src/test/java/org/apache/cxf/staxutils/transform/OutTransformWriterTest.java Modified: cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java?rev=1398860&r1=1398859&r2=1398860&view=diff ============================================================================== --- cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java (original) +++ cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/DelegatingNamespaceContext.java Tue Oct 16 15:55:50 2012 @@ -82,7 +82,9 @@ class DelegatingNamespaceContext impleme } } String ns = nc.getNamespaceURI(prefix); - addPrefix(prefix, ns); + if (ns != null) { + addPrefix(prefix, ns); + } return ns; } @@ -100,7 +102,9 @@ class DelegatingNamespaceContext impleme return prefixes.get(0).get(actualNs); } String prefix = nc.getPrefix(actualNs); - addPrefix(prefix, actualNs); + if (prefix != null) { + addPrefix(prefix, actualNs); + } return prefix; } Modified: cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java?rev=1398860&r1=1398859&r2=1398860&view=diff ============================================================================== --- cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java (original) +++ cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/InTransformReader.java Tue Oct 16 15:55:50 2012 @@ -306,6 +306,8 @@ public class InTransformReader extends D String actualNs = nsMap.get(ns); if (actualNs != null) { return actualNs; + } else if (ns.equals(reader.getNamespaceURI())) { + return getNamespaceURI(); } else { return ns; } @@ -320,6 +322,8 @@ public class InTransformReader extends D } else { return ""; } + } else if (ns.equals(reader.getNamespaceURI())) { + return getPrefix(); } else { return namespaceContext.getPrefix(ns); } Modified: cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java?rev=1398860&r1=1398859&r2=1398860&view=diff ============================================================================== --- cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java (original) +++ cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/OutTransformWriter.java Tue Oct 16 15:55:50 2012 @@ -49,6 +49,7 @@ public class OutTransformWriter extends private Set dropElements; private Stack> pushedAheadEvents = new Stack>(); private Stack elementsStack = new Stack(); + private String replaceNamespace; private String replaceText; private int currentDepth; private int dropDepth; @@ -95,7 +96,8 @@ public class OutTransformWriter extends return; } String value = nsMap.get(uri); - if (value != null && value.length() == 0) { + if ((value != null && value.length() == 0) + || uri.equals(replaceNamespace)) { return; } @@ -108,11 +110,13 @@ public class OutTransformWriter extends if (defaultNamespace != null && defaultNamespace.equals(uri)) { super.writeDefaultNamespace(uri); + namespaceContext.addPrefix("", uri); } else { if (prefix.length() == 0) { prefix = namespaceContext.findUniquePrefix(uri); } super.writeNamespace(prefix, uri); + namespaceContext.addPrefix(prefix, uri); } writtenUris.get(0).add(uri); } @@ -125,7 +129,8 @@ public class OutTransformWriter extends } String value = nsMap.get(uri); if ((value != null && value.length() == 0) - || (isDefaultNamespaceRedefined() && !isDefaultNamespaceRedefined(uri))) { + || (isDefaultNamespaceRedefined() && !isDefaultNamespaceRedefined(uri)) + || uri.equals(replaceNamespace)) { return; } @@ -135,7 +140,7 @@ public class OutTransformWriter extends return; } super.writeDefaultNamespace(uri); - + namespaceContext.addPrefix("", uri); writtenUris.get(0).add(uri); } @@ -252,6 +257,8 @@ public class OutTransformWriter extends } pushedAheadEvents.push(pe); elementsStack.push(expected); + replaceNamespace = expected.getNamespaceURI().equals(theName.getNamespaceURI()) + ? null : theName.getNamespaceURI(); if (appendProp != null && !replaceContent && appendProp.isChild()) { // ap-post-* @@ -360,16 +367,15 @@ public class OutTransformWriter extends } } else { prefix = qname.getPrefix(); - namespaceContext.addPrefix(prefix, qname.getNamespaceURI()); } - } + } if (isDefaultNamespaceRedefined(qname.getNamespaceURI())) { prefix = ""; } - super.writeStartElement(prefix, qname.getLocalPart(), qname.getNamespaceURI()); - if (writeNs) { + if (writeNs + || !qname.getNamespaceURI().equals(namespaceContext.getNamespaceURI(prefix))) { this.writeNamespace(prefix, qname.getNamespaceURI()); } } Modified: cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java?rev=1398860&r1=1398859&r2=1398860&view=diff ============================================================================== --- cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java (original) +++ cxf/trunk/api/src/main/java/org/apache/cxf/staxutils/transform/TransformUtils.java Tue Oct 16 15:55:50 2012 @@ -97,7 +97,8 @@ public final class TransformUtils { QName lname = XMLUtils.convertStringToQName(entry.getKey()); QName rname = XMLUtils.convertStringToQName(entry.getValue()); elementsMap.put(lname, rname); - if (nsMap != null && !isEmptyQName(rname)) { + if (nsMap != null && !isEmptyQName(rname) + && ("*".equals(lname.getLocalPart()) && "*".equals(rname.getLocalPart()))) { nsMap.put(lname.getNamespaceURI(), rname.getNamespaceURI()); } } Modified: cxf/trunk/api/src/test/java/org/apache/cxf/staxutils/transform/OutTransformWriterTest.java URL: http://svn.apache.org/viewvc/cxf/trunk/api/src/test/java/org/apache/cxf/staxutils/transform/OutTransformWriterTest.java?rev=1398860&r1=1398859&r2=1398860&view=diff ============================================================================== --- cxf/trunk/api/src/test/java/org/apache/cxf/staxutils/transform/OutTransformWriterTest.java (original) +++ cxf/trunk/api/src/test/java/org/apache/cxf/staxutils/transform/OutTransformWriterTest.java Tue Oct 16 15:55:50 2012 @@ -115,9 +115,9 @@ public class OutTransformWriterTest exte String xmlPI = ""; String start = ""; + + " xmlns:ps1=\"http://testbeans.com/v3\">"; String expected2 = xmlPI + start - + ">"; + + ">"; String out = os.toString(); assertTrue("Output \"" + out + "\" does not match expected values", expected1.equals(out) || expected2.equals(out));