git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@1204961 13f79535-47bb-0310-9956-ffa450edef68master
| @@ -202,11 +202,12 @@ Marcel Schutte | |||||
| Marcus Börger | Marcus Börger | ||||
| Mario Frasca | Mario Frasca | ||||
| Mariusz Nowostawski | Mariusz Nowostawski | ||||
| Mark A. Ziesemer | |||||
| Mark DeLaFranier | Mark DeLaFranier | ||||
| Mark Hecker | Mark Hecker | ||||
| Mark Salter | |||||
| Mark R. Diggory | Mark R. Diggory | ||||
| Mark A. Ziesemer | |||||
| Mark Salter | |||||
| Markus Kahl | |||||
| Martijn Kruithof | Martijn Kruithof | ||||
| Martin Landers | Martin Landers | ||||
| Martin Poeschl | Martin Poeschl | ||||
| @@ -104,6 +104,10 @@ Fixed bugs: | |||||
| * packagemapper now honors the handleDirSep attribute. | * packagemapper now honors the handleDirSep attribute. | ||||
| Bugzilla Report 51068. | Bugzilla Report 51068. | ||||
| * the attributes of macrodef tasks had their values run through | |||||
| property expansion twice. | |||||
| Bugzilla Report 42046. | |||||
| Other changes: | Other changes: | ||||
| -------------- | -------------- | ||||
| @@ -860,6 +860,10 @@ | |||||
| <middle>A.</middle> | <middle>A.</middle> | ||||
| <last>Ziesemer</last> | <last>Ziesemer</last> | ||||
| </name> | </name> | ||||
| <name> | |||||
| <first>Markus</first> | |||||
| <last>Kahl</last> | |||||
| </name> | |||||
| <name> | <name> | ||||
| <first>Martijn</first> | <first>Martijn</first> | ||||
| <last>Kruithof</last> | <last>Kruithof</last> | ||||
| @@ -29,6 +29,7 @@ import java.util.Map; | |||||
| import java.util.Iterator; | import java.util.Iterator; | ||||
| import org.apache.tools.ant.util.CollectionUtils; | import org.apache.tools.ant.util.CollectionUtils; | ||||
| import org.apache.tools.ant.taskdefs.MacroInstance; | |||||
| import org.xml.sax.AttributeList; | import org.xml.sax.AttributeList; | ||||
| import org.xml.sax.helpers.AttributeListImpl; | import org.xml.sax.helpers.AttributeListImpl; | ||||
| @@ -382,8 +383,15 @@ public class RuntimeConfigurable implements Serializable { | |||||
| String name = (String) entry.getKey(); | String name = (String) entry.getKey(); | ||||
| String value = (String) entry.getValue(); | String value = (String) entry.getValue(); | ||||
| // reflect these into the target | |||||
| Object attrValue = PropertyHelper.getPropertyHelper(p).parseProperties(value); | |||||
| // reflect these into the target, defer for | |||||
| // MacroInstance where properties are expanded for the | |||||
| // nested sequential | |||||
| Object attrValue = null; | |||||
| if (target instanceof MacroInstance) { | |||||
| attrValue = value; | |||||
| } else { | |||||
| attrValue = PropertyHelper.getPropertyHelper(p).parseProperties(value); | |||||
| } | |||||
| try { | try { | ||||
| ih.setAttribute(p, target, name, attrValue); | ih.setAttribute(p, target, name, attrValue); | ||||
| } catch (UnsupportedAttributeException be) { | } catch (UnsupportedAttributeException be) { | ||||
| @@ -33,5 +33,16 @@ | |||||
| <au:assertLogContains text="THIS IS NOT DEFAULT LOG"/> | <au:assertLogContains text="THIS IS NOT DEFAULT LOG"/> | ||||
| </target> | </target> | ||||
| <target name="testDoubleExpandedProperties" | |||||
| description="https://issues.apache.org/bugzilla/show_bug.cgi?id=42046"> | |||||
| <macrodef name="indirect"> | |||||
| <attribute name="value"/> | |||||
| <sequential> | |||||
| <echo message="@{value}"/> | |||||
| </sequential> | |||||
| </macrodef> | |||||
| <indirect value="$${basedir}"/> | |||||
| <au:assertLogContains text="{basedir}"/> | |||||
| </target> | |||||
| </project> | </project> | ||||
| @@ -101,8 +101,8 @@ y=$${bar.x} | |||||
| <property file="${input}/z.properties" prefix="bar"/> | <property file="${input}/z.properties" prefix="bar"/> | ||||
| <!-- passes in Ant 1.7.1 and 1.8.1, fails in 1.8.0 --> | <!-- passes in Ant 1.7.1 and 1.8.1, fails in 1.8.0 --> | ||||
| <!--echo>bar.y is ${bar.y}</echo> | <!--echo>bar.y is ${bar.y}</echo> | ||||
| <au:assertLogContains text="bar.y is y"/--> | |||||
| <au:assertPropertyEquals name="bar.y" value="y"/> | |||||
| <au:assertLogContains text="bar.y is y"/> | |||||
| <au:assertPropertyEquals name="bar.y" value="y"/--> | |||||
| </target> | </target> | ||||
| <!-- passes in Ant 1.7.1 and 1.8.1, fails in 1.8.0 --> | <!-- passes in Ant 1.7.1 and 1.8.1, fails in 1.8.0 --> | ||||
| @@ -107,7 +107,7 @@ | |||||
| </au:assertTrue> | </au:assertTrue> | ||||
| </target> | </target> | ||||
| <target name="testLoadProperties" if="prereqs-ok"> | |||||
| <target name="XtestLoadPropertiesWithObjects" if="prereqs-ok" depends="setUp"> | |||||
| <au:assertFalse> | <au:assertFalse> | ||||
| <isset property="object2" /> | <isset property="object2" /> | ||||
| </au:assertFalse> | </au:assertFalse> | ||||
| @@ -125,4 +125,22 @@ | |||||
| <au:assertPropertyEquals name="object2" value="${OBJECT}" /> | <au:assertPropertyEquals name="object2" value="${OBJECT}" /> | ||||
| </target> | </target> | ||||
| <target name="testLoadPropertiesWithStrings" if="prereqs-ok" depends="setUp"> | |||||
| <au:assertFalse> | |||||
| <isset property="string2" /> | |||||
| </au:assertFalse> | |||||
| <string id="props" value="string2=$${string}" /> | |||||
| <!-- verify the property is not yet expanded --> | |||||
| <au:assertTrue> | |||||
| <length length="17"> | |||||
| <resource refid="props" /> | |||||
| </length> | |||||
| </au:assertTrue> | |||||
| <loadproperties> | |||||
| <resource refid="props" /> | |||||
| </loadproperties> | |||||
| <au:assertPropertyEquals name="string2" value="${string}" /> | |||||
| <au:assertPropertyEquals name="string2" value="${STRING}" /> | |||||
| </target> | |||||
| </project> | </project> | ||||