diff --git a/src/etc/testcases/taskdefs/property.xml b/src/etc/testcases/taskdefs/property.xml index ae967470b..cc3fb771a 100644 --- a/src/etc/testcases/taskdefs/property.xml +++ b/src/etc/testcases/taskdefs/property.xml @@ -16,4 +16,9 @@ + + + + + diff --git a/src/etc/testcases/taskdefs/property3.properties b/src/etc/testcases/taskdefs/property3.properties new file mode 100644 index 000000000..efbf7ce4b --- /dev/null +++ b/src/etc/testcases/taskdefs/property3.properties @@ -0,0 +1,4 @@ +http.port = 80 +http.url = http://localhost:${http.port} + + diff --git a/src/main/org/apache/tools/ant/taskdefs/Property.java b/src/main/org/apache/tools/ant/taskdefs/Property.java index 78a0ad1aa..aa775c03e 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Property.java +++ b/src/main/org/apache/tools/ant/taskdefs/Property.java @@ -178,7 +178,7 @@ public class Property extends Task { } } - protected void loadFile (File file) throws BuildException { + protected void loadFile(File file) throws BuildException { Properties props = new Properties(); log("Loading " + file.getAbsolutePath(), Project.MSG_VERBOSE); try { @@ -201,7 +201,7 @@ public class Property extends Task { } } - protected void loadResource( String name ) { + protected void loadResource(String name) { Properties props = new Properties(); log("Resource Loading " + name, Project.MSG_VERBOSE); try { @@ -300,12 +300,15 @@ public class Property extends Task { if (propertyName.equals(name)) { throw new BuildException("Property " + name + " was circularly defined."); } - if (props.containsKey(propertyName)) { - fragment = props.getProperty(propertyName); - resolved = false; - } - else { - fragment = "${" + propertyName + "}"; + fragment = getProject().getProperty(propertyName); + if (fragment == null) { + if (props.containsKey(propertyName)) { + fragment = props.getProperty(propertyName); + resolved = false; + } + else { + fragment = "${" + propertyName + "}"; + } } } sb.append(fragment); diff --git a/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java b/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java index 17924d10f..1b2860334 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java @@ -90,4 +90,8 @@ public class PropertyTest extends TaskdefsTest { fail("Did not throw exception on circular exception"); } + public void test4() { + expectLog("test4", "http.url is http://localhost:999"); + } + }