diff --git a/src/main/org/apache/tools/ant/taskdefs/Replace.java b/src/main/org/apache/tools/ant/taskdefs/Replace.java index 31f24c74b..2cf59dd42 100644 --- a/src/main/org/apache/tools/ant/taskdefs/Replace.java +++ b/src/main/org/apache/tools/ant/taskdefs/Replace.java @@ -31,11 +31,11 @@ import java.io.OutputStreamWriter; import java.io.Reader; import java.io.Writer; import java.util.ArrayList; +import java.util.Collections; import java.util.Comparator; import java.util.Iterator; +import java.util.List; import java.util.Properties; -import java.util.Set; -import java.util.TreeSet; import org.apache.tools.ant.BuildException; import org.apache.tools.ant.DirectoryScanner; @@ -960,7 +960,8 @@ public class Replace extends MatchingTask { * strings are tried later. */ private Iterator getOrderedIterator(Properties props) { - Set keys = new TreeSet(new Comparator() { + List keys = new ArrayList(props.keySet()); + Collections.sort(keys, new Comparator() { @Override public int compare(Object key1, Object key2) { return compare(key1.toString(), key2.toString()); @@ -970,7 +971,6 @@ public class Replace extends MatchingTask { return key2.length() - key1.length(); } }); - keys.addAll(props.keySet()); return keys.iterator(); } } diff --git a/src/tests/antunit/taskdefs/replace-test.xml b/src/tests/antunit/taskdefs/replace-test.xml index 96fda75b8..e7aa11888 100644 --- a/src/tests/antunit/taskdefs/replace-test.xml +++ b/src/tests/antunit/taskdefs/replace-test.xml @@ -129,6 +129,32 @@ abcdefghijklmnopqrstuvw=23 abcdefghijklmnopqrstuvwx=24 abcdefghijklmnopqrstuvwxy=25 abcdefghijklmnopqrstuvwxyz=26 +A=27 +AB=28 +ABC=29 +ABCD=30 +ABCDE=31 +ABCDEF=32 +ABCDEFG=33 +ABCDEFGH=34 +ABCDEFGHI=35 +ABCDEFGHIJ=36 +ABCDEFGHIJK=37 +ABCDEFGHIJKL=38 +ABCDEFGHIJKLM=39 +ABCDEFGHIJKLMN=40 +ABCDEFGHIJKLMNO=41 +ABCDEFGHIJKLMNOP=42 +ABCDEFGHIJKLMNOPQ=43 +ABCDEFGHIJKLMNOPQR=44 +ABCDEFGHIJKLMNOPQRS=45 +ABCDEFGHIJKLMNOPQRST=46 +ABCDEFGHIJKLMNOPQRSTU=47 +ABCDEFGHIJKLMNOPQRSTUV=48 +ABCDEFGHIJKLMNOPQRSTUVW=49 +ABCDEFGHIJKLMNOPQRSTUVWX=50 +ABCDEFGHIJKLMNOPQRSTUVWXY=51 +ABCDEFGHIJKLMNOPQRSTUVWXYZ=52 ]]>