You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@ant.apache.org by bo...@apache.org on 2009/01/06 10:27:39 UTC
svn commit: r731889 - in /ant/core/trunk: WHATSNEW
src/main/org/apache/tools/ant/taskdefs/Checksum.java
src/tests/antunit/taskdefs/checksum-test.xml
Author: bodewig
Date: Tue Jan 6 01:27:38 2009
New Revision: 731889
URL: http://svn.apache.org/viewvc?rev=731889&view=rev
Log:
make checksum's totalproperty platform independent. PR 36748.
Modified:
ant/core/trunk/WHATSNEW
ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Checksum.java
ant/core/trunk/src/tests/antunit/taskdefs/checksum-test.xml
Modified: ant/core/trunk/WHATSNEW
URL: http://svn.apache.org/viewvc/ant/core/trunk/WHATSNEW?rev=731889&r1=731888&r2=731889&view=diff
==============================================================================
--- ant/core/trunk/WHATSNEW (original)
+++ ant/core/trunk/WHATSNEW Tue Jan 6 01:27:38 2009
@@ -121,6 +121,14 @@
handling on certain Java VMs.
Bugzilla issue 5003.
+ * <checksum>'s totalproperty was platform dependent because it relied
+ on java.io.File#compareTo. It has now been made platform
+ independent, which means that totalPropery values obtained on
+ Windows (and other systems where the sort order of File is not case
+ sensitive) can be different from the values obtained with earlier
+ versions of Ant.
+ Bugzilla Report 36748.
+
Fixed bugs:
-----------
Modified: ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Checksum.java
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Checksum.java?rev=731889&r1=731888&r2=731889&view=diff
==============================================================================
--- ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Checksum.java (original)
+++ ant/core/trunk/src/main/org/apache/tools/ant/taskdefs/Checksum.java Tue Jan 6 01:27:38 2009
@@ -27,6 +27,7 @@
import java.io.FileReader;
import java.io.BufferedReader;
import java.io.IOException;
+import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
@@ -550,8 +551,18 @@
// Convert the keys (source files) into a sorted array.
Set keys = allDigests.keySet();
Object[] keyArray = keys.toArray();
- // File is Comparable, so sorting is trivial
- Arrays.sort(keyArray);
+ // File is Comparable, but sort-order is platform
+ // dependent (case-insensitive on Windows)
+ Arrays.sort(keyArray, new Comparator() {
+ public int compare(Object o1, Object o2) {
+ File f1 = (File) o1;
+ File f2 = (File) o2;
+ return f1 == null ? (f2 == null ? 0 : -1)
+ : (f2 == null ? 1
+ : f1.getName().compareTo(f2.getName())
+ );
+ }
+ });
// Loop over the checksums and generate a total hash.
messageDigest.reset();
for (int i = 0; i < keyArray.length; i++) {
Modified: ant/core/trunk/src/tests/antunit/taskdefs/checksum-test.xml
URL: http://svn.apache.org/viewvc/ant/core/trunk/src/tests/antunit/taskdefs/checksum-test.xml?rev=731889&r1=731888&r2=731889&view=diff
==============================================================================
--- ant/core/trunk/src/tests/antunit/taskdefs/checksum-test.xml (original)
+++ ant/core/trunk/src/tests/antunit/taskdefs/checksum-test.xml Tue Jan 6 01:27:38 2009
@@ -31,7 +31,7 @@
<au:assertPropertySet name="checksumsMatch"/>
</target>
- <target name="xtestTotalPropertyAcrossPlatforms"
+ <target name="testTotalPropertyAcrossPlatforms"
description="testcase for
https://issues.apache.org/bugzilla/show_bug.cgi?id=36748">
<mkdir dir="${input}"/>