You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2016/03/05 18:34:31 UTC

svn commit: r1733743 - in /webservices/axiom/trunk: implementations/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/ implementations/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/ testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/...

Author: veithen
Date: Sat Mar  5 17:34:31 2016
New Revision: 1733743

URL: http://svn.apache.org/viewvc?rev=1733743&view=rev
Log:
Add more assertions about the behavior of getXMLStreamReader, uncovering an issue that occurs in a rare corner case.

Modified:
    webservices/axiom/trunk/implementations/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java
    webservices/axiom/trunk/implementations/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
    webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderWithPreserveNamespaceContext.java

Modified: webservices/axiom/trunk/implementations/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java?rev=1733743&r1=1733742&r2=1733743&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java (original)
+++ webservices/axiom/trunk/implementations/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java Sat Mar  5 17:34:31 2016
@@ -25,6 +25,7 @@ import org.apache.axiom.om.impl.dom.fact
 import org.apache.axiom.ts.om.OMTestSuiteBuilder;
 import org.apache.axiom.ts.om.document.TestDigest;
 import org.apache.axiom.ts.om.element.TestGetChildrenWithName4;
+import org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithPreserveNamespaceContext;
 import org.apache.axiom.ts.om.element.sr.TestClose;
 import org.apache.axiom.ts.om.node.TestInsertSiblingAfterOnChild;
 import org.apache.axiom.ts.om.node.TestInsertSiblingBeforeOnChild;
@@ -50,6 +51,9 @@ public class OMImplementationTest extend
         // TODO: test case needing review
         builder.exclude(TestClose.class);
         
+        // TODO: the namespace context is different when cache=false
+        builder.exclude(TestGetXMLStreamReaderWithPreserveNamespaceContext.class, "(cache=false)");
+        
         return builder.build();
     }
 }

Modified: webservices/axiom/trunk/implementations/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/implementations/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java?rev=1733743&r1=1733742&r2=1733743&view=diff
==============================================================================
--- webservices/axiom/trunk/implementations/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java (original)
+++ webservices/axiom/trunk/implementations/axiom-impl/src/test/java/org/apache/axiom/om/impl/llom/OMImplementationTest.java Sat Mar  5 17:34:31 2016
@@ -24,6 +24,7 @@ import junit.framework.TestSuite;
 import org.apache.axiom.om.impl.llom.factory.OMLinkedListMetaFactory;
 import org.apache.axiom.ts.om.OMTestSuiteBuilder;
 import org.apache.axiom.ts.om.document.TestDigest;
+import org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithPreserveNamespaceContext;
 import org.apache.axiom.ts.om.element.sr.TestClose;
 import org.apache.axiom.ts.om.node.TestInsertSiblingAfterOnChild;
 import org.apache.axiom.ts.om.node.TestInsertSiblingBeforeOnChild;
@@ -45,6 +46,9 @@ public class OMImplementationTest extend
         // TODO: test case needing review
         builder.exclude(TestClose.class);
         
+        // TODO: the namespace context is different when cache=false
+        builder.exclude(TestGetXMLStreamReaderWithPreserveNamespaceContext.class, "(cache=false)");
+        
         return builder.build();
     }
 }

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java?rev=1733743&r1=1733742&r2=1733743&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/OMTestSuiteBuilder.java Sat Mar  5 17:34:31 2016
@@ -354,7 +354,10 @@ public class OMTestSuiteBuilder extends
         addTest(new org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithNamespaceURIInterning(metaFactory));
         addTest(new org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithoutCachingPartiallyBuilt(metaFactory));
         addTest(new org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithoutCachingPartiallyBuiltModified(metaFactory));
-        addTest(new org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithPreserveNamespaceContext(metaFactory));
+        addTest(new org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithPreserveNamespaceContext(metaFactory, true, true));
+        addTest(new org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithPreserveNamespaceContext(metaFactory, true, false));
+        addTest(new org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithPreserveNamespaceContext(metaFactory, false, true));
+        addTest(new org.apache.axiom.ts.om.element.TestGetXMLStreamReaderWithPreserveNamespaceContext(metaFactory, false, false));
         addTest(new org.apache.axiom.ts.om.element.TestHasNameWithNamespace(metaFactory));
         addTest(new org.apache.axiom.ts.om.element.TestHasNameWithoutNamespace(metaFactory));
         addTest(new org.apache.axiom.ts.om.element.TestIsCompleteAfterAddingIncompleteChild(metaFactory));

Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderWithPreserveNamespaceContext.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderWithPreserveNamespaceContext.java?rev=1733743&r1=1733742&r2=1733743&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderWithPreserveNamespaceContext.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/om/element/TestGetXMLStreamReaderWithPreserveNamespaceContext.java Sat Mar  5 17:34:31 2016
@@ -18,11 +18,13 @@
  */
 package org.apache.axiom.ts.om.element;
 
+import static com.google.common.truth.Truth.assertThat;
+
 import java.io.InputStream;
-import java.util.Arrays;
 import java.util.HashSet;
 import java.util.Set;
 
+import javax.xml.namespace.NamespaceContext;
 import javax.xml.stream.XMLStreamReader;
 
 import org.apache.axiom.om.OMElement;
@@ -33,26 +35,46 @@ import org.apache.axiom.ts.AxiomTestCase
 
 /**
  * Tests the behavior of
- * {@link OMElement#getXMLStreamReader(boolean, OMXMLStreamReaderConfiguration)} with
- * {@link OMXMLStreamReaderConfiguration#isPreserveNamespaceContext()} set to <code>true</code>.
+ * {@link OMElement#getXMLStreamReader(boolean, OMXMLStreamReaderConfiguration)} in conjunction with
+ * {@link OMXMLStreamReaderConfiguration#isPreserveNamespaceContext()}.
  */
 public class TestGetXMLStreamReaderWithPreserveNamespaceContext extends AxiomTestCase {
-    public TestGetXMLStreamReaderWithPreserveNamespaceContext(OMMetaFactory metaFactory) {
+    private final boolean preserveNamespaceContext;
+    private final boolean cache;
+
+    public TestGetXMLStreamReaderWithPreserveNamespaceContext(OMMetaFactory metaFactory, boolean preserveNamespaceContext, boolean cache) {
         super(metaFactory);
+        this.preserveNamespaceContext = preserveNamespaceContext;
+        addTestParameter("preserveNamespaceContext", preserveNamespaceContext);
+        this.cache = cache;
+        addTestParameter("cache", cache);
     }
 
     protected void runTest() throws Throwable {
         InputStream in = TestGetXMLStreamReaderWithPreserveNamespaceContext.class.getResourceAsStream("AXIOM-114.xml");
         OMElement root = OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(), in).getDocumentElement();
+        root.declareNamespace("http://example.org", "p");
         OMXMLStreamReaderConfiguration configuration = new OMXMLStreamReaderConfiguration();
-        configuration.setPreserveNamespaceContext(true);
-        XMLStreamReader reader = root.getFirstElement().getFirstElement().getXMLStreamReader(true, configuration);
-        assertEquals(XMLStreamReader.START_ELEMENT, reader.next());
-        assertEquals(4, reader.getNamespaceCount());
+        configuration.setPreserveNamespaceContext(preserveNamespaceContext);
+        XMLStreamReader reader = root.getFirstElement().getFirstElement().getXMLStreamReader(cache, configuration);
+        assertThat(reader.next()).isEqualTo(XMLStreamReader.START_ELEMENT);
         Set<String> prefixes = new HashSet<>();
-        for (int i=0; i<4; i++) {
+        for (int i=0; i<reader.getNamespaceCount(); i++) {
             prefixes.add(reader.getNamespacePrefix(i));
         }
-        assertEquals(new HashSet<>(Arrays.asList(new String[] { "soapenv", "xsd", "xsi", "ns"} )), prefixes);
+        if (preserveNamespaceContext) {
+            assertThat(prefixes).containsExactly("soapenv", "xsd", "xsi", "ns", "p");
+        } else {
+            assertThat(prefixes).containsExactly("ns");
+        }
+        // Make sure that we start pulling events directly from the underlying parser.
+        reader.nextTag();
+        // The following assertions are true irrespective of the value of preserveNamespaceContext.
+        assertThat(reader.getNamespaceURI("xsd")).isEqualTo("http://www.w3.org/2001/XMLSchema");
+        // Namespace declarations added programmatically on an ancestor should also be visible.
+        assertThat(reader.getNamespaceURI("p")).isEqualTo("http://example.org");
+        NamespaceContext nc = reader.getNamespaceContext();
+        assertThat(nc.getPrefix("http://www.w3.org/2001/XMLSchema")).isEqualTo("xsd");
+        assertThat(nc.getPrefix("http://example.org")).isEqualTo("p");
     }
 }