diff --git a/CONTRIBUTORS b/CONTRIBUTORS index 643e5e07c..1e9c53e38 100644 --- a/CONTRIBUTORS +++ b/CONTRIBUTORS @@ -7,6 +7,7 @@ Andreas Ames Andreas Mross Andrew Everitt Andrey Urazov +Andy Wood Anil K. Vijendran Anli Shundi Anthony Goubard diff --git a/WHATSNEW b/WHATSNEW index acc8fe6f4..0f6ad59f2 100644 --- a/WHATSNEW +++ b/WHATSNEW @@ -31,6 +31,9 @@ Fixed bugs: * Recursive filtering encountered NullPointerExceptions under certain circumstances. Bugzilla 41086. +* XmlProperty overrides previously set property value when handling duplicate + elements. Bugzilla 41080. + Other changes: -------------- diff --git a/contributors.xml b/contributors.xml index 0824884c9..18b55643d 100644 --- a/contributors.xml +++ b/contributors.xml @@ -38,6 +38,10 @@ Andrey Urazov + + Andy + Wood + Anil K. diff --git a/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java b/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java index 26d9ee361..aaec951c1 100644 --- a/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java +++ b/src/main/org/apache/tools/ant/taskdefs/XmlProperty.java @@ -499,10 +499,13 @@ public class XmlProperty extends org.apache.tools.ant.Task { // to allow other properties to reference them. value = (String) addedAttributes.get(name) + "," + value; getProject().setProperty(name, value); - } else { + addedAttributes.put(name, value); + } else if (getProject().getProperty(name) == null) { getProject().setNewProperty(name, value); + addedAttributes.put(name, value); + } else { + log("Override ignored for property " + name, Project.MSG_VERBOSE); } - addedAttributes.put(name, value); if (id != null) { getProject().addReference(id, value); } diff --git a/src/tests/antunit/taskdefs/xmlproperty-test.xml b/src/tests/antunit/taskdefs/xmlproperty-test.xml index c2fa0fa6c..6b1407c54 100644 --- a/src/tests/antunit/taskdefs/xmlproperty-test.xml +++ b/src/tests/antunit/taskdefs/xmlproperty-test.xml @@ -6,5 +6,12 @@ + + + + + + +