peterreilly 2003/10/30 08:21:32 Modified: . Tag: ANT_16_BRANCH build.xml WHATSNEW docs/manual/CoreTasks Tag: ANT_16_BRANCH typedef.html src/main/org/apache/tools/ant/taskdefs Tag: ANT_16_BRANCH Definer.java src/testcases/org/apache/tools/ant/taskdefs Tag: ANT_16_BRANCH AntlibTest.java Added: src/etc/testcases/taskdefs Tag: ANT_16_BRANCH test2.antlib.xml Log: Merge bugzilla report 24024 from HEAD allow multiple xml resources of the same name to be loaded PR: 24024 Obtained from: Jesse Glick Revision Changes Path No revision No revision 1.392.2.9 +7 -0 ant/build.xml Index: build.xml =================================================================== RCS file: /home/cvs/ant/build.xml,v retrieving revision 1.392.2.8 retrieving revision 1.392.2.9 diff -u -r1.392.2.8 -r1.392.2.9 --- build.xml 22 Oct 2003 09:28:21 -0000 1.392.2.8 +++ build.xml 30 Oct 2003 16:21:31 -0000 1.392.2.9 @@ -1338,6 +1338,13 @@ <selector refid="conditional-patterns"/> </javac> + + <!-- Used by AntlibTest.testAntlibResource: --> + <jar jarfile="${build.tests}/org/apache/tools/ant/taskdefs/test2-antlib.jar"> + <zipfileset dir="${tests.etc.dir}" fullpath="taskdefs/test.antlib.xml"> + <include name="taskdefs/test2.antlib.xml"/> + </zipfileset> + </jar> </target> <target name="dump-info" depends="dump-sys-properties,run-which"/> 1.503.2.9 +3 -0 ant/WHATSNEW Index: WHATSNEW =================================================================== RCS file: /home/cvs/ant/WHATSNEW,v retrieving revision 1.503.2.8 retrieving revision 1.503.2.9 diff -u -r1.503.2.8 -r1.503.2.9 --- WHATSNEW 29 Oct 2003 21:02:50 -0000 1.503.2.8 +++ WHATSNEW 30 Oct 2003 16:21:31 -0000 1.503.2.9 @@ -58,6 +58,9 @@ by UNICODE escapes. Bugzilla report 23919. +* load all xml resources for typedef not just the first + Bugzilla report 24024 + Changes from Ant 1.6.B1 to Ant 1.6.B2 ===================================== No revision No revision 1.10.2.3 +6 -1 ant/docs/manual/CoreTasks/typedef.html Index: typedef.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTasks/typedef.html,v retrieving revision 1.10.2.2 retrieving revision 1.10.2.3 diff -u -r1.10.2.2 -r1.10.2.3 --- typedef.html 14 Oct 2003 09:59:49 -0000 1.10.2.2 +++ typedef.html 30 Oct 2003 16:21:32 -0000 1.10.2.3 @@ -74,7 +74,12 @@ </tr> <tr> <td valign="top">resource</td> - <td valign="top">Name of the resouce to load definitions from.</td> + <td valign="top"> + Name of the resource to load definitions from. + If there is multiple resources of this name in the classpath, and the + format is "properties", the first resource will be loaded, otherwise + all the resources will be loaded. + </td> <td valign="top" align="center">No</td> </tr> <tr> No revision No revision 1.1.2.1 +0 -0 ant/src/etc/testcases/taskdefs/test2.antlib.xml Index: test2.antlib.xml =================================================================== RCS file: /home/cvs/ant/src/etc/testcases/taskdefs/test2.antlib.xml,v retrieving revision 1.1 retrieving revision 1.1.2.1 diff -u -r1.1 -r1.1.2.1 No revision No revision 1.44.2.1 +42 -19 ant/src/main/org/apache/tools/ant/taskdefs/Definer.java Index: Definer.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/Definer.java,v retrieving revision 1.44 retrieving revision 1.44.2.1 diff -u -r1.44 -r1.44.2.1 --- Definer.java 22 Sep 2003 08:58:58 -0000 1.44 +++ Definer.java 30 Oct 2003 16:21:32 -0000 1.44.2.1 @@ -60,6 +60,7 @@ import java.net.URL; import java.util.Enumeration; import java.util.Locale; +import java.util.NoSuchElementException; import java.util.Properties; import org.apache.tools.ant.AntTypeDefinition; @@ -217,26 +218,41 @@ + "together with file or resource."; throw new BuildException(msg, getLocation()); } - URL url = null; + Enumeration/*<URL>*/ urls = null; if (file != null) { - url = fileToURL(); - } - if (resource != null) { - url = resourceToURL(al); + final URL url = fileToURL(); + urls = new Enumeration() { + private boolean more = true; + public boolean hasMoreElements() { + return more; + } + public Object nextElement() throws NoSuchElementException { + if (more) { + more = false; + return url; + } else { + throw new NoSuchElementException(); + } + } + }; + } else { + urls = resourceToURLs(al); } - if (url == null) { - return; - } + while (urls.hasMoreElements()) { + URL url = (URL) urls.nextElement(); - if (url.toString().toLowerCase(Locale.US).endsWith(".xml")) { - format = Format.XML; - } - - if (format == Format.PROPERTIES) { - loadProperties(al, url); - } else { - loadAntlib(al, url); + int format = this.format; + if (url.toString().toLowerCase(Locale.US).endsWith(".xml")) { + format = Format.XML; + } + + if (format == Format.PROPERTIES) { + loadProperties(al, url); + break; + } else { + loadAntlib(al, url); + } } } } @@ -259,9 +275,16 @@ } } - private URL resourceToURL(ClassLoader classLoader) { - URL ret = classLoader.getResource(resource); - if (ret == null) { + private Enumeration/*<URL>*/ resourceToURLs(ClassLoader classLoader) { + Enumeration ret; + try { + ret = classLoader.getResources(resource); + } catch (IOException e) { + throw new BuildException( + "Could not fetch resources named " + resource, + e, getLocation()); + } + if (!ret.hasMoreElements()) { if (onError != OnError.IGNORE) { log("Could not load definitions from resource " + resource + ". It could not be found.", No revision No revision 1.3.2.1 +15 -0 ant/src/testcases/org/apache/tools/ant/taskdefs/AntlibTest.java Index: AntlibTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/taskdefs/AntlibTest.java,v retrieving revision 1.3 retrieving revision 1.3.2.1 diff -u -r1.3 -r1.3.2.1 --- AntlibTest.java 17 Sep 2003 16:17:56 -0000 1.3 +++ AntlibTest.java 30 Oct 2003 16:21:32 -0000 1.3.2.1 @@ -73,6 +73,15 @@ public void testAntlibFile() { expectLog("antlib.file", "MyTask called"); } + + /** + * Confirms that all matching resources will be used, so that you + * can collect several antlibs in one Definer call. + * @see "http://issues.apache.org/bugzilla/show_bug.cgi?id=24024" + */ + public void testAntlibResource() { + expectLog("antlib.resource", "MyTask called-and-then-MyTask2 called"); + } public void testNsCurrent() { expectLog("ns.current", "Echo2 inside a macroHello from x:p"); @@ -81,6 +90,12 @@ public static class MyTask extends Task { public void execute() { log("MyTask called"); + } + } + + public static class MyTask2 extends Task { + public void execute() { + log("MyTask2 called"); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]