Index: test/java/javax/jdo/schema/XMLTest.java =================================================================== --- test/java/javax/jdo/schema/XMLTest.java (Revision 381009) +++ test/java/javax/jdo/schema/XMLTest.java (Arbeitskopie) @@ -26,9 +26,12 @@ import java.security.AccessController; import java.security.PrivilegedAction; +import java.util.Arrays; import java.util.ArrayList; import java.util.HashMap; +import java.util.List; import java.util.Map; +import java.util.StringTokenizer; import javax.jdo.JDOFatalException; import javax.jdo.util.AbstractTest; @@ -116,20 +119,19 @@ /** Returns array of files of matching file names. */ protected static File[] getFiles(final String prefix, final String suffix) { + return getFiles(new File(FILE_PREFIX), prefix, suffix); + } + + /** Returns array of files of matching file names. */ + protected static File[] getFiles(File dir, final String prefix, final String suffix) { FilenameFilter filter = new FilenameFilter () { public boolean accept(File file, String name) { return (name.startsWith(prefix) && name.endsWith(suffix)); } }; - File dir = new File(FILE_PREFIX); return dir.listFiles(filter); } - /** */ - public static void main(String args[]) { - BatchTestRunner.run(XMLTest.class); - } - /** Test XSD files jdo.xsd, orm.xsd, and jdoquery.xsd. */ public void testXSD() throws SAXException, IOException { DocumentBuilder builder = null; @@ -410,5 +412,114 @@ } } } + + // ========================================= + // Standalone test tool + // ========================================= + + /** Name of the metadata property, a comma separated list of JDO metadata + * file or directories containing such files. */ + protected static String METADATA_PROP = "metadata"; + + /** Separator character for the metadata property. */ + protected static String DELIM = ","; + + /** Name of the xsd property, a boolean property specifying whether + * metadata describes XSD or DTD based JDO metadata fils. */ + protected static String DTD_PROP = "dtd"; + + /** */ + public static void main(String args[]) { + XMLTest xmlTest = new XMLTest(); + String metadata = System.getProperty(METADATA_PROP); + if ((metadata == null) || (metadata.length() == 0)) { + System.out.println("Missing system property metadata"); + System.exit(1); + } + boolean dtd = Boolean.getBoolean(DTD_PROP); + xmlTest.runXMLTest(metadata, dtd); + } + + /** */ + public void runXMLTest(String metadata, boolean dtd) { + System.out.println("Run " + (dtd?"DTD":"XSD") + " XML parser on " + metadata); + XMLFinder xmlFinder = new XMLFinder(metadata); + DocumentBuilder builder = null; + if (dtd) { + builder = createBuilder(); + checkXML(builder, xmlFinder.getJdoFiles(), true); + checkXML(builder, xmlFinder.getOrmFiles(), true); + checkXML(builder, xmlFinder.getJdoqueryFiles(), true); + } else { + builder = createBuilder(JDO_XSD_NS + " " + JDO_XSD_FILE.toURI().toString()); + checkXML(builder, xmlFinder.getJdoFiles(), true); + builder = createBuilder(ORM_XSD_NS + " " + ORM_XSD_FILE.toURI().toString()); + checkXML(builder, xmlFinder.getOrmFiles(), true); + builder = createBuilder(JDOQL_XSD_NS + " " + JDOQL_XSD_FILE.toURI().toString()); + checkXML(builder, xmlFinder.getJdoqueryFiles(), true); + } + String messages = retrieveMessages(); + if (messages != null) { + System.out.println("Errors"); + System.out.println(messages); + } else { + System.out.println("OK"); + } + System.out.println(); + } + + /** Helper class to find all test JDO metadata files. */ + public static class XMLFinder { + + private List jdoFiles = new ArrayList(); + private List ormFiles = new ArrayList(); + private List jdoqueryFiles = new ArrayList(); + + public XMLFinder(String metadata) { + if ((metadata == null) || (metadata.length() == 0)) { + // nothing to be done + return; + } + + StringTokenizer st = new StringTokenizer(metadata, DELIM); + while (st.hasMoreTokens()) { + appendTestFiles(st.nextToken()); + } + } + + /** */ + private void appendTestFiles(String fileName) { + File file = new File(fileName); + if (file.isDirectory()) { + jdoFiles.addAll(Arrays.asList(getFiles(file, "", ".jdo"))); + ormFiles.addAll(Arrays.asList(getFiles(file, "", ".orm"))); + jdoqueryFiles.addAll(Arrays.asList(getFiles(file, "", ".jdoquery"))); + } else { + if (fileName.endsWith(".jdo")) { + jdoFiles.add(new File(fileName)); + } else if (fileName.endsWith(".orm")) { + ormFiles.add(new File(fileName)); + } else if (fileName.endsWith(".jdoquery")) { + jdoqueryFiles.add(new File(fileName)); + } + } + } + + /** Returns an array of metadata test files with suffix .jdo. */ + public File[] getJdoFiles() { + return (File[])jdoFiles.toArray(new File[jdoFiles.size()]); + } + + /** Returns an array of metadata test files with suffix .orm. */ + public File[] getOrmFiles() { + return (File[])ormFiles.toArray(new File[ormFiles.size()]); + } + + /** Returns an array of metadata test files with suffix .jdoquery. */ + public File[] getJdoqueryFiles() { + return (File[])jdoqueryFiles.toArray(new File[jdoqueryFiles.size()]); + } + + } } Index: project.properties =================================================================== --- project.properties (Revision 381009) +++ project.properties (Arbeitskopie) @@ -15,3 +15,7 @@ maven.junit.sysproperties = javax.xml.parsers.DocumentBuilderFactory basedir javax.xml.parsers.DocumentBuilderFactory=org.apache.xerces.jaxp.DocumentBuilderFactoryImpl + +xmlapis.jarfile = ${pom.getDependencyPath('xml-apis:xml-apis')} +xerces.jarfile = ${pom.getDependencyPath('xerces:xerces')} +junit.jarfile = ${pom.getDependencyPath('junit:junit')} Index: maven.xml =================================================================== --- maven.xml (Revision 381009) +++ maven.xml (Arbeitskopie) @@ -45,4 +45,28 @@ + + + + + + + + + + + + + + + + + + + + + + + Index: project.xml =================================================================== --- project.xml (Revision 381009) +++ project.xml (Arbeitskopie) @@ -42,14 +42,19 @@ xerces - xercesImpl - 2.7.1 + xerces + 2.4.0 - xerces - xmlParserAPIs - 2.6.2 + xml-apis + xml-apis + 1.0.b2 + + junit + junit + 3.8.1 +