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/05/09 14:51:22 UTC
svn commit: r1678489 - in /webservices/axiom/trunk:
implementations/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/
modules/axiom-compat/src/test/java/org/apache/axiom/om/impl/jaxp/
testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimens...
Author: veithen
Date: Sat May 9 12:51:21 2015
New Revision: 1678489
URL: http://svn.apache.org/r1678489
Log:
Fix an issue in the SAX unit test code so that we can include large.xml in the set of XML samples we use.
Added:
webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/CoalescingXMLFilter.java (with props)
Modified:
webservices/axiom/trunk/implementations/axiom-dom/src/test/java/org/apache/axiom/om/impl/dom/OMImplementationTest.java
webservices/axiom/trunk/modules/axiom-compat/src/test/java/org/apache/axiom/om/impl/jaxp/StreamSourceToOMResultTest.java
webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/BuilderFactory.java
webservices/axiom/trunk/testing/xml-testsuite/src/main/java/org/apache/axiom/ts/xml/XMLSample.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=1678489&r1=1678488&r2=1678489&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 May 9 12:51:21 2015
@@ -24,6 +24,7 @@ import junit.framework.TestSuite;
import org.apache.axiom.om.impl.dom.factory.OMDOMMetaFactory;
import org.apache.axiom.ts.om.OMTestSuiteBuilder;
import org.apache.axiom.ts.om.builder.TestCreateOMBuilderFromDOM;
+import org.apache.axiom.ts.om.container.TestGetXMLStreamReader;
import org.apache.axiom.ts.om.container.TestSerialize;
import org.apache.axiom.ts.om.document.TestClone;
import org.apache.axiom.ts.om.document.TestDigest;
@@ -63,6 +64,9 @@ public class OMImplementationTest extend
// TODO: test case needing review
builder.exclude(TestClose.class);
+ // TODO: test issue: DOOM doesn't preserve attribute order
+ builder.exclude(TestGetXMLStreamReader.class, "(&(file=large.xml))");
+
return builder.build();
}
}
Modified: webservices/axiom/trunk/modules/axiom-compat/src/test/java/org/apache/axiom/om/impl/jaxp/StreamSourceToOMResultTest.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/modules/axiom-compat/src/test/java/org/apache/axiom/om/impl/jaxp/StreamSourceToOMResultTest.java?rev=1678489&r1=1678488&r2=1678489&view=diff
==============================================================================
--- webservices/axiom/trunk/modules/axiom-compat/src/test/java/org/apache/axiom/om/impl/jaxp/StreamSourceToOMResultTest.java (original)
+++ webservices/axiom/trunk/modules/axiom-compat/src/test/java/org/apache/axiom/om/impl/jaxp/StreamSourceToOMResultTest.java Sat May 9 12:51:21 2015
@@ -31,6 +31,7 @@ import org.apache.axiom.om.OMMetaFactory
import org.apache.axiom.testing.multiton.Multiton;
import org.apache.axiom.testutils.XMLAssertEx;
import org.apache.axiom.testutils.suite.MatrixTestCase;
+import org.apache.axiom.testutils.suite.MatrixTestSuiteBuilder;
import org.apache.axiom.ts.xml.XMLSample;
import org.apache.xalan.processor.TransformerFactoryImpl;
@@ -58,15 +59,16 @@ public class StreamSourceToOMResultTest
}
public static TestSuite suite() {
- TestSuite suite = new TestSuite();
- for (int i=0; i<axiomImplementations.length; i++) {
- for (Iterator it = Multiton.getInstances(XMLSample.class).iterator(); it.hasNext(); ) {
- XMLSample sample = (XMLSample)it.next();
- if (!sample.getShortName().equals("sax-attribute-namespace-bug.xml")) {
- suite.addTest(new StreamSourceToOMResultTest(axiomImplementations[i], sample));
+ MatrixTestSuiteBuilder builder = new MatrixTestSuiteBuilder() {
+ protected void addTests() {
+ for (int i=0; i<axiomImplementations.length; i++) {
+ for (Iterator it = Multiton.getInstances(XMLSample.class).iterator(); it.hasNext(); ) {
+ addTest(new StreamSourceToOMResultTest(axiomImplementations[i], (XMLSample)it.next()));
+ }
}
}
- }
- return suite;
+ };
+ builder.exclude("(|(file=sax-attribute-namespace-bug.xml)(file=large.xml))");
+ return builder.build();
}
}
Modified: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/BuilderFactory.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/BuilderFactory.java?rev=1678489&r1=1678488&r2=1678489&view=diff
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/BuilderFactory.java (original)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/BuilderFactory.java Sat May 9 12:51:21 2015
@@ -114,7 +114,7 @@ public abstract class BuilderFactory ext
factory.setNamespaceAware(true);
factory.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
SAXParser parser = factory.newSAXParser();
- SAXSource source = new SAXSource(parser.getXMLReader(), inputSource);
+ SAXSource source = new SAXSource(new CoalescingXMLFilter(parser.getXMLReader()), inputSource);
return OMXMLBuilderFactory.createOMBuilder(metaFactory.getOMFactory(), source, false);
}
};
Added: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/CoalescingXMLFilter.java
URL: http://svn.apache.org/viewvc/webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/CoalescingXMLFilter.java?rev=1678489&view=auto
==============================================================================
--- webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/CoalescingXMLFilter.java (added)
+++ webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/CoalescingXMLFilter.java Sat May 9 12:51:21 2015
@@ -0,0 +1,279 @@
+/*
+ * 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.ts.dimension;
+
+import java.io.IOException;
+
+import org.xml.sax.Attributes;
+import org.xml.sax.ContentHandler;
+import org.xml.sax.DTDHandler;
+import org.xml.sax.EntityResolver;
+import org.xml.sax.ErrorHandler;
+import org.xml.sax.InputSource;
+import org.xml.sax.Locator;
+import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
+import org.xml.sax.XMLFilter;
+import org.xml.sax.XMLReader;
+import org.xml.sax.ext.LexicalHandler;
+
+final class CoalescingXMLFilter implements XMLFilter, ContentHandler, LexicalHandler {
+ private static final String URI_LEXICAL_HANDLER = "http://xml.org/sax/properties/lexical-handler";
+
+ private XMLReader parent;
+ private ContentHandler contentHandler;
+ private LexicalHandler lexicalHandler;
+ private char[] buffer = new char[1024];
+ private int bufferSize;
+
+ CoalescingXMLFilter(XMLReader parent) {
+ this.parent = parent;
+ }
+
+ @Override
+ public void setParent(XMLReader parent) {
+ this.parent = parent;
+ }
+
+ @Override
+ public XMLReader getParent() {
+ return parent;
+ }
+
+ @Override
+ public void setEntityResolver(EntityResolver resolver) {
+ parent.setEntityResolver(resolver);
+ }
+
+ @Override
+ public EntityResolver getEntityResolver() {
+ return parent.getEntityResolver();
+ }
+
+ @Override
+ public void setDTDHandler(DTDHandler handler) {
+ parent.setDTDHandler(handler);
+ }
+
+ @Override
+ public DTDHandler getDTDHandler() {
+ return parent.getDTDHandler();
+ }
+
+ @Override
+ public void setContentHandler(ContentHandler handler) {
+ contentHandler = handler;
+ }
+
+ @Override
+ public ContentHandler getContentHandler() {
+ return contentHandler;
+ }
+
+ @Override
+ public void setErrorHandler(ErrorHandler handler) {
+ parent.setErrorHandler(handler);
+ }
+
+ @Override
+ public ErrorHandler getErrorHandler() {
+ return parent.getErrorHandler();
+ }
+
+ @Override
+ public Object getProperty(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
+ if (URI_LEXICAL_HANDLER.equals(name)) {
+ return lexicalHandler;
+ } else {
+ return parent.getProperty(name);
+ }
+ }
+
+ @Override
+ public void setProperty(String name, Object value) throws SAXNotRecognizedException, SAXNotSupportedException {
+ if (URI_LEXICAL_HANDLER.equals(name)) {
+ lexicalHandler = (LexicalHandler)value;
+ } else {
+ parent.setProperty(name, value);
+ }
+ }
+
+ @Override
+ public boolean getFeature(String name) throws SAXNotRecognizedException, SAXNotSupportedException {
+ return parent.getFeature(name);
+ }
+
+ @Override
+ public void setFeature(String name, boolean value) throws SAXNotRecognizedException, SAXNotSupportedException {
+ parent.setFeature(name, value);
+ }
+
+ private void setup() throws SAXException {
+ parent.setContentHandler(this);
+ parent.setProperty(URI_LEXICAL_HANDLER, this);
+ }
+
+ @Override
+ public void parse(InputSource input) throws IOException, SAXException {
+ setup();
+ parent.parse(input);
+ }
+
+ @Override
+ public void parse(String systemId) throws IOException, SAXException {
+ setup();
+ parent.parse(systemId);
+ }
+
+ private void flushBuffer() throws SAXException {
+ if (bufferSize > 0) {
+ contentHandler.characters(buffer, 0, bufferSize);
+ }
+ bufferSize = 0;
+ }
+
+ @Override
+ public void setDocumentLocator(Locator locator) {
+ contentHandler.setDocumentLocator(locator);
+ }
+
+ @Override
+ public void startDocument() throws SAXException {
+ contentHandler.startDocument();
+ }
+
+ @Override
+ public void endDocument() throws SAXException {
+ flushBuffer();
+ contentHandler.endDocument();
+ }
+
+ @Override
+ public void startPrefixMapping(String prefix, String uri) throws SAXException {
+ flushBuffer();
+ contentHandler.startPrefixMapping(prefix, uri);
+ }
+
+ @Override
+ public void endPrefixMapping(String prefix) throws SAXException {
+ flushBuffer();
+ contentHandler.endPrefixMapping(prefix);
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName, Attributes atts) throws SAXException {
+ flushBuffer();
+ contentHandler.startElement(uri, localName, qName, atts);
+ }
+
+ @Override
+ public void endElement(String uri, String localName, String qName) throws SAXException {
+ flushBuffer();
+ contentHandler.endElement(uri, localName, qName);
+ }
+
+ @Override
+ public void characters(char[] ch, int start, int length) throws SAXException {
+ int bufferCapacity = buffer.length;
+ while (bufferSize+length > bufferCapacity) {
+ bufferCapacity *= 2;
+ }
+ if (bufferCapacity != buffer.length) {
+ char[] newBuffer = new char[bufferCapacity];
+ System.arraycopy(buffer, 0, newBuffer, 0, bufferSize);
+ buffer = newBuffer;
+ }
+ System.arraycopy(ch, start, buffer, bufferSize, length);
+ bufferSize += length;
+ }
+
+ @Override
+ public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException {
+ flushBuffer();
+ contentHandler.ignorableWhitespace(ch, start, length);
+ }
+
+ @Override
+ public void processingInstruction(String target, String data) throws SAXException {
+ flushBuffer();
+ contentHandler.processingInstruction(target, data);
+ }
+
+ @Override
+ public void skippedEntity(String name) throws SAXException {
+ flushBuffer();
+ contentHandler.skippedEntity(name);
+ }
+
+ @Override
+ public void startDTD(String name, String publicId, String systemId) throws SAXException {
+ flushBuffer();
+ if (lexicalHandler != null) {
+ lexicalHandler.startDTD(name, publicId, systemId);
+ }
+ }
+
+ @Override
+ public void endDTD() throws SAXException {
+ if (lexicalHandler != null) {
+ lexicalHandler.endDTD();
+ }
+ }
+
+ @Override
+ public void startEntity(String name) throws SAXException {
+ flushBuffer();
+ if (lexicalHandler != null) {
+ lexicalHandler.startEntity(name);
+ }
+ }
+
+ @Override
+ public void endEntity(String name) throws SAXException {
+ flushBuffer();
+ if (lexicalHandler != null) {
+ lexicalHandler.endEntity(name);
+ }
+ }
+
+ @Override
+ public void startCDATA() throws SAXException {
+ flushBuffer();
+ if (lexicalHandler != null) {
+ lexicalHandler.startCDATA();
+ }
+ }
+
+ @Override
+ public void endCDATA() throws SAXException {
+ flushBuffer();
+ if (lexicalHandler != null) {
+ lexicalHandler.endCDATA();
+ }
+ }
+
+ @Override
+ public void comment(char[] ch, int start, int length) throws SAXException {
+ flushBuffer();
+ if (lexicalHandler != null) {
+ lexicalHandler.comment(ch, start, length);
+ }
+ }
+}
Propchange: webservices/axiom/trunk/testing/axiom-testsuite/src/main/java/org/apache/axiom/ts/dimension/CoalescingXMLFilter.java
------------------------------------------------------------------------------
svn:eol-style = native
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=1678489&r1=1678488&r2=1678489&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 May 9 12:51:21 2015
@@ -33,8 +33,7 @@ public final class XMLSample extends Mul
/**
* An XML document that is larger than the input buffer of typical XML parsers.
*/
- // TODO: doesn't work yet; triggers a bug in the StAX and SAX builders
-// public static final XMLSample LARGE = new XMLSample("large.xml");
+ public static final XMLSample LARGE = new XMLSample("large.xml");
private final String resourceName;
private final String shortName;