Browse Source

Resolve properties within properties files by first consulting the project

properties first.

PR:	2915


git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@269417 13f79535-47bb-0310-9956-ffa450edef68
master
Conor MacNeill 24 years ago
parent
commit
25116b2c5b
4 changed files with 24 additions and 8 deletions
  1. +5
    -0
      src/etc/testcases/taskdefs/property.xml
  2. +4
    -0
      src/etc/testcases/taskdefs/property3.properties
  3. +11
    -8
      src/main/org/apache/tools/ant/taskdefs/Property.java
  4. +4
    -0
      src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java

+ 5
- 0
src/etc/testcases/taskdefs/property.xml View File

@@ -16,4 +16,9 @@
<property file="property2.properties"/>
</target>

<target name="test4">
<property name="http.port" value="999" />
<property file="property3.properties"/>
<echo message="http.url is ${http.url}"/>
</target>
</project>

+ 4
- 0
src/etc/testcases/taskdefs/property3.properties View File

@@ -0,0 +1,4 @@
http.port = 80
http.url = http://localhost:${http.port}



+ 11
- 8
src/main/org/apache/tools/ant/taskdefs/Property.java View File

@@ -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);


+ 4
- 0
src/testcases/org/apache/tools/ant/taskdefs/PropertyTest.java View File

@@ -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");
}
}

Loading…
Cancel
Save