mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
More extension unloading fixes.
This commit is contained in:
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user