mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
VirtualFilePointerManager is component again to ensure disposal order
This commit is contained in:
+31
-6
@@ -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<VirtualFilePointerListener, FilePointerPartNode> myPointers = new LinkedHashMap<VirtualFilePointerListener, FilePointerPartNode>();
|
||||
@@ -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;
|
||||
|
||||
@@ -13,8 +13,6 @@
|
||||
|
||||
<applicationService serviceInterface="com.intellij.openapi.vfs.tracker.VirtualFileTracker"
|
||||
serviceImplementation="com.intellij.openapi.vfs.tracker.VirtualFileTrackerImpl"/>
|
||||
<applicationService serviceInterface="com.intellij.openapi.vfs.pointers.VirtualFilePointerManager"
|
||||
serviceImplementation="com.intellij.openapi.vfs.impl.VirtualFilePointerManagerImpl"/>
|
||||
|
||||
<applicationService serviceInterface="com.intellij.concurrency.JobScheduler"
|
||||
serviceImplementation="com.intellij.concurrency.JobSchedulerImpl"/>
|
||||
|
||||
@@ -20,6 +20,11 @@
|
||||
<implementation-class>com.intellij.openapi.vfs.impl.VirtualFileManagerImpl</implementation-class>
|
||||
</component>
|
||||
|
||||
<component>
|
||||
<interface-class>com.intellij.openapi.vfs.pointers.VirtualFilePointerManager</interface-class>
|
||||
<implementation-class>com.intellij.openapi.vfs.impl.VirtualFilePointerManagerImpl</implementation-class>
|
||||
</component>
|
||||
|
||||
<component>
|
||||
<interface-class>com.intellij.openapi.vfs.newvfs.ManagingFS</interface-class>
|
||||
<implementation-class>com.intellij.openapi.vfs.newvfs.persistent.PersistentFS</implementation-class>
|
||||
|
||||
Reference in New Issue
Block a user