From 037883916993dc557da75f2e611a4384ac145f9c Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Wed, 27 Nov 2002 16:38:57 +0000 Subject: [PATCH] ignored the encoding declaration of files it should validate. PR: 11279 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@273582 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 3 +++ .../taskdefs/optional/xml/iso-2022-jp.xml | 7 ++++++ .../testcases/taskdefs/optional/xml/utf-8.xml | 7 ++++++ .../taskdefs/optional/xmlvalidate.xml | 8 +++++++ .../taskdefs/optional/XMLValidateTask.java | 17 +++++++------- .../taskdefs/optional/XmlValidateTest.java | 22 +++++++++++++++++++ 6 files changed, 56 insertions(+), 8 deletions(-) create mode 100644 src/etc/testcases/taskdefs/optional/xml/iso-2022-jp.xml create mode 100644 src/etc/testcases/taskdefs/optional/xml/utf-8.xml diff --git a/WHATSNEW b/WHATSNEW index b9f966fcc..45c91c0df 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -60,6 +60,9 @@ Fixed bugs: * could append newline characters between concatenated files. +* ignored the specified encoding of the files to + validate. + Other changes: -------------- * The filesetmanifest attribute of has been reenabled. diff --git a/src/etc/testcases/taskdefs/optional/xml/iso-2022-jp.xml b/src/etc/testcases/taskdefs/optional/xml/iso-2022-jp.xml new file mode 100644 index 000000000..22b9aefec --- /dev/null +++ b/src/etc/testcases/taskdefs/optional/xml/iso-2022-jp.xml @@ -0,0 +1,7 @@ + + +]> + +ISO-2022-JP $B$N%U%!%$%k!#(B + diff --git a/src/etc/testcases/taskdefs/optional/xml/utf-8.xml b/src/etc/testcases/taskdefs/optional/xml/utf-8.xml new file mode 100644 index 000000000..5890f800a --- /dev/null +++ b/src/etc/testcases/taskdefs/optional/xml/utf-8.xml @@ -0,0 +1,7 @@ + + +]> + +Liberté, égalité, fraternité! + diff --git a/src/etc/testcases/taskdefs/optional/xmlvalidate.xml b/src/etc/testcases/taskdefs/optional/xmlvalidate.xml index ff71f9125..eebf17218 100644 --- a/src/etc/testcases/taskdefs/optional/xmlvalidate.xml +++ b/src/etc/testcases/taskdefs/optional/xmlvalidate.xml @@ -73,4 +73,12 @@ + + + + + + + + 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 d02d208e9..8ec9664cc 100644 --- a/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java +++ b/src/main/org/apache/tools/ant/taskdefs/optional/XMLValidateTask.java @@ -54,7 +54,7 @@ package org.apache.tools.ant.taskdefs.optional; import java.io.File; -import java.io.FileReader; +import java.io.FileInputStream; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; @@ -70,6 +70,7 @@ import org.apache.tools.ant.types.FileSet; import org.apache.tools.ant.types.Path; import org.apache.tools.ant.types.Reference; import org.apache.tools.ant.types.XMLCatalog; +import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.util.JAXPUtils; import org.xml.sax.EntityResolver; import org.xml.sax.ErrorHandler; @@ -92,6 +93,11 @@ import org.xml.sax.helpers.ParserAdapter; */ public class XMLValidateTask extends Task { + /** + * helper for path -> URI and URI -> path conversions. + */ + private static FileUtils fu = FileUtils.newFileUtils(); + protected static String INIT_FAILED_MSG = "Could not start xml validation: "; @@ -398,13 +404,8 @@ public class XMLValidateTask extends Task { try { log("Validating " + afile.getName() + "... ", Project.MSG_VERBOSE); errorHandler.init(afile); - InputSource is = new InputSource(new FileReader(afile)); - String uri = "file:" + afile.getAbsolutePath().replace('\\', '/'); - for (int index = uri.indexOf('#'); index != -1; - index = uri.indexOf('#')) { - uri = uri.substring(0, index) + "%23" - + uri.substring(index + 1); - } + InputSource is = new InputSource(new FileInputStream(afile)); + String uri = fu.toURI(afile.getAbsolutePath()); is.setSystemId(uri); xmlReader.parse(is); } catch (SAXException ex) { diff --git a/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java b/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java index 60eeb50d7..954e59d75 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/optional/XmlValidateTest.java @@ -179,4 +179,26 @@ public class XmlValidateTest extends BuildFileTest { } } } + + /** + * iso-2022-jp.xml is valid but wouldn't get recognized on systems + * with a different native encoding. + * + * Bug 11279 + */ + public void testIso2022Jp() { + executeTarget("testIso2022Jp"); + } + + /** + * utf-8.xml is invalid as it contains non-UTF-8 characters, but + * would pass on systems with a native iso-8859-1 (or similar) + * encoding. + * + * Bug 11279 + */ + public void testUtf8() { + expectBuildException("testUtf8", "invalid characters in file"); + } + }