Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Watson2009-07-17 20:26:37 +0000
committerThomas Watson2009-07-17 20:26:37 +0000
commitaca089604244ae29b85dc2a108d7deb55a518116 (patch)
tree2e50e53fa7bbb431e90a3bd756e3854073a7178b
parent66caf25ba0556eadff4d0572e9cd09051d0c71d6 (diff)
downloadrt.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.java18
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
+ }
}
/**

Back to the top