mbenson 2005/05/18 09:52:06 Modified: . Tag: ANT_16_BRANCH WHATSNEW src/main/org/apache/tools/ant/types Tag: ANT_16_BRANCH PropertySet.java src/etc/testcases/types Tag: ANT_16_BRANCH propertyset.xml src/testcases/org/apache/tools/ant/types Tag: ANT_16_BRANCH PropertySetTest.java Log: Merge nested mapped propertyset fix Revision Changes Path No revision No revision 1.503.2.227 +2 -0 ant/WHATSNEW Index: WHATSNEW =================================================================== RCS file: /home/cvs/ant/WHATSNEW,v retrieving revision 1.503.2.226 retrieving revision 1.503.2.227 diff -u -r1.503.2.226 -r1.503.2.227 --- WHATSNEW 13 May 2005 08:09:35 -0000 1.503.2.226 +++ WHATSNEW 18 May 2005 16:52:05 -0000 1.503.2.227 @@ -24,6 +24,8 @@ * <unzip> and <untar> could leave file handles open on invalid archives. Bugzilla report 34893. +* propertyset threw NPE with nested, mapped propertysets. + Other changes: -------------- No revision No revision 1.8.2.11 +15 -21 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.8.2.10 retrieving revision 1.8.2.11 diff -u -r1.8.2.10 -r1.8.2.11 --- PropertySet.java 19 Jan 2005 18:34:48 -0000 1.8.2.10 +++ PropertySet.java 18 May 2005 16:52:05 -0000 1.8.2.11 @@ -166,11 +166,11 @@ * @param to output pattern. */ public void setMapper(String type, String from, String to) { - Mapper mapper = createMapper(); + Mapper m = createMapper(); Mapper.MapperType mapperType = new Mapper.MapperType(); mapperType.setValue(type); - mapper.setFrom(from); - mapper.setTo(to); + m.setFrom(from); + m.setTo(to); } /** @@ -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); @@ -302,19 +308,19 @@ } else { names = cachedNames; } - FileNameMapper mapper = null; + FileNameMapper m = null; Mapper myMapper = getMapper(); if (myMapper != null) { - mapper = myMapper.getImplementation(); + m = myMapper.getImplementation(); } Properties properties = new Properties(); //iterate through the names, get the matching values for (Iterator iter = names.iterator(); iter.hasNext();) { String name = (String) iter.next(); String value = (String) props.get(name); - if (mapper != null) { + if (m != null) { //map the names - String[] newname = mapper.mapFileName(name); + String[] newname = m.mapFileName(name); if (newname != null) { name = newname[0]; } @@ -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(); } + } No revision No revision 1.1.2.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.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- propertyset.xml 7 Feb 2005 11:13:57 -0000 1.1.2.1 +++ propertyset.xml 18 May 2005 16:52:05 -0000 1.1.2.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> No revision No revision 1.1.2.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.2.1 retrieving revision 1.1.2.2 diff -u -r1.1.2.1 -r1.1.2.2 --- PropertySetTest.java 7 Feb 2005 11:13:57 -0000 1.1.2.1 +++ PropertySetTest.java 18 May 2005 16:52:05 -0000 1.1.2.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]