From 0ccf0333586a0e16186a45bb17d6f3710bdd99da Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Thu, 22 Mar 2012 13:58:17 +0400 Subject: [PATCH] cleanup --- .../openapi/vfs/impl/VirtualFilePointerImpl.java | 10 +--------- .../vfs/impl/VirtualFilePointerManagerImpl.java | 15 ++++++++++++--- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerImpl.java index f7ed49cd2e13..94958ea54446 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerImpl.java @@ -20,7 +20,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.UserDataHolderBase; -import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileManager; import com.intellij.openapi.vfs.pointers.VirtualFilePointer; @@ -220,14 +219,7 @@ public class VirtualFilePointerImpl extends UserDataHolderBase implements Virtua disposed = true; final Pair pair = myFileAndUrl; - VirtualFile file = pair.first; - if (file != null) { - ((VirtualFilePointerManagerImpl)VirtualFilePointerManager.getInstance()).clearPointerCaches(file.getUrl(), myListener); - } - String url = pair.second; - if (url != null && (file == null || !FileUtil.pathsEqual(url, file.getUrl()))) { - ((VirtualFilePointerManagerImpl)VirtualFilePointerManager.getInstance()).clearPointerCaches(url, myListener); - } + ((VirtualFilePointerManagerImpl)VirtualFilePointerManager.getInstance()).clearPointerCaches(pair.first, pair.second, myListener); } } diff --git a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerManagerImpl.java b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerManagerImpl.java index aeb21afc0a17..afde58208c46 100644 --- a/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/vfs/impl/VirtualFilePointerManagerImpl.java @@ -52,7 +52,7 @@ public class VirtualFilePointerManagerImpl extends VirtualFilePointerManager imp private final Set myContainers = new THashSet(TObjectHashingStrategy.IDENTITY); private final VirtualFileManagerEx myVirtualFileManager; private final MessageBus myBus; - private static final Comparator COMPARATOR = SystemInfo.isFileSystemCaseSensitive ? new Comparator() { + private static final Comparator URL_COMPARATOR = SystemInfo.isFileSystemCaseSensitive ? new Comparator() { @Override public int compare(@NotNull String url1, @NotNull String url2) { return url1.compareTo(url2); @@ -70,7 +70,16 @@ public class VirtualFilePointerManagerImpl extends VirtualFilePointerManager imp bus.connect().subscribe(VirtualFileManager.VFS_CHANGES, new VFSEventsProcessor()); } - synchronized void clearPointerCaches(String url, VirtualFilePointerListener listener) { + synchronized void clearPointerCaches(VirtualFile file, String url, VirtualFilePointerListener listener) { + if (file != null) { + removeFromMap(file.getUrl(), listener); + } + if (url != null && (file == null || URL_COMPARATOR.compare(url, file.getUrl()) != 0)) { + removeFromMap(url, listener); + } + } + + private void removeFromMap(String url, VirtualFilePointerListener listener) { TreeMap urlToPointer = myUrlToPointerMaps.get(listener); assert urlToPointer != null : url; urlToPointer.remove(VfsUtil.urlToPath(url)); @@ -272,7 +281,7 @@ public class VirtualFilePointerManagerImpl extends VirtualFilePointerManager imp private synchronized VirtualFilePointerImpl getOrCreate(VirtualFile file, @NotNull String url, Disposable parentDisposable, @Nullable VirtualFilePointerListener listener, String path) { TreeMap urlToPointer = myUrlToPointerMaps.get(listener); if (urlToPointer == null) { - urlToPointer = new TreeMap(COMPARATOR); + urlToPointer = new TreeMap(URL_COMPARATOR); myUrlToPointerMaps.put(listener, urlToPointer); } VirtualFilePointerImpl pointer = urlToPointer.get(path);