diff --git a/java/tests/resolver/build.xml b/java/tests/resolver/build.xml new file mode 100644 index 0000000..29cc427 --- /dev/null +++ b/java/tests/resolver/build.xml @@ -0,0 +1,143 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/tests/resolver/catalogs/extended.xml b/java/tests/resolver/catalogs/extended.xml new file mode 100644 index 0000000..aefe1e0 --- /dev/null +++ b/java/tests/resolver/catalogs/extended.xml @@ -0,0 +1,12 @@ + + + + + + + + + diff --git a/java/tests/resolver/catalogs/jarcatalog.xml b/java/tests/resolver/catalogs/jarcatalog.xml new file mode 100644 index 0000000..6e42279 --- /dev/null +++ b/java/tests/resolver/catalogs/jarcatalog.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/java/tests/resolver/dtds/test2.dtd b/java/tests/resolver/dtds/test2.dtd new file mode 100644 index 0000000..4bcf603 --- /dev/null +++ b/java/tests/resolver/dtds/test2.dtd @@ -0,0 +1,4 @@ + + + + diff --git a/java/tests/resolver/src/DynamicTest.java b/java/tests/resolver/src/DynamicTest.java new file mode 100644 index 0000000..294d580 --- /dev/null +++ b/java/tests/resolver/src/DynamicTest.java @@ -0,0 +1,125 @@ +// ManagerTest.java - A test of multiple Catalog Managers + +/* + * The Apache Software License, Version 1.1 + * + * + * Copyright (c) 2001 The Apache Software Foundation. All rights + * reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in + * the documentation and/or other materials provided with the + * distribution. + * + * 3. The end-user documentation included with the redistribution, + * if any, must include the following acknowledgment: + * "This product includes software developed by the + * Apache Software Foundation (http://www.apache.org/)." + * Alternately, this acknowledgment may appear in the software itself, + * if and wherever such third-party acknowledgments normally appear. + * + * 4. The names "Xalan" and "Apache Software Foundation" must + * not be used to endorse or promote products derived from this + * software without prior written permission. For written + * permission, please contact apache@apache.org. + * + * 5. Products derived from this software may not be called "Apache", + * nor may "Apache" appear in their name, without prior written + * permission of the Apache Software Foundation. + * + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED + * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE + * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR + * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF + * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, + * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT + * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + * ==================================================================== + * + * This software consists of voluntary contributions made by many + * individuals on behalf of the Apache Software Foundation and was + * originally based on software copyright (c) 2001, International + * Business Machines Corporation., http://www.ibm.com. For more + * information on the Apache Software Foundation, please see + * . + */ + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Vector; +import java.util.Date; +import java.util.GregorianCalendar; +import java.net.MalformedURLException; + +import org.xml.sax.*; +import org.xml.sax.helpers.*; + +import javax.xml.parsers.*; + +import org.apache.xml.resolver.tools.ResolvingXMLReader; +import org.apache.xml.resolver.Catalog; +import org.apache.xml.resolver.CatalogManager; +import org.apache.xml.resolver.helpers.Debug; +import org.apache.xml.resolver.apps.XParseError; + +/** + *

A simple command-line XML parsing application.

+ * + *

This class tests the ability of the XML Catalog code to support + * multiple catalog manager instances. + *

+ * + *

Usage: ManagerTest document.xml

+ * + *

The process ends with error-level 1, if there errors.

+ * + * @see org.apache.xml.resolver.tools.ResolvingXMLReader + * + * @author Norman Walsh + * Norman.Walsh@Sun.COM + * + * @version 1.0 + */ +public class DynamicTest extends TestParser +{ + /** The main entry point */ + public static void main (String[] args) + throws FileNotFoundException, IOException { + + for (int i=0; i. + */ + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Vector; +import java.util.Date; +import java.util.GregorianCalendar; +import java.net.MalformedURLException; + +import org.xml.sax.*; +import org.xml.sax.helpers.*; + +import javax.xml.parsers.*; + +import org.apache.xml.resolver.tools.ResolvingXMLReader; +import org.apache.xml.resolver.Catalog; +import org.apache.xml.resolver.CatalogManager; +import org.apache.xml.resolver.helpers.Debug; +import org.apache.xml.resolver.apps.XParseError; + +/** + *

A simple command-line XML parsing application.

+ * + *

This class tests the ability of the XML Catalog code to support + * multiple catalog manager instances. + *

+ * + *

Usage: ManagerTest document.xml

+ * + *

The process ends with error-level 1, if there errors.

+ * + * @see org.apache.xml.resolver.tools.ResolvingXMLReader + * + * @author Norman Walsh + * Norman.Walsh@Sun.COM + * + * @version 1.0 + */ +public class ExtendedTest extends TestParser +{ + /** The main entry point */ + public static void main (String[] args) + throws FileNotFoundException, IOException { + + for (int i=0; i. + */ + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Vector; +import java.util.Date; +import java.util.GregorianCalendar; +import java.net.MalformedURLException; + +import org.xml.sax.*; +import org.xml.sax.helpers.*; + +import javax.xml.parsers.*; + +import org.apache.xml.resolver.tools.ResolvingXMLReader; +import org.apache.xml.resolver.Catalog; +import org.apache.xml.resolver.CatalogManager; +import org.apache.xml.resolver.helpers.Debug; +import org.apache.xml.resolver.apps.XParseError; + +/** + *

A simple command-line XML parsing application.

+ * + *

This class tests the ability of the XML Catalog code to support + * multiple catalog manager instances. + *

+ * + *

Usage: ManagerTest document.xml

+ * + *

The process ends with error-level 1, if there errors.

+ * + * @see org.apache.xml.resolver.tools.ResolvingXMLReader + * + * @author Norman Walsh + * Norman.Walsh@Sun.COM + * + * @version 1.0 + */ +public class JarTest extends TestParser +{ + /** The main entry point */ + public static void main (String[] args) + throws FileNotFoundException, IOException { + + for (int i=0; i. + */ + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Vector; +import java.util.Date; +import java.util.GregorianCalendar; +import java.net.MalformedURLException; + +import org.xml.sax.*; +import org.xml.sax.helpers.*; + +import javax.xml.parsers.*; + +import org.apache.xml.resolver.tools.ResolvingXMLReader; +import org.apache.xml.resolver.Catalog; +import org.apache.xml.resolver.CatalogManager; +import org.apache.xml.resolver.helpers.Debug; +import org.apache.xml.resolver.apps.XParseError; + +/** + *

A simple command-line XML parsing application.

+ * + *

This class tests the ability of the XML Catalog code to support + * multiple catalog manager instances. + *

+ * + *

Usage: ManagerTest document.xml

+ * + *

The process ends with error-level 1, if there errors.

+ * + * @see org.apache.xml.resolver.tools.ResolvingXMLReader + * + * @author Norman Walsh + * Norman.Walsh@Sun.COM + * + * @version 1.0 + */ +public class StaticTest extends TestParser +{ + /** The main entry point */ + public static void main (String[] args) + throws FileNotFoundException, IOException { + + for (int i=0; i. + */ + +import java.io.FileNotFoundException; +import java.io.IOException; +import java.util.Vector; +import java.util.Date; +import java.util.GregorianCalendar; +import java.net.MalformedURLException; + +import org.xml.sax.*; +import org.xml.sax.helpers.*; + +import javax.xml.parsers.*; + +import org.apache.xml.resolver.tools.ResolvingXMLReader; +import org.apache.xml.resolver.Catalog; +import org.apache.xml.resolver.CatalogManager; +import org.apache.xml.resolver.helpers.Debug; +import org.apache.xml.resolver.apps.XParseError; + +/** + *

A simple command-line XML parsing application.

+ * + *

This class tests the ability of the XML Catalog code to support + * multiple catalog manager instances. + *

+ * + *

Usage: ManagerTest document.xml

+ * + *

The process ends with error-level 1, if there errors.

+ * + * @see org.apache.xml.resolver.tools.ResolvingXMLReader + * + * @author Norman Walsh + * Norman.Walsh@Sun.COM + * + * @version 1.0 + */ +public abstract class TestParser +{ + protected static String xmlfile = null; + protected static int maxErrs = 10; + protected static boolean nsAware = true; + protected static boolean validating = true; + protected static boolean showErrors = true; + protected static boolean showWarnings = true; + protected static Vector catalogFiles = new Vector(); + + protected static void parse(ResolvingXMLReader reader) + throws MalformedURLException, FileNotFoundException, IOException { + try { + reader.setFeature("http://xml.org/sax/features/namespaces", nsAware); + reader.setFeature("http://xml.org/sax/features/validation", validating); + } catch (SAXException e) { + // nop; + } + + Catalog catalog = reader.getCatalog(); + + System.out.println("Parsing with " + catalog); + + for (int count = 0; count < catalogFiles.size(); count++) { + String file = (String) catalogFiles.elementAt(count); + catalog.parseCatalog(file); + } + + XParseError xpe = new XParseError(showErrors, showWarnings); + xpe.setMaxMessages(maxErrs); + reader.setErrorHandler(xpe); + + String parseType = validating ? "validating" : "well-formed"; + String nsType = nsAware ? "namespace-aware" : "namespace-ignorant"; + if (maxErrs > 0) { + System.out.println("Attempting " + + parseType + + ", " + + nsType + + " parse"); + } + + Date startTime = new Date(); + + try { + reader.parse(xmlfile); + } catch (SAXException sx) { + System.out.println("SAX Exception: " + sx); + } catch (Exception e) { + e.printStackTrace(); + } + + Date endTime = new Date(); + + long millisec = endTime.getTime() - startTime.getTime(); + long secs = 0; + long mins = 0; + long hours = 0; + + if (millisec > 1000) { + secs = millisec / 1000; + millisec = millisec % 1000; + } + + if (secs > 60) { + mins = secs / 60; + secs = secs % 60; + } + + if (mins > 60) { + hours = mins / 60; + mins = mins % 60; + } + + if (maxErrs > 0) { + System.out.print("Parse "); + if (xpe.getFatalCount() > 0) { + System.out.print("failed "); + } else { + System.out.print("succeeded "); + System.out.print("("); + if (hours > 0) { + System.out.print(hours + ":"); + } + if (hours > 0 || mins > 0) { + System.out.print(mins + ":"); + } + System.out.print(secs + "." + millisec); + System.out.print(") "); + } + System.out.print("with "); + + int errCount = xpe.getErrorCount(); + int warnCount = xpe.getWarningCount(); + + if (errCount > 0) { + System.out.print(errCount + " error"); + System.out.print(errCount > 1 ? "s" : ""); + System.out.print(" and "); + } else { + System.out.print("no errors and "); + } + + if (warnCount > 0) { + System.out.print(warnCount + " warning"); + System.out.print(warnCount > 1 ? "s" : ""); + System.out.print("."); + } else { + System.out.print("no warnings."); + } + + System.out.println(""); + } + } +} diff --git a/java/tests/resolver/test2.xml b/java/tests/resolver/test2.xml new file mode 100644 index 0000000..559c9f2 --- /dev/null +++ b/java/tests/resolver/test2.xml @@ -0,0 +1,5 @@ + + + + diff --git a/java/tests/resolver/test3.xml b/java/tests/resolver/test3.xml new file mode 100644 index 0000000..006a70c --- /dev/null +++ b/java/tests/resolver/test3.xml @@ -0,0 +1,5 @@ + + + +