31215 had a bug). Bugzilla report 35109. PR: 35109 git-svn-id: https://svn.apache.org/repos/asf/ant/core/trunk@278376 13f79535-47bb-0310-9956-ffa450edef68master
@@ -233,6 +233,21 @@ Other changes: | |||||
* Try to make subprojects of custom Project subclasses instances of the | * Try to make subprojects of custom Project subclasses instances of the | ||||
same type. Bugzilla report 17901. | 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: | |||||
----------- | |||||
* <move> was unable to replace existing files or write into | |||||
existing directories. Bugzilla report 34962. | |||||
* <macrodef> 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 | Changes from Ant 1.6.3 to Ant 1.6.4 | ||||
=================================== | =================================== | ||||
@@ -220,7 +220,24 @@ | |||||
<explicit/> | <explicit/> | ||||
</sequential> | </sequential> | ||||
</macrodef> | </macrodef> | ||||
</target> | |||||
<property name="default.override" value="old"/> | |||||
<macrodef name="simple.override"> | |||||
<attribute name="attr" default="${default.override}"/> | |||||
<sequential> | |||||
<echo>value is @{attr}</echo> | |||||
</sequential> | |||||
</macrodef> | |||||
<target name="override.default"> | |||||
<antcall target="override.call"> | |||||
<param name="default.override" value="new"/> | |||||
</antcall> | |||||
</target> | |||||
<target name="override.call"> | |||||
<simple.override/> | |||||
</target> | </target> | ||||
<target name="backtraceoff"> | <target name="backtraceoff"> | ||||
@@ -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. | * runtime info. | ||||
* | * | ||||
* @param obj an <code>Object</code> value | * @param obj an <code>Object</code> value | ||||
* @param same if true test for sameness, otherwise just similiar | |||||
* @return a <code>boolean</code> value | * @return a <code>boolean</code> value | ||||
*/ | */ | ||||
public boolean similar(Object obj) { | |||||
private boolean sameOrSimilar(Object obj, boolean same) { | |||||
if (obj == this) { | if (obj == this) { | ||||
return true; | return true; | ||||
} | } | ||||
@@ -742,7 +743,8 @@ public class MacroDef extends AntlibDefinition { | |||||
// Allow two macro definitions with the same location | // Allow two macro definitions with the same location | ||||
// to be treated as similar - bugzilla 31215 | // to be treated as similar - bugzilla 31215 | ||||
if (other.getLocation() != null | if (other.getLocation() != null | ||||
&& other.getLocation().equals(getLocation())) { | |||||
&& other.getLocation().equals(getLocation()) | |||||
&& !same) { | |||||
return true; | return true; | ||||
} | } | ||||
if (text == null) { | if (text == null) { | ||||
@@ -778,6 +780,26 @@ public class MacroDef extends AntlibDefinition { | |||||
return true; | 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 | * extends AntTypeDefinition, on create | ||||
* of the object, the template macro definition | * of the object, the template macro definition | ||||
@@ -822,7 +844,7 @@ public class MacroDef extends AntlibDefinition { | |||||
return false; | return false; | ||||
} | } | ||||
MyAntTypeDefinition otherDef = (MyAntTypeDefinition) other; | MyAntTypeDefinition otherDef = (MyAntTypeDefinition) other; | ||||
return macroDef.similar(otherDef.macroDef); | |||||
return macroDef.sameDefinition(otherDef.macroDef); | |||||
} | } | ||||
/** | /** | ||||
@@ -109,6 +109,11 @@ public class MacroDefTest extends BuildFileTest { | |||||
"attribute.description", | "attribute.description", | ||||
"description is hello world"); | "description is hello world"); | ||||
} | } | ||||
public void testOverrideDefault() { | |||||
expectLog( | |||||
"override.default", | |||||
"value is new"); | |||||
} | |||||
public void testImplicit() { | public void testImplicit() { | ||||
expectLog( | expectLog( | ||||
"implicit", "Before implicitIn implicitAfter implicit"); | "implicit", "Before implicitIn implicitAfter implicit"); | ||||