From 3ef6daa0c059beb1dc02fd57435a88a4392219dc Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Mon, 27 Sep 2010 14:33:08 +0000 Subject: [PATCH] according to the javadocs of JarURLConnection the separator is !/ not ! - this allows dealing with jars in directories that contain a ! in their name, as long as it is not at the end of the directory name. PR 50007 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1001756 13f79535-47bb-0310-9956-ffa450edef68 --- WHATSNEW | 4 + .../tools/ant/helper/ProjectHelper2.java | 2 +- .../org/apache/tools/ant/launch/Locator.java | 2 +- src/tests/antunit/taskdefs/taskdef-test.xml | 107 ++++++++++++++++++ 4 files changed, 113 insertions(+), 2 deletions(-) create mode 100644 src/tests/antunit/taskdefs/taskdef-test.xml diff --git a/WHATSNEW b/WHATSNEW index 4147b0a7a..81a78d7b4 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -153,6 +153,10 @@ Fixed bugs: * runant.py would swallow the first argument if CLASSPATH wasn't set. Bugzilla Report 49963. + * failed to load resources from jar files contained in a + directory that has a "!" in its name. + Bugzilla Report 50007. + Other changes: -------------- diff --git a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java index 681c39691..e5ff216fa 100644 --- a/src/main/org/apache/tools/ant/helper/ProjectHelper2.java +++ b/src/main/org/apache/tools/ant/helper/ProjectHelper2.java @@ -279,7 +279,7 @@ public class ProjectHelper2 extends ProjectHelper { uri = url.toString(); int pling = -1; if (uri.startsWith("jar:file") - && (pling = uri.indexOf("!")) > -1) { + && (pling = uri.indexOf("!/")) > -1) { zf = new ZipFile(org.apache.tools.ant.launch.Locator .fromJarURI(uri), "UTF-8"); inputStream = diff --git a/src/main/org/apache/tools/ant/launch/Locator.java b/src/main/org/apache/tools/ant/launch/Locator.java index 41abfe88a..eb3efe995 100644 --- a/src/main/org/apache/tools/ant/launch/Locator.java +++ b/src/main/org/apache/tools/ant/launch/Locator.java @@ -281,7 +281,7 @@ public final class Locator { * @since Ant1.7.1 */ public static String fromJarURI(String uri) { - int pling = uri.indexOf('!'); + int pling = uri.indexOf("!/"); String jarName = uri.substring("jar:".length(), pling); return fromURI(jarName); } diff --git a/src/tests/antunit/taskdefs/taskdef-test.xml b/src/tests/antunit/taskdefs/taskdef-test.xml new file mode 100644 index 000000000..da5a83ae8 --- /dev/null +++ b/src/tests/antunit/taskdefs/taskdef-test.xml @@ -0,0 +1,107 @@ + + + + + + + + + + + + + + + + + + + + + Hello + + + + + + + + + + + + Hello + + + + + + + + + + + + + Hello + + + + + + + + + + + Hello + + + + + + + + + + + Hello + + +