changeset 1304:a0550cd75339

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: mcimadamore
author dmeetry
date Fri, 22 Jun 2012 04:44:29 +0400
parents 45ea1fdc4376
children 3468648bb521
files src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java
diffstat 1 files changed, 5 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java	Thu Jun 07 14:53:35 2012 -0700
+++ b/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java	Fri Jun 22 04:44:29 2012 +0400
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2007, 2011, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2007, 2012, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -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();