From 8fa0499ffa15c5d025daf03f9cc85a0e784a6ba0 Mon Sep 17 00:00:00 2001 From: Alexey Kudravtsev Date: Tue, 10 Jul 2012 17:27:13 +0400 Subject: [PATCH] VirtualFilePointerManager is component again to ensure disposal order --- .../impl/VirtualFilePointerManagerImpl.java | 37 ++++++++++++++++--- .../src/META-INF/PlatformExtensions.xml | 2 - .../src/componentSets/Platform.xml | 5 +++ 3 files changed, 36 insertions(+), 8 deletions(-) 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 9a192273b04a..748fd7ed36a6 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 @@ -17,6 +17,7 @@ package com.intellij.openapi.vfs.impl; import com.intellij.openapi.Disposable; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.components.ApplicationComponent; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.*; import com.intellij.openapi.util.io.FileUtil; @@ -27,7 +28,10 @@ import com.intellij.openapi.vfs.ex.VirtualFileManagerEx; import com.intellij.openapi.vfs.ex.temp.TempFileSystem; import com.intellij.openapi.vfs.newvfs.BulkFileListener; import com.intellij.openapi.vfs.newvfs.events.*; -import com.intellij.openapi.vfs.pointers.*; +import com.intellij.openapi.vfs.pointers.VirtualFilePointer; +import com.intellij.openapi.vfs.pointers.VirtualFilePointerContainer; +import com.intellij.openapi.vfs.pointers.VirtualFilePointerListener; +import com.intellij.openapi.vfs.pointers.VirtualFilePointerManager; import com.intellij.util.Function; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.messages.MessageBus; @@ -41,11 +45,11 @@ import org.jetbrains.annotations.TestOnly; import java.util.*; -public class VirtualFilePointerManagerImpl extends VirtualFilePointerManager implements ModificationTracker, BulkFileListener { +public class VirtualFilePointerManagerImpl extends VirtualFilePointerManager implements ApplicationComponent, ModificationTracker, BulkFileListener { private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.vfs.impl.VirtualFilePointerManagerImpl"); - private static final TempFileSystem TEMP_FILE_SYSTEM = TempFileSystem.getInstance(); - private static final LocalFileSystem LOCAL_FILE_SYSTEM = LocalFileSystem.getInstance(); - private static final JarFileSystem JAR_FILE_SYSTEM = JarFileSystem.getInstance(); + private final TempFileSystem TEMP_FILE_SYSTEM; + private final LocalFileSystem LOCAL_FILE_SYSTEM; + private final JarFileSystem JAR_FILE_SYSTEM; private long myVfsModificationCounter; // guarded by this private final Map myPointers = new LinkedHashMap(); @@ -67,10 +71,17 @@ public class VirtualFilePointerManagerImpl extends VirtualFilePointerManager imp } }; - VirtualFilePointerManagerImpl(@NotNull VirtualFileManagerEx virtualFileManagerEx, @NotNull MessageBus bus) { + VirtualFilePointerManagerImpl(@NotNull VirtualFileManagerEx virtualFileManagerEx, + @NotNull MessageBus bus, + @NotNull TempFileSystem tempFileSystem, + @NotNull LocalFileSystem localFileSystem, + @NotNull JarFileSystem jarFileSystem) { myVirtualFileManager = virtualFileManagerEx; myBus = bus; bus.connect().subscribe(VirtualFileManager.VFS_CHANGES, this); + TEMP_FILE_SYSTEM = tempFileSystem; + LOCAL_FILE_SYSTEM = localFileSystem; + JAR_FILE_SYSTEM = jarFileSystem; } @@ -79,6 +90,20 @@ public class VirtualFilePointerManagerImpl extends VirtualFilePointerManager imp return myVfsModificationCounter; } + @Override + public void initComponent() { + } + + @Override + public void disposeComponent() { + } + + @NotNull + @Override + public String getComponentName() { + return "VirtualFilePointerManager"; + } + private static class EventDescriptor { @NotNull private final VirtualFilePointerListener myListener; @NotNull private final VirtualFilePointer[] myPointers; diff --git a/platform/platform-resources/src/META-INF/PlatformExtensions.xml b/platform/platform-resources/src/META-INF/PlatformExtensions.xml index dc9af1bf026d..b9a32b2443c2 100644 --- a/platform/platform-resources/src/META-INF/PlatformExtensions.xml +++ b/platform/platform-resources/src/META-INF/PlatformExtensions.xml @@ -13,8 +13,6 @@ - diff --git a/platform/platform-resources/src/componentSets/Platform.xml b/platform/platform-resources/src/componentSets/Platform.xml index 622c78db99b9..127f417d03ca 100644 --- a/platform/platform-resources/src/componentSets/Platform.xml +++ b/platform/platform-resources/src/componentSets/Platform.xml @@ -20,6 +20,11 @@ com.intellij.openapi.vfs.impl.VirtualFileManagerImpl + + com.intellij.openapi.vfs.pointers.VirtualFilePointerManager + com.intellij.openapi.vfs.impl.VirtualFilePointerManagerImpl + + com.intellij.openapi.vfs.newvfs.ManagingFS com.intellij.openapi.vfs.newvfs.persistent.PersistentFS