diff --git a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionsArea.java b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionsArea.java index 417f9c842752..5bce11e25d78 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/ExtensionsArea.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/ExtensionsArea.java @@ -53,10 +53,6 @@ public interface ExtensionsArea { void registerExtension(@NotNull PluginDescriptor pluginDescriptor, @NotNull Element extensionElement); - void unregisterExtensionPoint(@NotNull String pluginName, @NotNull Element extensionPointElement); - - void unregisterExtension(@NotNull String pluginName, @NotNull Element extensionElement); - @NotNull PicoContainer getPluginContainer(@NotNull String pluginName); diff --git a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java index 2c4ce5eed564..25db174af726 100644 --- a/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java +++ b/platform/extensions/src/com/intellij/openapi/extensions/impl/ExtensionsAreaImpl.java @@ -22,8 +22,6 @@ import gnu.trove.THashMap; import org.jdom.Attribute; import org.jdom.Element; import org.jdom.Namespace; -import org.jdom.output.Format; -import org.jdom.output.XMLOutputter; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.TestOnly; @@ -31,8 +29,6 @@ import org.picocontainer.MutablePicoContainer; import org.picocontainer.PicoContainer; import org.picocontainer.defaults.ConstructorInjectionComponentAdapter; -import java.io.IOException; -import java.io.StringWriter; import java.util.*; @SuppressWarnings({"HardCodedStringLiteral"}) @@ -58,7 +54,6 @@ public class ExtensionsAreaImpl implements ExtensionsArea { private final AreaInstance myAreaInstance; private final String myAreaClass; - private final Map myExtensionElement2extension = new THashMap(); public ExtensionsAreaImpl(String areaClass, AreaInstance areaInstance, PicoContainer parentPicoContainer, @NotNull LogProvider logger) { myCreationTrace = DEBUG_REGISTRATION ? new Throwable("Area creation trace") : null; @@ -160,7 +155,6 @@ public class ExtensionsAreaImpl implements ExtensionsArea { else { adapter = new ExtensionComponentAdapter(extensionPoint.getClassName(), extensionElement, container, pluginDescriptor, true); } - myExtensionElement2extension.put(extensionElement, adapter); internalGetPluginContainer().registerComponent(adapter); extensionPoint.registerExtensionAdapter(adapter); } @@ -205,37 +199,6 @@ public class ExtensionsAreaImpl implements ExtensionsArea { return myPicoContainer; } - @Override - public void unregisterExtensionPoint(@NotNull String pluginName, @NotNull Element extensionPointElement) { - String epName = pluginName + '.' + extensionPointElement.getAttributeValue("name"); - unregisterExtensionPoint(epName); - } - - @Override - public void unregisterExtension(@NotNull String pluginName, @NotNull Element extensionElement) { - String epName = extractEPName(extensionElement); - if (!myExtensionElement2extension.containsKey(extensionElement)) { - XMLOutputter xmlOutputter = new XMLOutputter(); - Format format = Format.getCompactFormat().setIndent(" ").setTextMode(Format.TextMode.NORMALIZE); - xmlOutputter.setFormat(format); - StringWriter stringWriter = new StringWriter(); - try { - xmlOutputter.output(extensionElement, stringWriter); - } - catch (IOException e) { - throw new RuntimeException(e); - } - myLogger.warn(stringWriter.toString()); - throw new IllegalArgumentException("Trying to unregister extension element that was never registered"); - } - ExtensionComponentAdapter adapter = myExtensionElement2extension.remove(extensionElement); - if (adapter == null) return; - if (getExtensionPoint(epName).unregisterExtensionAdapter(adapter)) { - MutablePicoContainer pluginContainer = internalGetPluginContainer(); - pluginContainer.unregisterComponent(adapter.getComponentKey()); - } - } - @SuppressWarnings({"unchecked"}) private void initialize() { for (Map.Entry entry : ourDefaultEPs.entrySet()) { @@ -332,14 +295,11 @@ public class ExtensionsAreaImpl implements ExtensionsArea { myExtensionPoints.put(name, extensionPoint); notifyEPRegistered(extensionPoint); if (DEBUG_REGISTRATION) { + //noinspection ThrowableResultOfMethodCallIgnored myEPTraces.put(name, new Throwable("Original registration for " + name)); } } - private static boolean equal(final String areaClass, final String anotherAreaClass) { - return areaClass == null ? anotherAreaClass == null : areaClass.equals(anotherAreaClass); - } - @SuppressWarnings({"unchecked"}) private void notifyEPRegistered(final ExtensionPoint extensionPoint) { Collection listeners = myAvailabilityListeners.get(extensionPoint.getName()); @@ -369,6 +329,7 @@ public class ExtensionsAreaImpl implements ExtensionsArea { @Override @NotNull public ExtensionPointImpl getExtensionPoint(@NotNull String extensionPointName) { + //noinspection unchecked ExtensionPointImpl extensionPoint = myExtensionPoints.get(extensionPointName); if (extensionPoint == null) { throw new IllegalArgumentException("Missing extension point: " + extensionPointName + " in area " + myAreaInstance); diff --git a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsAreaTest.java b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsAreaTest.java index e4b1e302f741..291e9a5d8f96 100644 --- a/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsAreaTest.java +++ b/platform/extensions/testSrc/com/intellij/openapi/extensions/impl/ExtensionsAreaTest.java @@ -16,17 +16,10 @@ package com.intellij.openapi.extensions.impl; -import com.intellij.openapi.extensions.ExtensionPoint; import com.intellij.openapi.extensions.Extensions; -import com.intellij.openapi.extensions.AreaPicoContainer; import junit.framework.TestCase; import org.picocontainer.MutablePicoContainer; -import org.picocontainer.PicoContainer; -import org.picocontainer.PicoInitializationException; -import org.picocontainer.PicoIntrospectionException; import org.picocontainer.defaults.DefaultPicoContainer; -import org.picocontainer.defaults.AbstractComponentAdapter; -import org.jdom.Element; import java.util.List; @@ -34,70 +27,14 @@ import java.util.List; * @author mike */ public class ExtensionsAreaTest extends TestCase { - private ExtensionsAreaImpl myExtensionsArea; - private MutablePicoContainer myPicoContainer; - - @Override - protected void setUp() throws Exception { - super.setUp(); - - myExtensionsArea = new ExtensionsAreaImpl("foo", null, new DefaultPicoContainer(), new Extensions.SimpleLogProvider()); - myPicoContainer = myExtensionsArea.getPicoContainer(); - } public void testGetComponentAdapterDoesntDuplicateAdapters() throws Exception { - myPicoContainer.registerComponentImplementation("runnable", ExtensionsAreaTest.class); + MutablePicoContainer picoContainer = + new ExtensionsAreaImpl("foo", null, new DefaultPicoContainer(), new Extensions.SimpleLogProvider()).getPicoContainer(); + picoContainer.registerComponentImplementation("runnable", ExtensionsAreaTest.class); - final List adapters = myPicoContainer.getComponentAdaptersOfType(ExtensionsAreaTest.class); + final List adapters = picoContainer.getComponentAdaptersOfType(ExtensionsAreaTest.class); assertEquals(1, adapters.size()); } - public void testNoCreateOnUnregisterElement() { - myExtensionsArea.registerExtensionPoint("test.ep", TestClass.class.getName(), ExtensionPoint.Kind.BEAN_CLASS); - final Element element = ExtensionComponentAdapterTest.readElement(""); - TestClass.ourCreationCount = 0; - myExtensionsArea.registerExtension("test", element); - assertEquals(0, TestClass.ourCreationCount); - myExtensionsArea.unregisterExtension("test", element); - assertEquals(0, TestClass.ourCreationCount); - } - - public void testNoCreateOnUnregisterExisting() { - myExtensionsArea.registerExtensionPoint("test.ep", TestClass.class.getName(), ExtensionPoint.Kind.BEAN_CLASS); - final Element element = ExtensionComponentAdapterTest.readElement(""); - TestClass.ourCreationCount = 0; - myExtensionsArea.registerExtension("test", element); - assertEquals(0, TestClass.ourCreationCount); - final AreaPicoContainer container = myExtensionsArea.getPicoContainer(); - List instances = container.getComponentInstancesOfType(TestClass.class); - assertEquals(1, instances.size()); - assertEquals(1, TestClass.ourCreationCount); - final Object[] extensions = myExtensionsArea.getExtensionPoint("test.ep").getExtensions(); - assertEquals(1, extensions.length); - instances = container.getComponentInstancesOfType(TestClass.class); - assertEquals(1, instances.size()); - container.registerComponent(new AbstractComponentAdapter(new Object(), Object.class) { - @Override - public Object getComponentInstance(PicoContainer container) throws PicoInitializationException, PicoIntrospectionException { - fail("Should not be invoked"); - throw new Error(); // not reached - } - - @Override - public void verify(PicoContainer container) throws PicoIntrospectionException { - } - }); - final TestClass extension = new TestClass(); - myExtensionsArea.getExtensionPoint("test.ep").registerExtension(extension); - myExtensionsArea.unregisterExtension("test", element); - myExtensionsArea.getExtensionPoint("test.ep").unregisterExtension(extension); - } - - public static class TestClass { - public static int ourCreationCount = 0; - - public TestClass() { - ourCreationCount++; - } - } }