From 9bca6ed8b10a560ec828ebc9030d5a7fe1774e91 Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 4 Dec 2015 12:17:07 +0100 Subject: [PATCH] forget negative plugin class loading results (IDEA-148894 Plugin errors wrongly reported as caused by another plugin) --- .../ide/plugins/PluginClassCache.java | 36 ++----------------- .../ide/plugins/PluginManagerCore.java | 12 +++++-- .../ide/plugins/cl/PluginClassLoader.java | 3 +- 3 files changed, 12 insertions(+), 39 deletions(-) diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginClassCache.java b/platform/core-impl/src/com/intellij/ide/plugins/PluginClassCache.java index efaddd447ea8..8208f84e57e6 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/PluginClassCache.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/PluginClassCache.java @@ -15,11 +15,8 @@ */ package com.intellij.ide.plugins; -import com.intellij.ide.plugins.cl.PluginClassLoader; import com.intellij.openapi.extensions.PluginId; -import gnu.trove.THashMap; import gnu.trove.TObjectIntHashMap; -import org.jetbrains.annotations.Nullable; import java.util.*; @@ -28,31 +25,14 @@ import java.util.*; */ class PluginClassCache { private static final Object ourLock = new Object(); - private final Map myMissingClasses = new THashMap(); private final TObjectIntHashMap myClassCounts = new TObjectIntHashMap(); - public void addPluginClass(String className, PluginId pluginId, boolean loaded) { + public void addPluginClass(PluginId pluginId) { synchronized(ourLock) { - if (loaded) { - myMissingClasses.remove(className); - myClassCounts.put(pluginId, myClassCounts.get(pluginId) + 1); - } else { - myMissingClasses.put(className, pluginId); - } + myClassCounts.put(pluginId, myClassCounts.get(pluginId) + 1); } } - @Nullable - private static PluginId findLoadingPlugin(String className) { - for (IdeaPluginDescriptor descriptor : PluginManagerCore.getPlugins()) { - ClassLoader loader = descriptor.getPluginClassLoader(); - if (loader instanceof PluginClassLoader && ((PluginClassLoader)loader).hasLoadedClass(className)) { - return descriptor.getPluginId(); - } - } - return null; - } - public void dumpPluginClassStatistics() { if (!Boolean.valueOf(System.getProperty("idea.is.internal")).booleanValue()) return; @@ -71,16 +51,4 @@ class PluginClassCache { PluginManagerCore.getLogger().info(id + " loaded " + myClassCounts.get(id) + " classes"); } } - - @Nullable - public PluginId getPluginByClassName(String className) { - synchronized (ourLock) { - PluginId id = myMissingClasses.get(className); - if (id != null) { - return id; - } - } - return findLoadingPlugin(className); - } - } diff --git a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java index c8c4d9d73966..03c4ddcf8ad1 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java @@ -299,13 +299,19 @@ public class PluginManagerCore { return true; } - public static void addPluginClass(@NotNull String className, PluginId pluginId, boolean loaded) { - ourPluginClasses.addPluginClass(className, pluginId, loaded); + public static void addPluginClass(PluginId pluginId) { + ourPluginClasses.addPluginClass(pluginId); } @Nullable public static PluginId getPluginByClassName(@NotNull String className) { - return ourPluginClasses.getPluginByClassName(className); + for (IdeaPluginDescriptor descriptor : getPlugins()) { + ClassLoader loader = descriptor.getPluginClassLoader(); + if (loader instanceof PluginClassLoader && ((PluginClassLoader)loader).hasLoadedClass(className)) { + return descriptor.getPluginId(); + } + } + return null; } public static void dumpPluginClassStatistics() { diff --git a/platform/core-impl/src/com/intellij/ide/plugins/cl/PluginClassLoader.java b/platform/core-impl/src/com/intellij/ide/plugins/cl/PluginClassLoader.java index 7a6c876b780c..8cf714c9ea5b 100644 --- a/platform/core-impl/src/com/intellij/ide/plugins/cl/PluginClassLoader.java +++ b/platform/core-impl/src/com/intellij/ide/plugins/cl/PluginClassLoader.java @@ -83,7 +83,6 @@ public class PluginClassLoader extends UrlClassLoader { return c; } - PluginManagerCore.addPluginClass(name, myPluginId, false); return null; } @@ -126,7 +125,7 @@ public class PluginClassLoader extends UrlClassLoader { throw new PluginException(e, myPluginId); } if (c != null) { - PluginManagerCore.addPluginClass(c.getName(), myPluginId, true); + PluginManagerCore.addPluginClass(myPluginId); } return c;