diff --git a/WHATSNEW b/WHATSNEW index b28f30922..92de369ed 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -233,6 +233,21 @@ Other changes: * Try to make subprojects of custom Project subclasses instances of the same type. Bugzilla report 17901. +Changes from Ant 1.6.4 to current Ant 1.6 CVS version +===================================================== + +Changes that could break older environments: +-------------------------------------------- + +Fixed bugs: +----------- + +* was unable to replace existing files or write into + existing directories. Bugzilla report 34962. + +* with redefined default values was incorrect. (Fix for + 31215 had a bug). Bugzilla report 35109. + Changes from Ant 1.6.3 to Ant 1.6.4 =================================== diff --git a/src/etc/testcases/taskdefs/macrodef.xml b/src/etc/testcases/taskdefs/macrodef.xml index ed278f022..e2786a42c 100644 --- a/src/etc/testcases/taskdefs/macrodef.xml +++ b/src/etc/testcases/taskdefs/macrodef.xml @@ -220,7 +220,24 @@ + + + + + + + value is @{attr} + + + + + + + + + + diff --git a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java index 660b7fa78..034e289b1 100644 --- a/src/main/org/apache/tools/ant/taskdefs/MacroDef.java +++ b/src/main/org/apache/tools/ant/taskdefs/MacroDef.java @@ -715,13 +715,14 @@ public class MacroDef extends AntlibDefinition { } /** - * similar equality method for macrodef, ignores project and + * same or similar equality method for macrodef, ignores project and * runtime info. * * @param obj an Object value + * @param same if true test for sameness, otherwise just similiar * @return a boolean value */ - public boolean similar(Object obj) { + private boolean sameOrSimilar(Object obj, boolean same) { if (obj == this) { return true; } @@ -742,7 +743,8 @@ public class MacroDef extends AntlibDefinition { // Allow two macro definitions with the same location // to be treated as similar - bugzilla 31215 if (other.getLocation() != null - && other.getLocation().equals(getLocation())) { + && other.getLocation().equals(getLocation()) + && !same) { return true; } if (text == null) { @@ -778,6 +780,26 @@ public class MacroDef extends AntlibDefinition { return true; } + /** + * Similar method for this definition + * + * @param obj another definition + * @return true if the definitions are similar + */ + public boolean similar(Object obj) { + return sameOrSimilar(obj, false); + } + + /** + * Equality method for this definition + * + * @param obj another definition + * @return true if the definitions are the same + */ + public boolean sameDefinition(Object obj) { + return sameOrSimilar(obj, true); + } + /** * extends AntTypeDefinition, on create * of the object, the template macro definition @@ -822,7 +844,7 @@ public class MacroDef extends AntlibDefinition { return false; } MyAntTypeDefinition otherDef = (MyAntTypeDefinition) other; - return macroDef.similar(otherDef.macroDef); + return macroDef.sameDefinition(otherDef.macroDef); } /** diff --git a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java index 0acd4570c..3c701d904 100644 --- a/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java +++ b/src/testcases/org/apache/tools/ant/taskdefs/MacroDefTest.java @@ -109,6 +109,11 @@ public class MacroDefTest extends BuildFileTest { "attribute.description", "description is hello world"); } + public void testOverrideDefault() { + expectLog( + "override.default", + "value is new"); + } public void testImplicit() { expectLog( "implicit", "Before implicitIn implicitAfter implicit");