langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndexArchive.java
changeset 3782 ae62279eeb46
parent 3380 a6c2bcab0fec
child 3995 73af8b6fb8bc
child 3890 b53fced26fa4
--- a/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndexArchive.java	Thu Sep 03 18:34:17 2009 -0700
+++ b/langtools/src/share/classes/com/sun/tools/javac/file/ZipFileIndexArchive.java	Tue Sep 08 11:12:13 2009 -0700
@@ -72,7 +72,7 @@
     public JavaFileObject getFileObject(RelativeDirectory subdirectory, String file) {
         RelativeFile fullZipFileName = new RelativeFile(subdirectory, file);
         ZipFileIndex.Entry entry = zfIndex.getZipIndexEntry(fullZipFileName);
-        JavaFileObject ret = new ZipFileIndexFileObject(fileManager, zfIndex, entry, zfIndex.getZipFile().getPath());
+        JavaFileObject ret = new ZipFileIndexFileObject(fileManager, zfIndex, entry, zfIndex.getZipFile());
         return ret;
     }
 
@@ -84,6 +84,7 @@
         zfIndex.close();
     }
 
+    @Override
     public String toString() {
         return "ZipFileIndexArchive[" + zfIndex + "]";
     }
@@ -111,10 +112,10 @@
 
         /** The name of the zip file where this entry resides.
          */
-        String zipName;
+        File zipName;
 
 
-        ZipFileIndexFileObject(JavacFileManager fileManager, ZipFileIndex zfIndex, ZipFileIndex.Entry entry, String zipFileName) {
+        ZipFileIndexFileObject(JavacFileManager fileManager, ZipFileIndex zfIndex, ZipFileIndex.Entry entry, File zipFileName) {
             super(fileManager);
             this.name = entry.getFileName();
             this.zfIndex = zfIndex;
@@ -130,6 +131,7 @@
             return inputStream;
         }
 
+        @Override
         protected CharsetDecoder getDecoder(boolean ignoreEncodingErrors) {
             return fileManager.getDecoder(fileManager.getEncodingName(), ignoreEncodingErrors);
         }
@@ -157,6 +159,7 @@
 
         /** @deprecated see bug 6410637 */
         @Deprecated
+        @Override
         public String getPath() {
             return zipName + "(" + entry.getName() + ")";
         }
@@ -183,7 +186,7 @@
         }
 
         public String getZipName() {
-            return zipName;
+            return zipName.getPath();
         }
 
         public String getZipEntryName() {
@@ -191,9 +194,10 @@
         }
 
         public URI toUri() {
-            String zipName = new File(getZipName()).toURI().normalize().getPath();
-            String entryName = getZipEntryName();
-            return URI.create("jar:" + zipName + "!" + entryName);
+            if (zfIndex.symbolFilePrefix != null)
+                return createJarUri(zipName, zfIndex.symbolFilePrefix.path + entry.getName());
+            else
+                return createJarUri(zipName, entry.getName());
         }
 
         private byte[] read() throws IOException {