More extension unloading fixes.

This commit is contained in:
Alexander Kireyev
2005-03-02 17:37:45 +03:00
parent c1e3a91cb7
commit 43357dc64d
2 changed files with 11 additions and 2 deletions
@@ -169,12 +169,18 @@ public class ExtensionPointImpl implements ExtensionPoint {
public void unregisterExtension(final Object extension) {
assert (extension != null) : "Extension cannot be null";
if (!myExtensions.contains(extension)) {
throw new IllegalArgumentException("Extension to be removed not found: " + extension);
}
myOwner.getMutablePicoContainer().unregisterComponentByInstance(extension);
final int index = myExtensions.indexOf(extension);
final ExtensionComponentAdapter adapter = (ExtensionComponentAdapter)myLoadedAdapters.get(index);
myOwner.getMutablePicoContainer().unregisterComponent(adapter.getComponentKey());
final MutablePicoContainer[] pluginContainers = myOwner.getPluginContainers();
for (int i = 0; i < pluginContainers.length; i++) {
MutablePicoContainer pluginContainer = pluginContainers[i];
pluginContainer.unregisterComponentByInstance(extension);
pluginContainer.unregisterComponent(adapter.getComponentKey());
}
processAdapters();
@@ -67,7 +67,10 @@ public class ExtensionsAreaTest extends TestCase {
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 {