private openjdk.com.sun.tools.javac.util.List<Entry> getEntries() { if (!zipFileEntriesInited) { initEntries(); zipFileEntries = openjdk.com.sun.tools.javac.util.List.nil(); for (Entry zfie : entries) { zipFileEntries = zipFileEntries.append(zfie); } zipFileEntriesInited = true; } return zipFileEntries; }
public synchronized List<String> getDirectories(RelativeDirectory path) { try { checkIndex(); DirectoryEntry de = directories.get(path); openjdk.com.sun.tools.javac.util.List<String> ret = de == null ? null : de.getDirectories(); if (ret == null) { return openjdk.com.sun.tools.javac.util.List.<String>nil(); } return ret; } catch (IOException e) { return openjdk.com.sun.tools.javac.util.List.<String>nil(); } }
private openjdk.com.sun.tools.javac.util.List<String> getDirectories() { if (!directoriesInited) { initEntries(); for (Entry e : entries) { if (e.isDir) { zipFileEntriesDirectories = zipFileEntriesDirectories.append(e.name); } } directoriesInited = true; } return zipFileEntriesDirectories; }
/** * ------------------------------------------------------------------------ DirectoryEntry class * ------------------------------------------------------------------------- */ static class DirectoryEntry { private boolean filesInited; private boolean directoriesInited; private boolean zipFileEntriesInited; private boolean entriesInited; private long writtenOffsetOffset = 0; private RelativeDirectory dirName; private openjdk.com.sun.tools.javac.util.List<String> zipFileEntriesFiles = openjdk.com.sun.tools.javac.util.List.<String>nil(); private openjdk.com.sun.tools.javac.util.List<String> zipFileEntriesDirectories = openjdk.com.sun.tools.javac.util.List.<String>nil(); private openjdk.com.sun.tools.javac.util.List<Entry> zipFileEntries = openjdk.com.sun.tools.javac.util.List.<Entry>nil(); private List<Entry> entries = new ArrayList<Entry>(); private ZipFileIndex zipFileIndex; private int numEntries; DirectoryEntry(RelativeDirectory dirName, ZipFileIndex index) { filesInited = false; directoriesInited = false; entriesInited = false; this.dirName = dirName; this.zipFileIndex = index; } private openjdk.com.sun.tools.javac.util.List<String> getFiles() { if (!filesInited) { initEntries(); for (Entry e : entries) { if (!e.isDir) { zipFileEntriesFiles = zipFileEntriesFiles.append(e.name); } } filesInited = true; } return zipFileEntriesFiles; } private openjdk.com.sun.tools.javac.util.List<String> getDirectories() { if (!directoriesInited) { initEntries(); for (Entry e : entries) { if (e.isDir) { zipFileEntriesDirectories = zipFileEntriesDirectories.append(e.name); } } directoriesInited = true; } return zipFileEntriesDirectories; } private openjdk.com.sun.tools.javac.util.List<Entry> getEntries() { if (!zipFileEntriesInited) { initEntries(); zipFileEntries = openjdk.com.sun.tools.javac.util.List.nil(); for (Entry zfie : entries) { zipFileEntries = zipFileEntries.append(zfie); } zipFileEntriesInited = true; } return zipFileEntries; } private Entry getEntry(String rootName) { initEntries(); int index = Collections.binarySearch(entries, new Entry(dirName, rootName)); if (index < 0) { return null; } return entries.get(index); } private void initEntries() { if (entriesInited) { return; } if (!zipFileIndex.readFromIndex) { int from = -Arrays.binarySearch(zipFileIndex.entries, new Entry(dirName, ZipFileIndex.MIN_CHAR)) - 1; int to = -Arrays.binarySearch(zipFileIndex.entries, new Entry(dirName, MAX_CHAR)) - 1; for (int i = from; i < to; i++) { entries.add(zipFileIndex.entries[i]); } } else { File indexFile = zipFileIndex.getIndexFile(); if (indexFile != null) { RandomAccessFile raf = null; try { raf = new RandomAccessFile(indexFile, "r"); raf.seek(writtenOffsetOffset); for (int nFiles = 0; nFiles < numEntries; nFiles++) { // Read the name bytes int zfieNameBytesLen = raf.readInt(); byte[] zfieNameBytes = new byte[zfieNameBytesLen]; raf.read(zfieNameBytes); String eName = new String(zfieNameBytes, "UTF-8"); // Read isDir boolean eIsDir = raf.readByte() == (byte) 0 ? false : true; // Read offset of bytes in the real Jar/Zip file int eOffset = raf.readInt(); // Read size of the file in the real Jar/Zip file int eSize = raf.readInt(); // Read compressed size of the file in the real Jar/Zip file int eCsize = raf.readInt(); // Read java time stamp of the file in the real Jar/Zip file long eJavaTimestamp = raf.readLong(); Entry rfie = new Entry(dirName, eName); rfie.isDir = eIsDir; rfie.offset = eOffset; rfie.size = eSize; rfie.compressedSize = eCsize; rfie.javatime = eJavaTimestamp; entries.add(rfie); } } catch (Throwable t) { // Do nothing } finally { try { if (raf != null) { raf.close(); } } catch (Throwable t) { // Do nothing } } } } entriesInited = true; } List<Entry> getEntriesAsCollection() { initEntries(); return entries; } }