peterreilly 2005/01/18 01:41:20 Modified: . WHATSNEW src/main/org/apache/tools/ant/types PropertySet.java Added: src/etc/testcases/types propertyset.xml src/testcases/org/apache/tools/ant/types PropertySetTest.java Log: propertyset references did not handle nested propertyset references Reported by: Matthew Nelson Revision Changes Path 1.715 +2 -0 ant/WHATSNEW Index: WHATSNEW =================================================================== RCS file: /home/cvs/ant/WHATSNEW,v retrieving revision 1.714 retrieving revision 1.715 diff -u -r1.714 -r1.715 --- WHATSNEW 14 Jan 2005 10:09:23 -0000 1.714 +++ WHATSNEW 18 Jan 2005 09:41:20 -0000 1.715 @@ -258,6 +258,8 @@ * forked <javac> won't pass -source to a JDK 1.1 or 1.2 javac anymore. Bugzilla report 32948 +* propertyset references did not handle nested propertyset references. + Changes from Ant 1.6.1 to Ant 1.6.2 =================================== 1.1 ant/src/etc/testcases/types/propertyset.xml Index: propertyset.xml =================================================================== <!-- * Copyright 2005 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * --> <project> <property name="fooA" value="FooA"/> <property name="barB" value="BarB"/> <propertyset id="properties-starting-with-foo"> <propertyref prefix="foo"/> </propertyset> <propertyset id="properties-starting-with-bar"> <propertyref prefix="bar"/> </propertyset> <propertyset id="my-set"> <propertyset refid="properties-starting-with-foo"/> <propertyset refid="properties-starting-with-bar"/> </propertyset> <macrodef name="expect.equals"> <attribute name="test"/> <attribute name="exp"/> <attribute name="got"/> <sequential> <fail message= "@{test} failed: expected "@{exp}" got "@{got}""> <condition> <not> <equals arg1="@{exp}" arg2="@{got}"/> </not> </condition> </fail> </sequential> </macrodef> <target name="reference-to-two-references"> <expect.equals test="reference to two references" exp="barB=BarB, fooA=FooA" got="${toString:my-set}"/> </target> </project> 1.21 +28 -6 ant/src/main/org/apache/tools/ant/types/PropertySet.java Index: PropertySet.java =================================================================== RCS file: /home/cvs/ant/src/main/org/apache/tools/ant/types/PropertySet.java,v retrieving revision 1.20 retrieving revision 1.21 diff -u -r1.20 -r1.21 --- PropertySet.java 10 Jan 2005 08:37:06 -0000 1.20 +++ PropertySet.java 18 Jan 2005 09:41:20 -0000 1.21 @@ -19,8 +19,10 @@ import java.util.Enumeration; import java.util.Iterator; +import java.util.Map; import java.util.HashSet; import java.util.Set; +import java.util.TreeMap; import java.util.Hashtable; import java.util.Properties; import java.util.Stack; @@ -202,6 +204,9 @@ * @return */ public Properties getProperties() { + if (isReference()) { + return getRef().getProperties(); + } Set names = null; Project prj = getProject(); Hashtable props = @@ -209,11 +214,7 @@ if (getDynamic() || cachedNames == null) { names = new HashSet(); - if (isReference()) { - getRef().addPropertyNames(names, props); - } else { - addPropertyNames(names, props); - } + addPropertyNames(names, props); // Add this PropertySet's nested PropertySets' property names. for (Enumeration e = setRefs.elements(); e.hasMoreElements();) { PropertySet set = (PropertySet) e.nextElement(); @@ -375,5 +376,26 @@ return new String[] {ALL, SYSTEM, COMMANDLINE}; } } -} // END class PropertySet + /** + * A debug toString. + * This gets a comma separated list of key=value pairs for + * the properties in the set. + * The output order is sorted according to the keys' <i>natural order</i>. + * @return a string rep of this object + */ + public String toString() { + StringBuffer b = new StringBuffer(); + TreeMap sorted = new TreeMap(getProperties()); + for (Iterator i = sorted.entrySet().iterator(); i.hasNext();) { + Map.Entry e = (Map.Entry) i.next(); + if (b.length() != 0) { + b.append(", "); + } + b.append(e.getKey().toString()); + b.append("="); + b.append(e.getValue().toString()); + } + return b.toString(); + } +} 1.1 ant/src/testcases/org/apache/tools/ant/types/PropertySetTest.java Index: PropertySetTest.java =================================================================== /* * Copyright 2005 The Apache Software Foundation * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. * */ package org.apache.tools.ant.types; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.BuildFileTest; import org.apache.tools.ant.Project; import org.apache.tools.ant.Task; import org.apache.tools.ant.taskdefs.condition.Condition; public class PropertySetTest extends BuildFileTest { public PropertySetTest(String name) { super(name); } public void setUp() { configureProject("src/etc/testcases/types/propertyset.xml"); } public void testReferenceToTwoReferences() { executeTarget("reference-to-two-references"); } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]