From 1e8f7ef1f956607568e7729fd715be6366d00c6c Mon Sep 17 00:00:00 2001 From: Steve Loughran Date: Wed, 16 Jan 2008 14:14:59 +0000 Subject: [PATCH] BugID 44239: Add ability of resource classes to act as factories for relative resources git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@612467 13f79535-47bb-0310-9956-ffa450edef68 --- .../ant/types/resources/FileResource.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/org/apache/tools/ant/types/resources/FileResource.java b/src/main/org/apache/tools/ant/types/resources/FileResource.java index 899eac89b..1e2a73137 100644 --- a/src/main/org/apache/tools/ant/types/resources/FileResource.java +++ b/src/main/org/apache/tools/ant/types/resources/FileResource.java @@ -29,12 +29,14 @@ import org.apache.tools.ant.BuildException; import org.apache.tools.ant.util.FileUtils; import org.apache.tools.ant.types.Resource; import org.apache.tools.ant.types.Reference; +import org.apache.tools.ant.types.ResourceFactory; /** * A Resource representation of a File. * @since Ant 1.7 */ -public class FileResource extends Resource implements Touchable, FileProvider { +public class FileResource extends Resource implements Touchable, FileProvider, + ResourceFactory { private static final FileUtils FILE_UTILS = FileUtils.getFileUtils(); private static final int NULL_FILE @@ -321,4 +323,18 @@ public class FileResource extends Resource implements Touchable, FileProvider { return getFile(); } + /** + * Create a new resource that matches a relative or absolute path. + * If the current instance has a baseDir attribute, it is copied. + * @param path relative/absolute path to a resource + * @return a new resource of type FileResource + * @throws BuildException if desired + * @since Ant1.8 + */ + public Resource getResource(String path) { + File newfile = FILE_UTILS.resolveFile(getFile(), path); + FileResource fileResource = new FileResource(newfile); + fileResource.setBaseDir(getBaseDir()); + return fileResource; + } }