From 2ccd335cf3ef08f0f79e5a5c9c624deae323e4a9 Mon Sep 17 00:00:00 2001 From: Erik Hatcher Date: Sat, 23 Feb 2002 20:42:14 +0000 Subject: [PATCH] Added 'prefix' option to . Designed to only work when loading a property file or resource. git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@271519 13f79535-47bb-0310-9956-ffa450edef68 --- src/etc/testcases/taskdefs/property.xml | 9 +++++++++ .../org/apache/tools/ant/taskdefs/Property.java | 17 +++++++++++++++++ .../apache/tools/ant/taskdefs/PropertyTest.java | 17 +++++++++++++++++ 3 files changed, 43 insertions(+) diff --git a/src/etc/testcases/taskdefs/property.xml b/src/etc/testcases/taskdefs/property.xml index cc3fb771a..c46e21c73 100644 --- a/src/etc/testcases/taskdefs/property.xml +++ b/src/etc/testcases/taskdefs/property.xml @@ -21,4 +21,13 @@ + + + + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/Property.java b/src/main/org/apache/tools/ant/taskdefs/Property.java index 9d8f68b9d..d8fde8506 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Property.java +++ b/src/main/org/apache/tools/ant/taskdefs/Property.java @@ -86,6 +86,7 @@ public class Property extends Task { protected Path classpath; protected String env; protected Reference ref; + protected String prefix; protected boolean userProperty; // set read-only properties @@ -124,6 +125,13 @@ public class Property extends Task { public File getFile() { return file; } + + public void setPrefix(String prefix) { + this.prefix = prefix; + if (!prefix.endsWith(".")) { + this.prefix += "."; + } + } public void setRefid(Reference ref) { this.ref = ref; @@ -192,6 +200,10 @@ public class Property extends Task { location); } } + + if (file == null && resource == null && prefix != null) { + throw new BuildException("Prefix is only valid when loading from a file or resource", location); + } if ((name != null) && (value != null)) { addProperty(name, value); @@ -298,6 +310,11 @@ public class Property extends Task { String value = props.getProperty(name); String v = project.replaceProperties(value); + + if (prefix != null) { + name = prefix + name; + } + addProperty(name, v); } } diff --git a/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java b/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java index 04e6d1f8b..f0b497463 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java @@ -95,4 +95,21 @@ public class PropertyTest extends BuildFileTest { expectLog("test4", "http.url is http://localhost:999"); } + public void testPrefixSuccess() { + executeTarget("prefix.success"); + assertEquals("80", project.getProperty("server1.http.port")); + } + + public void testPrefixFailure() { + try { + executeTarget("prefix.fail"); + } + catch (BuildException e) { + assertEquals("Prefix allowed on non-resource/file load - ", true, + e.getMessage().indexOf("Prefix is only valid") != -1); + return; + } + fail("Did not throw exception on invalid use of prefix"); + } + }