src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java

changeset 424
86b773b7cb40
parent 333
7c2d6da61646
child 444
ea89c5d4af08
equal deleted inserted replaced
423:8a4543b30586 424:86b773b7cb40
28 28
29 import java.io.File; 29 import java.io.File;
30 import java.io.FileNotFoundException; 30 import java.io.FileNotFoundException;
31 import java.io.IOException; 31 import java.io.IOException;
32 import java.io.RandomAccessFile; 32 import java.io.RandomAccessFile;
33 import java.lang.ref.Reference;
33 import java.lang.ref.SoftReference; 34 import java.lang.ref.SoftReference;
34 import java.util.ArrayList; 35 import java.util.ArrayList;
35 import java.util.Arrays; 36 import java.util.Arrays;
36 import java.util.Calendar; 37 import java.util.Calendar;
37 import java.util.Collections; 38 import java.util.Collections;
87 private Map<RelativeDirectory, DirectoryEntry> directories = Collections.<RelativeDirectory, DirectoryEntry>emptyMap(); 88 private Map<RelativeDirectory, DirectoryEntry> directories = Collections.<RelativeDirectory, DirectoryEntry>emptyMap();
88 private Set<RelativeDirectory> allDirs = Collections.<RelativeDirectory>emptySet(); 89 private Set<RelativeDirectory> allDirs = Collections.<RelativeDirectory>emptySet();
89 90
90 // ZipFileIndex data entries 91 // ZipFileIndex data entries
91 private File zipFile; 92 private File zipFile;
93 private Reference<File> absFileRef;
92 private long zipFileLastModified = NOT_MODIFIED; 94 private long zipFileLastModified = NOT_MODIFIED;
93 private RandomAccessFile zipRandomFile; 95 private RandomAccessFile zipRandomFile;
94 private Entry[] entries; 96 private Entry[] entries;
95 97
96 private boolean readFromIndex = false; 98 private boolean readFromIndex = false;
1213 1215
1214 public File getZipFile() { 1216 public File getZipFile() {
1215 return zipFile; 1217 return zipFile;
1216 } 1218 }
1217 1219
1220 File getAbsoluteFile() {
1221 File absFile = (absFileRef == null ? null : absFileRef.get());
1222 if (absFile == null) {
1223 absFile = zipFile.getAbsoluteFile();
1224 absFileRef = new SoftReference<File>(absFile);
1225 }
1226 return absFile;
1227 }
1228
1218 private RelativeDirectory getRelativeDirectory(String path) { 1229 private RelativeDirectory getRelativeDirectory(String path) {
1219 RelativeDirectory rd; 1230 RelativeDirectory rd;
1220 SoftReference<RelativeDirectory> ref = relativeDirectoryCache.get(path); 1231 SoftReference<RelativeDirectory> ref = relativeDirectoryCache.get(path);
1221 if (ref != null) { 1232 if (ref != null) {
1222 rd = ref.get(); 1233 rd = ref.get();

mercurial