mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
Loading/unloading plugin always adds/removes it from loaded plugins list (IDEA-224401)
GitOrigin-RevId: 0d54397f96daf8b85337d305838970d2a3832682
This commit is contained in:
committed by
intellij-monorepo-bot
parent
ac5dea1ba9
commit
aa55ce2990
@@ -19,6 +19,7 @@ import com.intellij.openapi.project.ProjectManager
|
||||
import com.intellij.openapi.project.impl.ProjectImpl
|
||||
import com.intellij.openapi.util.IconLoader
|
||||
import com.intellij.openapi.util.registry.Registry
|
||||
import com.intellij.util.ArrayUtil
|
||||
import com.intellij.util.MemoryDumpHelper
|
||||
import com.intellij.util.ReflectionUtil
|
||||
import com.intellij.util.SystemProperties
|
||||
@@ -158,6 +159,8 @@ object DynamicPlugins {
|
||||
jdomSerializer.clearSerializationCaches()
|
||||
BeanBinding.clearSerializationCaches()
|
||||
|
||||
PluginManagerCore.setPlugins(ArrayUtil.remove(PluginManagerCore.getPlugins(), loadedPluginDescriptor))
|
||||
|
||||
val classLoaderUnloaded = loadedPluginDescriptor.unloadClassLoader()
|
||||
if (!classLoaderUnloaded && Registry.`is`("ide.plugins.snapshot.on.unload.fail") && MemoryDumpHelper.memoryDumpAvailable()) {
|
||||
val snapshotFolder = System.getProperty("snapshots.path", SystemProperties.getUserHome())
|
||||
@@ -166,6 +169,7 @@ object DynamicPlugins {
|
||||
MemoryDumpHelper.captureMemoryDump(snapshotPath)
|
||||
GROUP.createNotification("Captured memory snapshot on plugin unload fail: $snapshotPath", NotificationType.WARNING).notify(null)
|
||||
}
|
||||
|
||||
return classLoaderUnloaded
|
||||
}
|
||||
|
||||
@@ -184,6 +188,7 @@ object DynamicPlugins {
|
||||
(ActionManager.getInstance() as ActionManagerImpl).registerPluginActions(pluginDescriptor)
|
||||
}
|
||||
|
||||
PluginManagerCore.setPlugins(ArrayUtil.mergeArrays(PluginManagerCore.getPlugins(), arrayOf(pluginDescriptor)))
|
||||
application.messageBus.syncPublisher(DynamicPluginListener.TOPIC).pluginLoaded(pluginDescriptor)
|
||||
}
|
||||
|
||||
|
||||
@@ -24,7 +24,6 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtil;
|
||||
import com.intellij.openapi.vfs.VfsUtilCore;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.ArrayUtilRt;
|
||||
import com.intellij.util.Consumer;
|
||||
import com.intellij.util.io.Decompressor;
|
||||
@@ -93,7 +92,6 @@ public class PluginInstaller {
|
||||
boolean uninstalledWithoutRestart = DynamicPlugins.unloadPlugin((IdeaPluginDescriptorImpl)pluginDescriptor);
|
||||
if (uninstalledWithoutRestart) {
|
||||
FileUtil.delete(pluginDescriptor.getPath());
|
||||
PluginManagerCore.setPlugins(ArrayUtil.remove(PluginManagerCore.getPlugins(), pluginDescriptor));
|
||||
}
|
||||
else {
|
||||
try {
|
||||
@@ -252,7 +250,6 @@ public class PluginInstaller {
|
||||
IdeaPluginDescriptorImpl targetDescriptor = PluginManagerCore.loadDescriptor(targetFile, PluginManagerCore.PLUGIN_XML);
|
||||
if (targetDescriptor != null) {
|
||||
DynamicPlugins.loadPlugin(targetDescriptor);
|
||||
PluginManagerCore.setPlugins(ArrayUtil.mergeArrays(PluginManagerCore.getPlugins(), new IdeaPluginDescriptor[]{targetDescriptor}));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user