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
+