diff options
author | Thomas Watson | 2009-07-17 20:26:37 +0000 |
---|---|---|
committer | Thomas Watson | 2009-07-17 20:26:37 +0000 |
commit | aca089604244ae29b85dc2a108d7deb55a518116 (patch) | |
tree | 2e50e53fa7bbb431e90a3bd756e3854073a7178b | |
parent | 66caf25ba0556eadff4d0572e9cd09051d0c71d6 (diff) | |
download | rt.equinox.framework-aca089604244ae29b85dc2a108d7deb55a518116.tar.gz rt.equinox.framework-aca089604244ae29b85dc2a108d7deb55a518116.tar.xz rt.equinox.framework-aca089604244ae29b85dc2a108d7deb55a518116.zip |
Bug 283797 Classloading fails when org.eclipse.osgi.framework.eventmgr.EventManager is closed
-rw-r--r-- | bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java index df8098d88..1ac4e5821 100644 --- a/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java +++ b/bundles/org.eclipse.osgi/defaultAdaptor/src/org/eclipse/osgi/baseadaptor/bundlefile/MRUBundleFileList.java @@ -191,12 +191,18 @@ public class MRUBundleFileList implements EventDispatcher { private void closeBundleFile(BundleFile toRemove) { if (toRemove == null) return; - /* queue to hold set of listeners */ - ListenerQueue queue = new ListenerQueue(bundleFileCloserManager); - /* add bundle file closer to the queue */ - queue.queueListeners(bundleFileCloser.entrySet(), this); - /* dispatch event to set of listeners */ - queue.dispatchEventAsynchronous(0, toRemove); + try { + /* queue to hold set of listeners */ + ListenerQueue queue = new ListenerQueue(bundleFileCloserManager); + /* add bundle file closer to the queue */ + queue.queueListeners(bundleFileCloser.entrySet(), this); + /* dispatch event to set of listeners */ + queue.dispatchEventAsynchronous(0, toRemove); + } catch (Throwable t) { + // we cannot propagate exceptions out of this method + // failing to queue a bundle close should not cause an error (bug 283797) + // TODO should consider logging + } } /** |