7177701: error: Filling jar message during javax/imageio/metadata/IIOMetadataFormatImpl compilation
Summary: Recent JDK hash changes affected order in which files are returned from JavacFileManager.list()
Reviewed-by: jjg
--- a/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java Sun Jun 17 21:37:21 2012 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java Tue Jun 19 13:25:58 2012 +0100
@@ -36,6 +36,7 @@
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collections;
+import java.util.LinkedHashMap;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
@@ -284,7 +285,7 @@
try {
checkIndex();
if (allDirs == Collections.EMPTY_SET) {
- allDirs = new HashSet<RelativeDirectory>(directories.keySet());
+ allDirs = new java.util.LinkedHashSet<RelativeDirectory>(directories.keySet());
}
return allDirs;
@@ -572,7 +573,7 @@
// Add each of the files
if (entryCount > 0) {
- directories = new HashMap<RelativeDirectory, DirectoryEntry>();
+ directories = new LinkedHashMap<RelativeDirectory, DirectoryEntry>();
ArrayList<Entry> entryList = new ArrayList<Entry>();
int pos = 2;
for (int i = 0; i < entryCount; i++) {
@@ -867,7 +868,7 @@
if (zipFile.lastModified() != fileStamp) {
ret = false;
} else {
- directories = new HashMap<RelativeDirectory, DirectoryEntry>();
+ directories = new LinkedHashMap<RelativeDirectory, DirectoryEntry>();
int numDirs = raf.readInt();
for (int nDirs = 0; nDirs < numDirs; nDirs++) {
int dirNameBytesLen = raf.readInt();