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

changeset 424
86b773b7cb40
parent 333
7c2d6da61646
child 444
ea89c5d4af08
     1.1 --- a/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java	Tue Oct 13 15:26:30 2009 -0700
     1.2 +++ b/src/share/classes/com/sun/tools/javac/file/ZipFileIndex.java	Wed Oct 14 15:41:28 2009 -0700
     1.3 @@ -30,6 +30,7 @@
     1.4  import java.io.FileNotFoundException;
     1.5  import java.io.IOException;
     1.6  import java.io.RandomAccessFile;
     1.7 +import java.lang.ref.Reference;
     1.8  import java.lang.ref.SoftReference;
     1.9  import java.util.ArrayList;
    1.10  import java.util.Arrays;
    1.11 @@ -89,6 +90,7 @@
    1.12  
    1.13      // ZipFileIndex data entries
    1.14      private File zipFile;
    1.15 +    private Reference<File> absFileRef;
    1.16      private long zipFileLastModified = NOT_MODIFIED;
    1.17      private RandomAccessFile zipRandomFile;
    1.18      private Entry[] entries;
    1.19 @@ -1215,6 +1217,15 @@
    1.20          return zipFile;
    1.21      }
    1.22  
    1.23 +    File getAbsoluteFile() {
    1.24 +        File absFile = (absFileRef == null ? null : absFileRef.get());
    1.25 +        if (absFile == null) {
    1.26 +            absFile = zipFile.getAbsoluteFile();
    1.27 +            absFileRef = new SoftReference<File>(absFile);
    1.28 +        }
    1.29 +        return absFile;
    1.30 +    }
    1.31 +
    1.32      private RelativeDirectory getRelativeDirectory(String path) {
    1.33          RelativeDirectory rd;
    1.34          SoftReference<RelativeDirectory> ref = relativeDirectoryCache.get(path);

mercurial