@@ -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<Object> getOrderedIterator(Properties props) { | |||
Set<Object> keys = new TreeSet(new Comparator<Object>() { | |||
List<Object> keys = new ArrayList<Object>(props.keySet()); | |||
Collections.sort(keys, new Comparator<Object>() { | |||
@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(); | |||
} | |||
} |
@@ -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 | |||
]]></echo> | |||
<echo file="${output}/text.txt"><![CDATA[ | |||
a | |||
@@ -157,6 +183,32 @@ abcdefghijklmnopqrstuvw | |||
abcdefghijklmnopqrstuvwx | |||
abcdefghijklmnopqrstuvwxy | |||
abcdefghijklmnopqrstuvwxyz | |||
A | |||
AB | |||
ABC | |||
ABCD | |||
ABCDE | |||
ABCDEF | |||
ABCDEFG | |||
ABCDEFGH | |||
ABCDEFGHI | |||
ABCDEFGHIJ | |||
ABCDEFGHIJK | |||
ABCDEFGHIJKL | |||
ABCDEFGHIJKLM | |||
ABCDEFGHIJKLMN | |||
ABCDEFGHIJKLMNO | |||
ABCDEFGHIJKLMNOP | |||
ABCDEFGHIJKLMNOPQ | |||
ABCDEFGHIJKLMNOPQR | |||
ABCDEFGHIJKLMNOPQRS | |||
ABCDEFGHIJKLMNOPQRST | |||
ABCDEFGHIJKLMNOPQRSTU | |||
ABCDEFGHIJKLMNOPQRSTUV | |||
ABCDEFGHIJKLMNOPQRSTUVW | |||
ABCDEFGHIJKLMNOPQRSTUVWX | |||
ABCDEFGHIJKLMNOPQRSTUVWXY | |||
ABCDEFGHIJKLMNOPQRSTUVWXYZ | |||
]]></echo> | |||
<echo file="${output}/expected.txt"><![CDATA[ | |||
1 | |||
@@ -185,6 +237,32 @@ abcdefghijklmnopqrstuvwxyz | |||
24 | |||
25 | |||
26 | |||
27 | |||
28 | |||
29 | |||
30 | |||
31 | |||
32 | |||
33 | |||
34 | |||
35 | |||
36 | |||
37 | |||
38 | |||
39 | |||
40 | |||
41 | |||
42 | |||
43 | |||
44 | |||
45 | |||
46 | |||
47 | |||
48 | |||
49 | |||
50 | |||
51 | |||
52 | |||
]]></echo> | |||
<replace replacefilterresource="${input}/filter.properties"> | |||
<file file="${output}/text.txt"/> | |||