mbenson 2005/05/18 09:47:26 Modified: . WHATSNEW src/main/org/apache/tools/ant/types PropertySet.java src/etc/testcases/types propertyset.xml src/testcases/org/apache/tools/ant/types PropertySetTest.java Log: propertyset threw NPE with nested, mapped propertysets. Revision Changes Path 1.824 +2 -0 ant/WHATSNEW Index: WHATSNEW =================================================================== RCS file: /home/cvs/ant/WHATSNEW,v retrieving revision 1.823 retrieving revision 1.824 diff -u -r1.823 -r1.824 --- WHATSNEW 16 May 2005 22:40:23 -0000 1.823 +++ WHATSNEW 18 May 2005 16:47:26 -0000 1.824 @@ -234,6 +234,8 @@ * <unzip> and <untar> could leave file handles open on invalid archives. Bugzilla report 34893. +* propertyset threw NPE with nested, mapped propertysets. + Other changes: -------------- 1.25 +8 -14 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.24 retrieving revision 1.25 diff -u -r1.24 -r1.25 --- PropertySet.java 2 Feb 2005 07:59:37 -0000 1.24 +++ PropertySet.java 18 May 2005 16:47:26 -0000 1.25 @@ -282,6 +282,12 @@ Hashtable props = prj == null ? getAllSystemProperties() : prj.getProperties(); + //quick & dirty, to make nested mapped p-sets work: + for (Enumeration e = setRefs.elements(); e.hasMoreElements();) { + PropertySet set = (PropertySet) e.nextElement(); + props.putAll(set.getProperties()); + } + if (getDynamic() || cachedNames == null) { names = new HashSet(); addPropertyNames(names, props); @@ -382,20 +388,7 @@ * @return the referenced PropertySet. */ protected PropertySet getRef() { - if (!isChecked()) { - Stack stk = new Stack(); - stk.push(this); - dieOnCircularReference(stk, getProject()); - } - - Object o = getRefid().getReferencedObject(getProject()); - if (!(o instanceof PropertySet)) { - String msg = getRefid().getRefId() - + " doesn\'t denote a propertyset"; - throw new BuildException(msg); - } else { - return (PropertySet) o; - } + return (PropertySet) getCheckedRef(PropertySet.class, "propertyset"); } /** @@ -469,4 +462,5 @@ } return b.toString(); } + } 1.2 +39 -0 ant/src/etc/testcases/types/propertyset.xml Index: propertyset.xml =================================================================== RCS file: /home/cvs/ant/src/etc/testcases/types/propertyset.xml,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- propertyset.xml 18 Jan 2005 09:41:20 -0000 1.1 +++ propertyset.xml 18 May 2005 16:47:26 -0000 1.2 @@ -52,4 +52,43 @@ exp="barB=BarB, fooA=FooA" got="${toString:my-set}"/> </target> + + <target name="nested-mapped"> + <propertyset id="nested-mapped"> + <propertyset> + <propertyset refid="properties-starting-with-foo"/> + <globmapper from="foo*" to="boo*" /> + </propertyset> + <propertyset> + <propertyset refid="properties-starting-with-bar"/> + <globmapper from="bar*" to="far*" /> + </propertyset> + </propertyset> + <expect.equals + test="nested mapped propertysets" + exp="booA=FooA, farB=BarB" + got="${toString:nested-mapped}"/> + </target> + + <target name="nested-mapped-mapped"> + <propertyset id="nested-mapped-mapped"> + <propertyset> + <propertyset refid="properties-starting-with-foo"/> + <globmapper from="foo*" to="boo*" /> + </propertyset> + <propertyset> + <propertyset refid="properties-starting-with-bar"/> + <globmapper from="bar*" to="far*" /> + </propertyset> + <mapper> + <globmapper from="boo*" to="hoo*" /> + <globmapper from="far*" to="near*" /> + </mapper> + </propertyset> + <expect.equals + test="nested mapped propertysets" + exp="hooA=FooA, nearB=BarB" + got="${toString:nested-mapped-mapped}"/> + </target> + </project> 1.2 +8 -0 ant/src/testcases/org/apache/tools/ant/types/PropertySetTest.java Index: PropertySetTest.java =================================================================== RCS file: /home/cvs/ant/src/testcases/org/apache/tools/ant/types/PropertySetTest.java,v retrieving revision 1.1 retrieving revision 1.2 diff -u -r1.1 -r1.2 --- PropertySetTest.java 18 Jan 2005 09:41:20 -0000 1.1 +++ PropertySetTest.java 18 May 2005 16:47:26 -0000 1.2 @@ -36,4 +36,12 @@ public void testReferenceToTwoReferences() { executeTarget("reference-to-two-references"); } + + public void testNestedMapped() { + executeTarget("nested-mapped"); + } + + public void testNestedMappedMapped() { + executeTarget("nested-mapped-mapped"); + } }
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]