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 2015/11/07 13:38:15 UTC
svn commit: r1713115 - in /webservices/axiom/trunk:
axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/
axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/
systests/integration-tests/src/test/java/org/apache/axiom/om/
testing/xml-testsu...
Author: veithen
Date: Sat Nov 7 12:38:14 2015
New Revision: 1713115
URL: http://svn.apache.org/viewvc?rev=1713115&view=rev
Log:
AXIOM-475: Extend the support for DTDReader to more StAX implementations.
Added:
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java
- copied, changed from r1711547, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1DTDReaderImpl.java
webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestDTDReader.java (with props)
webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.dtd
webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.xml (with props)
Removed:
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1DTDReaderImpl.java
Modified:
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/Woodstox3StreamReaderWrapper.java
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1StreamReaderWrapper.java
webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java
webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuite.java
webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuiteBuilder.java
webservices/axiom/trunk/systests/integration-tests/src/test/java/org/apache/axiom/om/SAXResultSAXParserTest.java
webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSample.java
webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java
Copied: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java (from r1711547, webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1DTDReaderImpl.java)
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java?p2=webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java&p1=webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1DTDReaderImpl.java&r1=1711547&r2=1713115&rev=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1DTDReaderImpl.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/AbstractDTDReader.java Sat Nov 7 12:38:14 2015
@@ -23,20 +23,22 @@ import javax.xml.stream.XMLStreamReader;
import org.apache.axiom.ext.stax.DTDReader;
-final class XLXP1DTDReaderImpl implements DTDReader {
+abstract class AbstractDTDReader implements DTDReader {
private final XMLStreamReader reader;
private String rootName;
private String publicId;
private String systemId;
- XLXP1DTDReaderImpl(XMLStreamReader reader) {
+ AbstractDTDReader(XMLStreamReader reader) {
this.reader = reader;
}
+ protected abstract String getDocumentTypeDeclaration(XMLStreamReader reader);
+
private void parse() {
if (rootName == null) {
try {
- Scanner scanner = new Scanner((String)reader.getProperty("javax.xml.stream.dtd.declaration"));
+ Scanner scanner = new Scanner(getDocumentTypeDeclaration(reader));
scanner.expect("<!DOCTYPE");
scanner.skipSpace();
rootName = scanner.getName();
Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/SJSXPStreamReaderWrapper.java Sat Nov 7 12:38:14 2015
@@ -24,6 +24,7 @@ import javax.xml.namespace.QName;
import javax.xml.stream.XMLStreamException;
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.ext.stax.DTDReader;
import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
@@ -32,6 +33,20 @@ class SJSXPStreamReaderWrapper extends X
super(parent);
}
+ @Override
+ public Object getProperty(String name) {
+ if (DTDReader.PROPERTY.equals(name)) {
+ return new AbstractDTDReader(getParent()) {
+ @Override
+ protected String getDocumentTypeDeclaration(XMLStreamReader reader) {
+ return reader.getText();
+ }
+ };
+ } else {
+ return super.getProperty(name);
+ }
+ }
+
public String getCharacterEncodingScheme() {
if (getEventType() == START_DOCUMENT) {
return super.getCharacterEncodingScheme();
Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/Woodstox3StreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/Woodstox3StreamReaderWrapper.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/Woodstox3StreamReaderWrapper.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/Woodstox3StreamReaderWrapper.java Sat Nov 7 12:38:14 2015
@@ -22,8 +22,9 @@ import javax.xml.namespace.NamespaceCont
import javax.xml.stream.XMLStreamReader;
import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
+import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
-class Woodstox3StreamReaderWrapper extends StAX2StreamReaderWrapper implements DelegatingXMLStreamReader {
+class Woodstox3StreamReaderWrapper extends XMLStreamReaderWrapper implements DelegatingXMLStreamReader {
public Woodstox3StreamReaderWrapper(XMLStreamReader reader) {
super(reader);
}
Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1StreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1StreamReaderWrapper.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1StreamReaderWrapper.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXP1StreamReaderWrapper.java Sat Nov 7 12:38:14 2015
@@ -22,21 +22,11 @@ package org.apache.axiom.util.stax.diale
import javax.xml.namespace.NamespaceContext;
import javax.xml.stream.XMLStreamReader;
-import org.apache.axiom.ext.stax.DTDReader;
-
class XLXP1StreamReaderWrapper extends XLXPStreamReaderWrapper {
public XLXP1StreamReaderWrapper(XMLStreamReader parent) {
super(parent);
}
- public Object getProperty(String name) {
- if (DTDReader.PROPERTY.equals(name)) {
- return new XLXP1DTDReaderImpl(getParent());
- } else {
- return super.getProperty(name);
- }
- }
-
public String getEncoding() {
// Under some circumstances, some versions of XLXP return an empty string instead of null
String encoding = super.getEncoding();
Modified: webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java (original)
+++ webservices/axiom/trunk/axiom-api/src/main/java/org/apache/axiom/util/stax/dialect/XLXPStreamReaderWrapper.java Sat Nov 7 12:38:14 2015
@@ -20,6 +20,7 @@ package org.apache.axiom.util.stax.diale
import javax.xml.stream.XMLStreamReader;
+import org.apache.axiom.ext.stax.DTDReader;
import org.apache.axiom.ext.stax.DelegatingXMLStreamReader;
import org.apache.axiom.util.stax.wrapper.XMLStreamReaderWrapper;
@@ -28,6 +29,20 @@ class XLXPStreamReaderWrapper extends XM
super(parent);
}
+ @Override
+ public Object getProperty(String name) {
+ if (DTDReader.PROPERTY.equals(name)) {
+ return new AbstractDTDReader(getParent()) {
+ @Override
+ protected String getDocumentTypeDeclaration(XMLStreamReader reader) {
+ return (String)reader.getProperty("javax.xml.stream.dtd.declaration");
+ }
+ };
+ } else {
+ return super.getProperty(name);
+ }
+ }
+
public boolean isCharacters() {
// XLXP returns true for SPACE events as well; this is not correct
return getEventType() == CHARACTERS;
Modified: webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuite.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuite.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuite.java (original)
+++ webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuite.java Sat Nov 7 12:38:14 2015
@@ -63,6 +63,9 @@ public class DialectTestSuite extends Te
// SJSXP and XLXP don't report whitespace in prolog
builder.exclude(TestGetTextInProlog.class, "(|(implementation=sjsxp-1.0.1.jar)(implementation=com.ibm.ws.prereq.xlxp.jar)(implementation=xml.jar))");
+ // DTDReader is not supported for all StAX implementations
+ builder.exclude(TestDTDReader.class, "(|(implementation=stax-1.2.0.jar)(implementation=wstx-asl-3.*))");
+
// TODO: investigate why this fails; didn't occur with the old TestCloseInputStream test
builder.exclude(TestClose.class, "(&(implementation=stax-1.2.0.jar)(type=InputStream))");
Modified: webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuiteBuilder.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuiteBuilder.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuiteBuilder.java (original)
+++ webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/DialectTestSuiteBuilder.java Sat Nov 7 12:38:14 2015
@@ -52,6 +52,7 @@ public class DialectTestSuiteBuilder ext
addTest(new TestDisallowDoctypeDeclWithDenialOfService(staxImpl));
addTest(new TestDisallowDoctypeDeclWithExternalSubset(staxImpl));
addTest(new TestDisallowDoctypeDeclWithInternalSubset(staxImpl));
+ addTest(new TestDTDReader(staxImpl));
addTest(new TestEnableCDataReporting(staxImpl));
addTest(new TestGetAttributeNamespaceWithNoPrefix(staxImpl));
addTest(new TestGetCharacterEncodingScheme(staxImpl));
Added: webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestDTDReader.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestDTDReader.java?rev=1713115&view=auto
==============================================================================
--- webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestDTDReader.java (added)
+++ webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestDTDReader.java Sat Nov 7 12:38:14 2015
@@ -0,0 +1,53 @@
+/*
+ * 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 static com.google.common.truth.Truth.assertThat;
+
+import java.io.InputStream;
+
+import javax.xml.stream.XMLStreamReader;
+
+import org.apache.axiom.ext.stax.DTDReader;
+import org.apache.axiom.ts.xml.XMLSample;
+
+public class TestDTDReader extends DialectTestCase {
+ public TestDTDReader(StAXImplementation staxImpl) {
+ super(staxImpl);
+ }
+
+ @Override
+ protected void runTest() throws Throwable {
+ InputStream in = XMLSample.DTD_FULL.getInputStream();
+ try {
+ XMLStreamReader reader = staxImpl.newNormalizedXMLInputFactory().createXMLStreamReader(XMLSample.DTD_FULL.getUrl().toString(), in);
+ while (reader.next() != XMLStreamReader.DTD) {
+ // Just loop
+ }
+ DTDReader dtdReader = (DTDReader)reader.getProperty(DTDReader.PROPERTY);
+ assertThat(dtdReader).isNotNull();
+ assertThat(dtdReader.getRootName()).isEqualTo("root");
+ assertThat(dtdReader.getSystemId()).isEqualTo("dtd-full.dtd");
+ assertThat(dtdReader.getPublicId()).isEqualTo("-//TEST//Dummy DTD//EN");
+ reader.close();
+ } finally {
+ in.close();
+ }
+ }
+}
Propchange: webservices/axiom/trunk/axiom-api/src/test/java/org/apache/axiom/util/stax/dialect/TestDTDReader.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: webservices/axiom/trunk/systests/integration-tests/src/test/java/org/apache/axiom/om/SAXResultSAXParserTest.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/systests/integration-tests/src/test/java/org/apache/axiom/om/SAXResultSAXParserTest.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/systests/integration-tests/src/test/java/org/apache/axiom/om/SAXResultSAXParserTest.java (original)
+++ webservices/axiom/trunk/systests/integration-tests/src/test/java/org/apache/axiom/om/SAXResultSAXParserTest.java Sat Nov 7 12:38:14 2015
@@ -75,7 +75,7 @@ public class SAXResultSAXParserTest exte
private static void addTests(TestSuite suite, SAXParserFactory factory, String name) throws Exception {
for (XMLSample file : getInstances(XMLSample.class)) {
// TODO
- if (file.getName().equals("entity-reference-external-subset.xml") && name.equals("crimson")) {
+ if (file.hasExternalSubset() && name.equals("crimson")) {
continue;
}
suite.addTest(new SAXResultSAXParserTest(
Modified: webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSample.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSample.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSample.java (original)
+++ webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSample.java Sat Nov 7 12:38:14 2015
@@ -45,6 +45,12 @@ public class XMLSample extends MessageSa
public static final XMLSample ENTITY_REFERENCE_NESTED = new XMLSample("entity-reference-nested.xml");
+ /**
+ * An XML document that has a document type declaration with a system ID, public ID and internal
+ * subset.
+ */
+ public static final XMLSample DTD_FULL = new XMLSample("dtd-full.xml");
+
private static final DocumentBuilder documentBuilder;
static {
Modified: webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java?rev=1713115&r1=1713114&r2=1713115&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java (original)
+++ webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSampleProperties.java Sat Nov 7 12:38:14 2015
@@ -67,7 +67,7 @@ final class XMLSampleProperties {
}
reader.close();
} catch (XMLStreamException ex) {
- throw new Error("Unable to parse " + sample.getUrl());
+ throw new Error("Unable to parse " + sample.getUrl(), ex);
}
this.hasDTD = hasDTD;
this.hasExternalSubset = hasExternalSubset;
Added: webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.dtd
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.dtd?rev=1713115&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.dtd (added)
+++ webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.dtd Sat Nov 7 12:38:14 2015
@@ -0,0 +1 @@
+<!ELEMENT root (#PCDATA)>
Added: webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.xml
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.xml?rev=1713115&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.xml (added)
+++ webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.xml Sat Nov 7 12:38:14 2015
@@ -0,0 +1,7 @@
+<?xml version="1.0"?>
+<!DOCTYPE root PUBLIC "-//TEST//Dummy DTD//EN" "dtd-full.dtd" [
+ <!ENTITY testentref "test">
+]>
+<root>
+ &testentref;
+</root>
Propchange: webservices/axiom/trunk/testing/xml-testsuite/src/main/resources/org/apache/axiom/ts/xml/dtd-full.xml
------------------------------------------------------------------------------
svn:eol-style = native