From 091610197b16f10ea5a42845b6b397007925275c Mon Sep 17 00:00:00 2001 From: Steve Loughran Date: Tue, 10 May 2005 16:26:34 +0000 Subject: [PATCH] Patch XMLValidate to create a new parser every time, plus test case that verifies it works. Note that there is an extra change, the return code of doVerify() is now boolean and not void. I have plans for an option to halt the build only if a schema is valid (I'm using ant/gump) to validate XSD files, and want to test that a schema correctly rejects invalid files. This is just a step on the way, while I was in the method. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278246 13f79535-47bb-0310-9956-ffa450edef68 --- src/etc/testcases/taskdefs/optional/schemavalidate.xml | 9 +++++++++ .../tools/ant/taskdefs/optional/XMLValidateTask.java | 10 ++++++++-- .../ant/taskdefs/optional/SchemaValidateTest.java | 3 +++ 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/src/etc/testcases/taskdefs/optional/schemavalidate.xml b/src/etc/testcases/taskdefs/optional/schemavalidate.xml index 13cbb921c..2e8fc8461 100644 --- a/src/etc/testcases/taskdefs/optional/schemavalidate.xml +++ b/src/etc/testcases/taskdefs/optional/schemavalidate.xml @@ -69,6 +69,15 @@ + + + + + + + \ No newline at end of file diff --git a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java b/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java index fd70471b9..0002f709d 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java @@ -285,7 +285,7 @@ public class XMLValidateTask extends Task { "Specify at least one source - " + "a file or a fileset."); } - initValidator(); + if (file != null) { if (file.exists() && file.canRead() && file.isFile()) { @@ -518,7 +518,10 @@ public class XMLValidateTask extends Task { /** * parse the file */ - protected void doValidate(File afile) { + protected boolean doValidate(File afile) { + //for every file, we have a new instance of the validator + initValidator(); + try { log("Validating " + afile.getName() + "... ", Project.MSG_VERBOSE); errorHandler.init(afile); @@ -526,6 +529,7 @@ public class XMLValidateTask extends Task { String uri = FILE_UTILS.toURI(afile.getAbsolutePath()); is.setSystemId(uri); xmlReader.parse(is); + return true; } catch (SAXException ex) { log("Caught when validating: " + ex.toString(), Project.MSG_DEBUG); if (failOnError) { @@ -548,6 +552,8 @@ public class XMLValidateTask extends Task { log(afile + " is not a valid XML document", Project.MSG_ERR); } } + //if we got here. it was as a result of a caught and logged exception. + return false; } /** diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/SchemaValidateTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/SchemaValidateTest.java index 7b4f64a13..e763a9dec 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/optional/SchemaValidateTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/SchemaValidateTest.java @@ -92,4 +92,7 @@ public class SchemaValidateTest extends BuildFileTest { executeTarget("testEqualsSchemasOK"); } + public void testFileset() throws Exception { + executeTarget("testFileset"); + } }