From caf42ff54d8fe07b31ba09a9fbdb8867586e030d Mon Sep 17 00:00:00 2001 From: Roman Shevchenko Date: Tue, 19 May 2015 16:49:28 +0200 Subject: [PATCH] IDEA-COMMUNITY-CR-2175 (explicit archive handler cleanup) --- .../src/com/intellij/openapi/vfs/impl/ArchiveHandler.java | 4 ++++ .../src/com/intellij/openapi/vfs/impl/ZipHandler.java | 4 +++- .../src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java | 1 + 3 files changed, 8 insertions(+), 1 deletion(-) diff --git a/platform/core-api/src/com/intellij/openapi/vfs/impl/ArchiveHandler.java b/platform/core-api/src/com/intellij/openapi/vfs/impl/ArchiveHandler.java index 7f18dc63d272..909e20fdfdb4 100644 --- a/platform/core-api/src/com/intellij/openapi/vfs/impl/ArchiveHandler.java +++ b/platform/core-api/src/com/intellij/openapi/vfs/impl/ArchiveHandler.java @@ -92,6 +92,10 @@ public abstract class ArchiveHandler { return ArrayUtil.toStringArray(names); } + public void dispose() { + myEntries.clear(); + } + @Nullable protected EntryInfo getEntryInfo(@NotNull String relativePath) { return getEntriesMap().get(relativePath); diff --git a/platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java b/platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java index a016a390c16a..ce5fe008eda9 100644 --- a/platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java +++ b/platform/core-impl/src/com/intellij/openapi/vfs/impl/ZipHandler.java @@ -119,7 +119,9 @@ public class ZipHandler extends ArchiveHandler { return getFile(); } - public void dispose() { // todo it would be nice to dispose ZipHandler + @Override + public void dispose() { + super.dispose(); ourZipFileFileAccessorCache.remove(this); } diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java index 65c8be298efc..521ee8f82441 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/newvfs/VfsImplUtil.java @@ -302,6 +302,7 @@ public class VfsImplUtil { static InvalidationState invalidate(@Nullable InvalidationState state, final String path) { Pair handlerPair = ourHandlers.remove(path); if (handlerPair != null) { + handlerPair.second.dispose(); forEachDirectoryComponent(path, new Consumer() { @Override public void consume(String containingDirectoryPath) {