From f4bdfee52e9db4abbc479a628e7b836b8bdfec8b Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Tue, 9 Dec 2008 05:18:59 +0000 Subject: [PATCH] allow tokens in replacetokens filter to be read from a resource. PR 42702 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@724610 13f79535-47bb-0310-9956-ffa450edef68 --- .../tools/ant/filters/ReplaceTokens.java | 38 ++++++++++++++----- 1 file changed, 28 insertions(+), 10 deletions(-) diff --git a/src/main/org/apache/tools/ant/filters/ReplaceTokens.java b/src/main/org/apache/tools/ant/filters/ReplaceTokens.java index dcffe11e6..dedcc21e2 100644 --- a/src/main/org/apache/tools/ant/filters/ReplaceTokens.java +++ b/src/main/org/apache/tools/ant/filters/ReplaceTokens.java @@ -17,7 +17,8 @@ */ package org.apache.tools.ant.filters; -import java.io.FileInputStream; +import java.io.File; +import java.io.InputStream; import java.io.IOException; import java.io.Reader; import java.util.Enumeration; @@ -25,6 +26,8 @@ import java.util.Hashtable; import java.util.Properties; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.types.Parameter; +import org.apache.tools.ant.types.Resource; +import org.apache.tools.ant.types.resources.FileResource; import org.apache.tools.ant.util.FileUtils; /** @@ -213,6 +216,16 @@ public final class ReplaceTokens return endToken; } + /** + * A resource containing properties, each of which is interpreted + * as a token/value pair. + * + * @since Ant 1.8.0 + */ + public void setPropertiesResource(Resource r) { + makeTokensFromProperties(r); + } + /** * Adds a token element to the map of tokens to replace. * @@ -228,11 +241,11 @@ public final class ReplaceTokens * * @param fileName The file to load properties from. */ - private Properties getPropertiesFromFile (String fileName) { - FileInputStream in = null; + private Properties getProperties(Resource r) { + InputStream in = null; Properties props = new Properties(); try { - in = new FileInputStream(fileName); + in = r.getInputStream(); props.load(in); } catch (IOException ioe) { ioe.printStackTrace(); @@ -312,18 +325,23 @@ public final class ReplaceTokens final String value = params[i].getValue(); hash.put(name, value); } else if ("propertiesfile".equals(type)) { - Properties props = getPropertiesFromFile(params[i].getValue()); - for (Enumeration e = props.keys(); e.hasMoreElements();) { - String key = (String) e.nextElement(); - String value = props.getProperty(key); - hash.put(key, value); - } + makeTokensFromProperties( + new FileResource(new File(params[i].getValue()))); } } } } } + private void makeTokensFromProperties(Resource r) { + Properties props = getProperties(r); + for (Enumeration e = props.keys(); e.hasMoreElements();) { + String key = (String) e.nextElement(); + String value = props.getProperty(key); + hash.put(key, value); + } + } + /** * Holds a token */