peterreilly 2004/02/23 08:40:55 Modified: src/main/org/apache/tools/ant/types FileList.java docs/manual/CoreTypes filelist.html src/testcases/org/apache/tools/ant/types FileListTest.java Added: src/etc/testcases/types filelist.xml Log: Add nested file element to file list to allow filenames to contain white space and commas Revision Changes Path 1.15 +35 -0 ant/src/main/org/apache/tools/ant/types/FileList.java Index: FileList.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/FileList.java,v retrieving revision 1.14 retrieving revision 1.15 diff -u -r1.14 -r1.15 --- FileList.java 23 Feb 2004 15:42:24 -0000 1.14 +++ FileList.java 23 Feb 2004 16:40:55 -0000 1.15 @@ -159,4 +159,39 @@ } } + /** + * Inner class corresponding to the <file> nested element. + */ + public static class FileName { + private String name; + + /** + * The name attribute of the file element. + * + * @param name the name of a file to add to the file list. + */ + public void setName(String name) { + this.name = name; + } + + /** + * @return the name of the file for this element. + */ + public String getName() { + return name; + } + } + + /** + * Add a nested <file> nested element. + * + * @param name a configured file element with a name. + */ + public void addConfiguredFile(FileName name) { + if (name.getName() == null) { + throw new BuildException( + "No name specified in nested file element"); + } + filenames.addElement(name.getName()); + } } 1.9 +35 -6 ant/docs/manual/CoreTypes/filelist.html Index: filelist.html =================================================================== RCS file: /home/cvs/ant/docs/manual/CoreTypes/filelist.html,v retrieving revision 1.8 retrieving revision 1.9 diff -u -r1.8 -r1.9 --- filelist.html 9 Feb 2004 21:50:07 -0000 1.8 +++ filelist.html 23 Feb 2004 16:40:55 -0000 1.9 @@ -16,9 +16,8 @@ specified as a list of files, relative to the specified directory, with no support for wildcard expansion (filenames with wildcards will be included in the list unchanged). -FileLists can appear inside tasks that support this feature or at the -same level as <code><target></code> (i.e., as children of -<code><project></code>). +FileLists can appear inside tasks that support this feature or as stand-alone +types. </p> <table border="1" cellpadding="2" cellspacing="0"> <tr> @@ -33,11 +32,30 @@ </tr> <tr> <td valign="top">files</td> - <td valign="top">The list of file names.</td> - <td valign="top" align="center">Yes</td> + <td valign="top">The list of file names. This is a list of + file name separated by whitespace, or by commas.</td> + <td valign="top" align="center"> + Yes, unless there is a nested file element</td> </tr> </table> - + <h4>Nested Element: file</h4> + <p> + This represents a file name. The nested element allows filenames containing + white space and commas. + </p> + <p><em>Since ant 1.7</em></p> + <table border="1" cellpadding="2" cellspacing="0"> + <tr> + <td valign="top"><b>Attribute</b></td> + <td valign="top"><b>Description</b></td> + <td align="center" valign="top"><b>Required</b></td> + </tr> + <tr> + <td valign="top">name</td> + <td valign="top">The name of the file.</td> + <td valign="top" align="center">Yes</td> + </tr> +</table> <h4>Examples</h4> <blockquote><pre> <filelist @@ -63,6 +81,17 @@ <blockquote><pre> <filelist refid="docfiles"/> +</pre></blockquote> + +<p>Same files as the example above.</p> + +<blockquote><pre> +<filelist + id="docfiles" + dir="${doc.src}"> + <file name="foo.xml"/> + <file name="bar.xml"/> +</filelist> </pre></blockquote> <p>Same files as the example above.</p> 1.6 +18 -13 ant/src/testcases/org/apache/tools/ant/types/FileListTest.java Index: FileListTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/types/FileListTest.java,v retrieving revision 1.5 retrieving revision 1.6 diff -u -r1.5 -r1.6 --- FileListTest.java 9 Feb 2004 21:05:45 -0000 1.5 +++ FileListTest.java 23 Feb 2004 16:40:55 -0000 1.6 @@ -17,8 +17,9 @@ package org.apache.tools.ant.types; -import org.apache.tools.ant.BuildException; import org.apache.tools.ant.Project; +import org.apache.tools.ant.BuildException; +import org.apache.tools.ant.BuildFileTest; import junit.framework.TestCase; import junit.framework.AssertionFailedError; @@ -26,27 +27,19 @@ import java.io.File; /** - * JUnit 3 testcases for org.apache.tools.ant.types.FileList. - * - * <p>This doesn't actually test much, mainly reference handling. - * Adapted from FileSetTest.</p> - * - * @author <a href="mailto:[EMAIL PROTECTED]">Craeg Strong</a> + * Some tests for filelist. */ -public class FileListTest extends TestCase { - - private Project project; +public class FileListTest extends BuildFileTest { public FileListTest(String name) { super(name); } public void setUp() { - project = new Project(); - project.setBasedir("."); + configureProject("src/etc/testcases/types/filelist.xml"); } - + public void testEmptyElementIfIsReference() { FileList f = new FileList(); f.setDir(project.resolveFile(".")); @@ -143,5 +136,17 @@ f3.setDir(project.resolveFile(".")); File dir = f1.getDir(project); assertEquals("Dir is basedir", dir, project.getBaseDir()); + } + + public void testSimple() { + expectLog("simple", "/abc/a"); + } + + public void testDouble() { + expectLog("double", "/abc/a:/abc/b"); + } + + public void testNested() { + expectLog("nested", "/abc/a:/abc/b"); } } 1.1 ant/src/etc/testcases/types/filelist.xml Index: filelist.xml =================================================================== <project name="test"> <target name="simple"> <filelist id="filelist" dir="${basedir}" files="a"/> <pathconvert targetos="unix" refid="filelist" property="property"> <map from="${basedir}" to="/abc"/> </pathconvert> <echo>${property}</echo> </target> <target name="double"> <filelist id="filelist" dir="${basedir}" files="a b"/> <pathconvert targetos="unix" refid="filelist" property="property"> <map from="${basedir}" to="/abc"/> </pathconvert> <echo>${property}</echo> </target> <target name="nested"> <filelist id="filelist" dir="${basedir}"> <file name="a"/> <file name="b"/> </filelist> <pathconvert targetos="unix" refid="filelist" property="property"> <map from="${basedir}" to="/abc"/> </pathconvert> <echo>${property}</echo> </target> </project>
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]