mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IDEA-170889 If two plugins have conflict in Extension Point, IDE never start
(cherry picked from commit 257828c)
This commit is contained in:
@@ -15,6 +15,7 @@
|
||||
*/
|
||||
package com.intellij.ide.plugins;
|
||||
|
||||
import com.intellij.diagnostic.PluginException;
|
||||
import com.intellij.ide.ClassUtilCore;
|
||||
import com.intellij.ide.IdeBundle;
|
||||
import com.intellij.ide.StartupProgress;
|
||||
@@ -25,6 +26,7 @@ import com.intellij.openapi.application.PathManager;
|
||||
import com.intellij.openapi.components.ExtensionAreas;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.extensions.*;
|
||||
import com.intellij.openapi.extensions.impl.PicoPluginExtensionInitializationException;
|
||||
import com.intellij.openapi.util.BuildNumber;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.Couple;
|
||||
@@ -1363,6 +1365,9 @@ public class PluginManagerCore {
|
||||
try {
|
||||
initializePlugins(progress);
|
||||
}
|
||||
catch (PicoPluginExtensionInitializationException e) {
|
||||
throw new PluginException(e, e.getPluginId());
|
||||
}
|
||||
catch (RuntimeException e) {
|
||||
getLogger().error(e);
|
||||
throw e;
|
||||
@@ -1407,4 +1412,4 @@ public class PluginManagerCore {
|
||||
getLogger().info(t);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+5
-5
@@ -277,13 +277,13 @@ public class ExtensionsAreaImpl implements ExtensionsArea {
|
||||
@NotNull PluginDescriptor descriptor,
|
||||
@NotNull ExtensionPoint.Kind kind) {
|
||||
if (hasExtensionPoint(extensionPointName)) {
|
||||
final String message =
|
||||
"Duplicate registration for EP: " + extensionPointName + ": original plugin " + getExtensionPoint(extensionPointName).getDescriptor().getPluginId() +
|
||||
", new plugin " + descriptor.getPluginId();
|
||||
if (DEBUG_REGISTRATION) {
|
||||
final ExtensionPointImpl oldEP = getExtensionPoint(extensionPointName);
|
||||
myLogger.error("Duplicate registration for EP: " + extensionPointName + ": original plugin " + oldEP.getDescriptor().getPluginId() +
|
||||
", new plugin " + descriptor.getPluginId(),
|
||||
myEPTraces.get(extensionPointName));
|
||||
myLogger.error(message, myEPTraces.get(extensionPointName));
|
||||
}
|
||||
throw new RuntimeException("Duplicate registration for EP: " + extensionPointName);
|
||||
throw new PicoPluginExtensionInitializationException(message, null, descriptor.getPluginId());
|
||||
}
|
||||
|
||||
registerExtensionPoint(new ExtensionPointImpl(extensionPointName, extensionPointBeanClass, kind, this, myAreaInstance, descriptor));
|
||||
|
||||
Reference in New Issue
Block a user