--- 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 {