@Override public void fileDeleted(FileEvent fe) { clear(); }
@Override protected ZipFile getArchive(final short flags) { return flags == 0 ? zipFile : super.getArchive(flags); }
@Override protected String getPathToRoot(final short flags) { return flags == 0 ? pathToRootInCtSym : super.getPathToRoot(flags); } }
try { boolean success = false; beforeInit(); try { names = new byte[16384]; folders = createMap(archiveFile); trunc(); success = true; } finally { afterInit(success);
private JavaFileObject create( final @NonNull String pkg, final @NonNull Folder f, final @NonNull int off, final @NonNull Predicate<String> predicate) { String baseName = getString(f.indices[off], f.indices[off+1]); if (baseName != null && predicate.apply(baseName)) { long mtime = join(f.indices[off+3], f.indices[off+2]); if (zipFile == null) { if (f.delta == 4) { return FileObjects.zipFileObject(archiveFile, pkg, baseName, mtime); } else { assert f.delta == 6; long offset = join(f.indices[off+5], f.indices[off+4]); return FileObjects.zipFileObject(archiveFile, pkg, baseName, mtime, offset); } } else { return FileObjects.zipFileObject( getArchive(f.flags), getPathToRoot(f.flags), pkg, baseName, mtime); } } return null; }
/** Gets all files in given folder */ @Override public Iterable<JavaFileObject> getFiles( String folderName, ClassPath.Entry entry, Set<JavaFileObject.Kind> kinds, JavaFileFilterImplementation filter ) throws IOException { Map<String, Folder> folders = doInit(); Folder files = folders.get( folderName ); if (files == null) { return Collections.<JavaFileObject>emptyList(); } else { assert !keepOpened || zipFile != null; List<JavaFileObject> l = new ArrayList<>(files.idx / files.delta); final Predicate<String> predicate = kinds == null ? new Tautology() : new HasKind(kinds); for (int i = 0; i < files.idx; i += files.delta){ final JavaFileObject fo = create(folderName, files, i, predicate); if (fo != null) { l.add(fo); } } return l; } }
if (resolved.second() == null) { return Pair.<Archive,URI>of( new CachingArchive( resolved.first(), resolved.second(),
@Override public JavaFileObject getFile(final @NonNull String name) { Map<String, Folder> folders = doInit(); final int index = name.lastIndexOf(FileObjects.NBFS_SEPARATOR_CHAR); String folder, sn; if (index<=0) { folder = ""; //NOI18N sn = name; } else { folder = name.substring(0,index); sn = name.substring(index+1); } Folder files = folders.get(folder); if (files == null) { return null; } else { assert !keepOpened || zipFile != null; final Predicate<String> predicate = new NameIs(sn); for (int i = 0; i < files.idx; i += files.delta){ final JavaFileObject fo = create(folder, files, i, predicate); if (fo != null) { return fo; } } return null; } }
@Override public void fileChanged(FileEvent fe) { clear(); }
@Override public void fileDataCreated(FileEvent fe) { clear(); }
@Override public void fileRenamed(FileRenameEvent fe) { clear(); }