contain white space and commas git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@276138 13f79535-47bb-0310-9956-ffa450edef68master
@@ -16,9 +16,8 @@ specifying files that may or may not exist. Multiple files are | |||||
specified as a list of files, relative to the specified directory, | specified as a list of files, relative to the specified directory, | ||||
with no support for wildcard expansion (filenames with wildcards will be | with no support for wildcard expansion (filenames with wildcards will be | ||||
included in the list unchanged). | 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> | </p> | ||||
<table border="1" cellpadding="2" cellspacing="0"> | <table border="1" cellpadding="2" cellspacing="0"> | ||||
<tr> | <tr> | ||||
@@ -33,11 +32,30 @@ same level as <code><target></code> (i.e., as children of | |||||
</tr> | </tr> | ||||
<tr> | <tr> | ||||
<td valign="top">files</td> | <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> | </tr> | ||||
</table> | </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> | <h4>Examples</h4> | ||||
<blockquote><pre> | <blockquote><pre> | ||||
<filelist | <filelist | ||||
@@ -67,6 +85,17 @@ actually exist. | |||||
<p>Same files as the example above.</p> | <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> | |||||
<hr> | <hr> | ||||
<p align="center">Copyright © 2001-2002,2004 The Apache Software Foundation. All rights | <p align="center">Copyright © 2001-2002,2004 The Apache Software Foundation. All rights | ||||
Reserved.</p> | Reserved.</p> | ||||
@@ -0,0 +1,37 @@ | |||||
<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> |
@@ -159,4 +159,39 @@ public class FileList extends DataType { | |||||
} | } | ||||
} | } | ||||
/** | |||||
* 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()); | |||||
} | |||||
} | } |
@@ -17,8 +17,9 @@ | |||||
package org.apache.tools.ant.types; | package org.apache.tools.ant.types; | ||||
import org.apache.tools.ant.BuildException; | |||||
import org.apache.tools.ant.Project; | 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.TestCase; | ||||
import junit.framework.AssertionFailedError; | import junit.framework.AssertionFailedError; | ||||
@@ -26,27 +27,19 @@ import junit.framework.AssertionFailedError; | |||||
import java.io.File; | 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:cstrong@arielpartners.com">Craeg Strong</a> | |||||
* Some tests for filelist. | |||||
*/ | */ | ||||
public class FileListTest extends TestCase { | |||||
private Project project; | |||||
public class FileListTest extends BuildFileTest { | |||||
public FileListTest(String name) { | public FileListTest(String name) { | ||||
super(name); | super(name); | ||||
} | } | ||||
public void setUp() { | public void setUp() { | ||||
project = new Project(); | |||||
project.setBasedir("."); | |||||
configureProject("src/etc/testcases/types/filelist.xml"); | |||||
} | } | ||||
public void testEmptyElementIfIsReference() { | public void testEmptyElementIfIsReference() { | ||||
FileList f = new FileList(); | FileList f = new FileList(); | ||||
f.setDir(project.resolveFile(".")); | f.setDir(project.resolveFile(".")); | ||||
@@ -144,4 +137,16 @@ public class FileListTest extends TestCase { | |||||
File dir = f1.getDir(project); | File dir = f1.getDir(project); | ||||
assertEquals("Dir is basedir", dir, project.getBaseDir()); | 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"); | |||||
} | |||||
} | } |