private void removeFile(final FileSystemAndNameKey key) { synchronized (this) { Map files = getOrCreateFilesystemCache(key.getFileSystem()); Object ref = files.remove(key.getFileName()); if (ref != null) { refReverseMap.remove(ref); } if (files.size() < 1) { filesystemClose(key.getFileSystem()); } } }
public void clear(FileSystem filesystem) { synchronized (this) { Map files = getOrCreateFilesystemCache(filesystem); Iterator iterKeys = refReverseMap.values().iterator(); while (iterKeys.hasNext()) { FileSystemAndNameKey key = (FileSystemAndNameKey) iterKeys.next(); if (key.getFileSystem() == filesystem) { iterKeys.remove(); files.remove(key.getFileName()); } } if (files.size() < 1) { filesystemClose(filesystem); } } }