remove unused ExtensionsArea.unregister*

This commit is contained in:
peter
2014-04-28 20:14:27 +02:00
parent 3ad5dd7125
commit ae954a6d61
3 changed files with 6 additions and 112 deletions
@@ -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);
@@ -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<Element,ExtensionComponentAdapter> myExtensionElement2extension = new THashMap<Element, ExtensionComponentAdapter>();
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<String, String> 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<ExtensionPointAvailabilityListener> listeners = myAvailabilityListeners.get(extensionPoint.getName());
@@ -369,6 +329,7 @@ public class ExtensionsAreaImpl implements ExtensionsArea {
@Override
@NotNull
public <T> ExtensionPointImpl<T> getExtensionPoint(@NotNull String extensionPointName) {
//noinspection unchecked
ExtensionPointImpl<T> extensionPoint = myExtensionPoints.get(extensionPointName);
if (extensionPoint == null) {
throw new IllegalArgumentException("Missing extension point: " + extensionPointName + " in area " + myAreaInstance);
@@ -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("<extension point=\"test.ep\"/>");
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("<extension point=\"test.ep\"/>");
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++;
}
}
}