Author: veithen
Date: Mon Sep 6 20:47:43 2010
New Revision: 993150
URL: http://svn.apache.org/viewvc?rev=993150&view=rev
Log:
Refactored an anonymous class to a named class and increased test coverage.
Added:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/ImplicitNamespaceContextWrapper.java
(with props)
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceContextImplicitNamespacesTestCase.java
(with props)
webservices/commons/trunk/modules/axiom/modules/axiom-testutils/src/main/java/org/apache/axiom/testutils/namespace/
webservices/commons/trunk/modules/axiom/modules/axiom-testutils/src/main/java/org/apache/axiom/testutils/namespace/NamespaceContextTestUtils.java
(with props)
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/namespace/ScopedNamespaceContextTest.java
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java?rev=993150&r1=993149&r2=993150&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/BEAStreamReaderWrapper.java
Mon Sep 6 20:47:43 2010
@@ -19,14 +19,11 @@
package org.apache.axiom.util.stax.dialect;
-import java.util.Iterator;
-
import javax.xml.namespace.NamespaceContext;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
-import org.apache.axiom.util.namespace.AbstractNamespaceContext;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
class BEAStreamReaderWrapper extends XMLStreamReaderWrapper implements
DelegatingXMLStreamReader {
@@ -143,20 +140,7 @@ class BEAStreamReaderWrapper extends XML
// The NamespaceContext returned by the reference doesn't handle the
// implicit namespace bindings (for the "xml" and "xmlns" prefixes)
// correctly
- final NamespaceContext parent = super.getNamespaceContext();
- return new AbstractNamespaceContext() {
- protected String doGetNamespaceURI(String prefix) {
- return parent.getNamespaceURI(prefix);
- }
-
- protected String doGetPrefix(String namespaceURI) {
- return parent.getPrefix(namespaceURI);
- }
-
- protected Iterator doGetPrefixes(String namespaceURI) {
- return parent.getPrefixes(namespaceURI);
- }
- };
+ return new
ImplicitNamespaceContextWrapper(super.getNamespaceContext());
}
public XMLStreamReader getParent() {
Added:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/ImplicitNamespaceContextWrapper.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/ImplicitNamespaceContextWrapper.java?rev=993150&view=auto
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/ImplicitNamespaceContextWrapper.java
(added)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/ImplicitNamespaceContextWrapper.java
Mon Sep 6 20:47:43 2010
@@ -0,0 +1,52 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axiom.util.stax.dialect;
+
+import java.util.Iterator;
+
+import javax.xml.namespace.NamespaceContext;
+
+import org.apache.axiom.util.namespace.AbstractNamespaceContext;
+
+/**
+ * {...@link NamespaceContext} wrapper that adds support for the implicit
namespace
+ * bindings for the <tt>xml</tt> and <tt>xmlns</tt> prefixes. This wrapper may
+ * be used to fix the behavior of broken {...@link NamespaceContext}
+ * implementations.
+ */
+class ImplicitNamespaceContextWrapper extends AbstractNamespaceContext {
+ private final NamespaceContext parent;
+
+ public ImplicitNamespaceContextWrapper(NamespaceContext parent) {
+ this.parent = parent;
+ }
+
+ protected String doGetNamespaceURI(String prefix) {
+ return parent.getNamespaceURI(prefix);
+ }
+
+ protected String doGetPrefix(String namespaceURI) {
+ return parent.getPrefix(namespaceURI);
+ }
+
+ protected Iterator doGetPrefixes(String namespaceURI) {
+ return parent.getPrefixes(namespaceURI);
+ }
+}
Propchange:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/ImplicitNamespaceContextWrapper.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/namespace/ScopedNamespaceContextTest.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/namespace/ScopedNamespaceContextTest.java?rev=993150&r1=993149&r2=993150&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/namespace/ScopedNamespaceContextTest.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/namespace/ScopedNamespaceContextTest.java
Mon Sep 6 20:47:43 2010
@@ -27,6 +27,8 @@ import java.util.Set;
import javax.xml.namespace.NamespaceContext;
+import org.apache.axiom.testutils.namespace.NamespaceContextTestUtils;
+
import junit.framework.TestCase;
public class ScopedNamespaceContextTest extends TestCase {
@@ -98,4 +100,8 @@ public class ScopedNamespaceContextTest
assertEquals("p", nc.getPrefix("urn:ns1"));
assertEquals(Collections.singleton("p"), getPrefixes(nc, "urn:ns1"));
}
+
+ public void testImplicitNamespaces() {
+ NamespaceContextTestUtils.checkImplicitNamespaces(new
ScopedNamespaceContext());
+ }
}
Modified:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java?rev=993150&r1=993149&r2=993150&view=diff
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java
(original)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTest.java
Mon Sep 6 20:47:43 2010
@@ -51,6 +51,7 @@ public class DialectTest extends TestSui
addDialectTest(new
GetEncodingFromDetectionTestCase("UnicodeLittleUnmarked", "UTF-16LE"));
addDialectTest(new GetEncodingTestCase());
addDialectTest(new GetEncodingWithCharacterStreamTestCase());
+ addDialectTest(new GetNamespaceContextImplicitNamespacesTestCase());
addDialectTest(new GetTextInPrologTestCase());
addDialectTest(new GetVersionTestCase());
addDialectTest(new IsCharactersOnCDATASectionTestCase());
Added:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceContextImplicitNamespacesTestCase.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceContextImplicitNamespacesTestCase.java?rev=993150&view=auto
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceContextImplicitNamespacesTestCase.java
(added)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceContextImplicitNamespacesTestCase.java
Mon Sep 6 20:47:43 2010
@@ -0,0 +1,35 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.axiom.util.stax.dialect;
+
+import java.io.StringReader;
+
+import javax.xml.stream.XMLInputFactory;
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.testutils.namespace.NamespaceContextTestUtils;
+
+public class GetNamespaceContextImplicitNamespacesTestCase extends
DialectTestCase {
+ protected void runTest() throws Throwable {
+ XMLInputFactory factory = newNormalizedXMLInputFactory();
+ XMLStreamReader reader = factory.createXMLStreamReader(new
StringReader("<root/>"));
+ reader.nextTag();
+
NamespaceContextTestUtils.checkImplicitNamespaces(reader.getNamespaceContext());
+ }
+}
Propchange:
webservices/commons/trunk/modules/axiom/modules/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/GetNamespaceContextImplicitNamespacesTestCase.java
------------------------------------------------------------------------------
svn:eol-style = native
Added:
webservices/commons/trunk/modules/axiom/modules/axiom-testutils/src/main/java/org/apache/axiom/testutils/namespace/NamespaceContextTestUtils.java
URL:
http://svn.apache.org/viewvc/webservices/commons/trunk/modules/axiom/modules/axiom-testutils/src/main/java/org/apache/axiom/testutils/namespace/NamespaceContextTestUtils.java?rev=993150&view=auto
==============================================================================
---
webservices/commons/trunk/modules/axiom/modules/axiom-testutils/src/main/java/org/apache/axiom/testutils/namespace/NamespaceContextTestUtils.java
(added)
+++
webservices/commons/trunk/modules/axiom/modules/axiom-testutils/src/main/java/org/apache/axiom/testutils/namespace/NamespaceContextTestUtils.java
Mon Sep 6 20:47:43 2010
@@ -0,0 +1,49 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.axiom.testutils.namespace;
+
+import java.util.Iterator;
+
+import javax.xml.XMLConstants;
+import javax.xml.namespace.NamespaceContext;
+
+import junit.framework.Assert;
+
+public final class NamespaceContextTestUtils {
+ private NamespaceContextTestUtils() {}
+
+ public static void checkImplicitNamespaces(NamespaceContext nc) {
+ Assert.assertEquals(XMLConstants.XML_NS_URI,
nc.getNamespaceURI(XMLConstants.XML_NS_PREFIX));
+ Assert.assertEquals(XMLConstants.XMLNS_ATTRIBUTE_NS_URI,
nc.getNamespaceURI(XMLConstants.XMLNS_ATTRIBUTE));
+
+ Assert.assertEquals(XMLConstants.XML_NS_PREFIX,
nc.getPrefix(XMLConstants.XML_NS_URI));
+ Assert.assertEquals(XMLConstants.XMLNS_ATTRIBUTE,
nc.getPrefix(XMLConstants.XMLNS_ATTRIBUTE_NS_URI));
+
+ Iterator it = nc.getPrefixes(XMLConstants.XML_NS_URI);
+ Assert.assertTrue(it.hasNext());
+ Assert.assertEquals(XMLConstants.XML_NS_PREFIX, it.next());
+ Assert.assertFalse(it.hasNext());
+
+ it = nc.getPrefixes(XMLConstants.XMLNS_ATTRIBUTE_NS_URI);
+ Assert.assertTrue(it.hasNext());
+ Assert.assertEquals(XMLConstants.XMLNS_ATTRIBUTE, it.next());
+ Assert.assertFalse(it.hasNext());
+ }
+}
Propchange:
webservices/commons/trunk/modules/axiom/modules/axiom-testutils/src/main/java/org/apache/axiom/testutils/namespace/NamespaceContextTestUtils.java
------------------------------------------------------------------------------
svn:eol-style = native