Bug 275932 [CommonNavigator] Window close throws exception in ObservableCollectionTreeContentProvider
Build ID: I20090313-0100 Steps To Reproduce: 1. Build an RCP app with a CommonViewer. 2. The CommonViewer uses an ObservableListTreeContentProvider. 3. Close the app workbench window. More information: Below are TWO stack traces. The first is when the ObservableCollectionTreeContentProvider is disposed. The second is when it throws the exception. The window close causes the provider to be disposed. Later, the closure causes a viewer input change, which in turn causes the disposed provider to be used. Since it is already disposed it of course throws an exception. (BTW: Of course there is the immediate problem with the provider, but there is a bigger question: Why is the system trying to change input on a viewer that is in the midst of disposal? I've had to deal with this unexpected behavior before.) ====== Close window -> dispose content provider ====== Thread [main] (Suspended (breakpoint at line 277 in org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider)) org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider$Impl(org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider).dispose() line: 277 com.msli.jme.rcp.provider.JmeModelContentProvider(org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider).dispose() line: 223 org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider$1.run() line: 69 org.eclipse.core.runtime.SafeRunner.run(org.eclipse.core.runtime.ISafeRunnable) line: 37 org.eclipse.ui.internal.navigator.extensions.SafeDelegateTreeContentProvider.dispose() line: 60 org.eclipse.ui.internal.navigator.extensions.NavigatorContentExtension$1.run() line: 225 org.eclipse.core.runtime.SafeRunner.run(org.eclipse.core.runtime.ISafeRunnable) line: 37 org.eclipse.ui.internal.navigator.extensions.NavigatorContentExtension.dispose() line: 214 org.eclipse.ui.internal.navigator.NavigatorContentService.dispose() line: 343 org.eclipse.ui.navigator.CommonViewer.dispose() line: 251 org.eclipse.ui.navigator.CommonViewer.handleDispose(org.eclipse.swt.events.DisposeEvent) line: 239 org.eclipse.jface.viewers.ContentViewer$2.widgetDisposed(org.eclipse.swt.events.DisposeEvent) line: 214 org.eclipse.swt.widgets.TypedListener.handleEvent(org.eclipse.swt.widgets.Event) line: 117 org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event) line: 84 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(org.eclipse.swt.widgets.Event) line: 1003 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event, boolean) line: 1027 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(int) line: 1008 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).release(boolean) line: 804 org.eclipse.swt.widgets.Composite.releaseChildren(boolean) line: 754 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).release(boolean) line: 807 org.eclipse.swt.widgets.Composite.releaseChildren(boolean) line: 754 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).release(boolean) line: 807 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).dispose() line: 441 org.eclipse.ui.internal.ViewPane(org.eclipse.ui.internal.PartPane).dispose() line: 180 org.eclipse.ui.internal.ViewPane.dispose() line: 192 org.eclipse.ui.internal.ViewReference(org.eclipse.ui.internal.WorkbenchPartReference).dispose() line: 681 org.eclipse.ui.internal.WorkbenchPage.disposePart(org.eclipse.ui.internal.WorkbenchPartReference) line: 1715 org.eclipse.ui.internal.WorkbenchPage.partRemoved(org.eclipse.ui.internal.WorkbenchPartReference) line: 1707 org.eclipse.ui.internal.ViewFactory.releaseView(org.eclipse.ui.IViewReference) line: 256 org.eclipse.ui.internal.Perspective.dispose() line: 289 org.eclipse.ui.internal.WorkbenchPage.dispose() line: 1786 org.eclipse.ui.internal.WorkbenchWindow.closeAllPages() line: 850 org.eclipse.ui.internal.WorkbenchWindow.hardClose() line: 1675 org.eclipse.ui.internal.WorkbenchWindow.busyClose() line: 723 org.eclipse.ui.internal.WorkbenchWindow.access$0(org.eclipse.ui.internal.WorkbenchWindow) line: 699 org.eclipse.ui.internal.WorkbenchWindow$5.run() line: 815 org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display, java.lang.Runnable) line: 70 org.eclipse.ui.internal.WorkbenchWindow.close() line: 813 org.eclipse.jface.window.WindowManager.close() line: 109 org.eclipse.ui.internal.Workbench$16.run() line: 918 org.eclipse.core.runtime.SafeRunner.run(org.eclipse.core.runtime.ISafeRunnable) line: 37 org.eclipse.ui.internal.Workbench.busyClose(boolean) line: 915 org.eclipse.ui.internal.Workbench.access$15(org.eclipse.ui.internal.Workbench, boolean) line: 844 org.eclipse.ui.internal.Workbench$23.run() line: 1088 org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display, java.lang.Runnable) line: 70 org.eclipse.ui.internal.Workbench.close(int, boolean) line: 1086 org.eclipse.ui.internal.Workbench.close() line: 1058 org.eclipse.ui.internal.WorkbenchWindow.busyClose() line: 720 org.eclipse.ui.internal.WorkbenchWindow.access$0(org.eclipse.ui.internal.WorkbenchWindow) line: 699 org.eclipse.ui.internal.WorkbenchWindow$5.run() line: 815 org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display, java.lang.Runnable) line: 70 org.eclipse.ui.internal.WorkbenchWindow.close() line: 813 org.eclipse.ui.internal.WorkbenchWindow(org.eclipse.jface.window.Window).handleShellCloseEvent() line: 741 org.eclipse.jface.window.Window$3.shellClosed(org.eclipse.swt.events.ShellEvent) line: 687 org.eclipse.swt.widgets.TypedListener.handleEvent(org.eclipse.swt.widgets.Event) line: 92 org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event) line: 84 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Widget).sendEvent(org.eclipse.swt.widgets.Event) line: 1003 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event, boolean) line: 1027 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event) line: 1012 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).closeWidget() line: 308 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).WM_CLOSE(int, int) line: 1645 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Control).windowProc(int, int, int, int) line: 3919 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Canvas).windowProc(int, int, int, int) line: 342 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).windowProc(int, int, int, int) line: 1578 org.eclipse.swt.widgets.Shell.windowProc(int, int, int, int) line: 1973 org.eclipse.swt.widgets.Display.windowProc(int, int, int, int) line: 4589 org.eclipse.swt.internal.win32.OS.DefWindowProcW(int, int, int, int) line: not available [native method] org.eclipse.swt.internal.win32.OS.DefWindowProc(int, int, int, int) line: 2389 org.eclipse.swt.widgets.Shell.callWindowProc(int, int, int, int) line: 479 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Control).windowProc(int, int, int, int) line: 4007 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Canvas).windowProc(int, int, int, int) line: 342 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).windowProc(int, int, int, int) line: 1578 org.eclipse.swt.widgets.Shell.windowProc(int, int, int, int) line: 1973 org.eclipse.swt.widgets.Display.windowProc(int, int, int, int) line: 4589 org.eclipse.swt.internal.win32.OS.DefWindowProcW(int, int, int, int) line: not available [native method] org.eclipse.swt.internal.win32.OS.DefWindowProc(int, int, int, int) line: 2389 org.eclipse.swt.widgets.Shell.callWindowProc(int, int, int, int) line: 479 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Control).windowProc(int, int, int, int) line: 4007 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Canvas).windowProc(int, int, int, int) line: 342 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).windowProc(int, int, int, int) line: 1578 org.eclipse.swt.widgets.Shell.windowProc(int, int, int, int) line: 1973 org.eclipse.swt.widgets.Display.windowProc(int, int, int, int) line: 4589 org.eclipse.swt.internal.win32.OS.DispatchMessageW(org.eclipse.swt.internal.win32.MSG) line: not available [native method] org.eclipse.swt.internal.win32.OS.DispatchMessage(org.eclipse.swt.internal.win32.MSG) line: 2394 org.eclipse.swt.widgets.Display.readAndDispatch() line: 3471 org.eclipse.ui.internal.Workbench.runEventLoop(org.eclipse.jface.window.Window$IExceptionHandler, org.eclipse.swt.widgets.Display) line: 2393 org.eclipse.ui.internal.Workbench.runUI() line: 2357 org.eclipse.ui.internal.Workbench.access$4(org.eclipse.ui.internal.Workbench) line: 2209 org.eclipse.ui.internal.Workbench$5.run() line: 499 org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.observable.Realm, java.lang.Runnable) line: 332 org.eclipse.ui.internal.Workbench.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 492 org.eclipse.ui.PlatformUI.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 149 com.msli.mapp3d.client.rcp.app.Application.start(org.eclipse.equinox.app.IApplicationContext) line: 87 org.eclipse.equinox.internal.app.EclipseAppHandle.run(java.lang.Object) line: 194 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(java.lang.Object) line: 110 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(java.lang.Object) line: 79 org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.Object) line: 368 org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.String[], java.lang.Runnable) line: 179 sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method] sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 39 sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25 java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 597 org.eclipse.equinox.launcher.Main.invokeFramework(java.lang.String[], java.net.URL[]) line: 556 org.eclipse.equinox.launcher.Main.basicRun(java.lang.String[]) line: 511 org.eclipse.equinox.launcher.Main.run(java.lang.String[]) line: 1284 org.eclipse.equinox.launcher.Main.main(java.lang.String[]) line: 1260 ============ input changed -> exception throw =========== Thread [main] (Suspended (exception java.lang.NullPointerException)) org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider$Impl(org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider).setViewer(org.eclipse.jface.viewers.Viewer) line: 152 org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider$Impl(org.eclipse.jface.internal.databinding.viewers.ObservableCollectionTreeContentProvider).inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) line: 141 org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider$Impl.inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) line: 55 com.msli.jme.rcp.provider.JmeModelContentProvider(org.eclipse.jface.databinding.viewers.ObservableListTreeContentProvider).inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) line: 203 org.eclipse.ui.internal.navigator.extensions.StructuredViewerManager.initialize(org.eclipse.jface.viewers.IStructuredContentProvider) line: 139 org.eclipse.ui.internal.navigator.NavigatorContentService.updateService(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) line: 369 org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.inputChanged(org.eclipse.jface.viewers.Viewer, java.lang.Object, java.lang.Object) line: 591 org.eclipse.ui.navigator.CommonViewer(org.eclipse.jface.viewers.ContentViewer).handleDispose(org.eclipse.swt.events.DisposeEvent) line: 171 org.eclipse.ui.navigator.CommonViewer(org.eclipse.jface.viewers.StructuredViewer).handleDispose(org.eclipse.swt.events.DisposeEvent) line: 2272 org.eclipse.ui.navigator.CommonViewer.handleDispose(org.eclipse.swt.events.DisposeEvent) line: 240 org.eclipse.jface.viewers.ContentViewer$2.widgetDisposed(org.eclipse.swt.events.DisposeEvent) line: 214 org.eclipse.swt.widgets.TypedListener.handleEvent(org.eclipse.swt.widgets.Event) line: 117 org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event) line: 84 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(org.eclipse.swt.widgets.Event) line: 1003 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event, boolean) line: 1027 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).sendEvent(int) line: 1008 org.eclipse.swt.widgets.Tree(org.eclipse.swt.widgets.Widget).release(boolean) line: 804 org.eclipse.swt.widgets.Composite.releaseChildren(boolean) line: 754 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).release(boolean) line: 807 org.eclipse.swt.widgets.Composite.releaseChildren(boolean) line: 754 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).release(boolean) line: 807 org.eclipse.swt.widgets.Composite(org.eclipse.swt.widgets.Widget).dispose() line: 441 org.eclipse.ui.internal.ViewPane(org.eclipse.ui.internal.PartPane).dispose() line: 180 org.eclipse.ui.internal.ViewPane.dispose() line: 192 org.eclipse.ui.internal.ViewReference(org.eclipse.ui.internal.WorkbenchPartReference).dispose() line: 681 org.eclipse.ui.internal.WorkbenchPage.disposePart(org.eclipse.ui.internal.WorkbenchPartReference) line: 1715 org.eclipse.ui.internal.WorkbenchPage.partRemoved(org.eclipse.ui.internal.WorkbenchPartReference) line: 1707 org.eclipse.ui.internal.ViewFactory.releaseView(org.eclipse.ui.IViewReference) line: 256 org.eclipse.ui.internal.Perspective.dispose() line: 289 org.eclipse.ui.internal.WorkbenchPage.dispose() line: 1786 org.eclipse.ui.internal.WorkbenchWindow.closeAllPages() line: 850 org.eclipse.ui.internal.WorkbenchWindow.hardClose() line: 1675 org.eclipse.ui.internal.WorkbenchWindow.busyClose() line: 723 org.eclipse.ui.internal.WorkbenchWindow.access$0(org.eclipse.ui.internal.WorkbenchWindow) line: 699 org.eclipse.ui.internal.WorkbenchWindow$5.run() line: 815 org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display, java.lang.Runnable) line: 70 org.eclipse.ui.internal.WorkbenchWindow.close() line: 813 org.eclipse.jface.window.WindowManager.close() line: 109 org.eclipse.ui.internal.Workbench$16.run() line: 918 org.eclipse.core.runtime.SafeRunner.run(org.eclipse.core.runtime.ISafeRunnable) line: 37 org.eclipse.ui.internal.Workbench.busyClose(boolean) line: 915 org.eclipse.ui.internal.Workbench.access$15(org.eclipse.ui.internal.Workbench, boolean) line: 844 org.eclipse.ui.internal.Workbench$23.run() line: 1088 org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display, java.lang.Runnable) line: 70 org.eclipse.ui.internal.Workbench.close(int, boolean) line: 1086 org.eclipse.ui.internal.Workbench.close() line: 1058 org.eclipse.ui.internal.WorkbenchWindow.busyClose() line: 720 org.eclipse.ui.internal.WorkbenchWindow.access$0(org.eclipse.ui.internal.WorkbenchWindow) line: 699 org.eclipse.ui.internal.WorkbenchWindow$5.run() line: 815 org.eclipse.swt.custom.BusyIndicator.showWhile(org.eclipse.swt.widgets.Display, java.lang.Runnable) line: 70 org.eclipse.ui.internal.WorkbenchWindow.close() line: 813 org.eclipse.ui.internal.WorkbenchWindow(org.eclipse.jface.window.Window).handleShellCloseEvent() line: 741 org.eclipse.jface.window.Window$3.shellClosed(org.eclipse.swt.events.ShellEvent) line: 687 org.eclipse.swt.widgets.TypedListener.handleEvent(org.eclipse.swt.widgets.Event) line: 92 org.eclipse.swt.widgets.EventTable.sendEvent(org.eclipse.swt.widgets.Event) line: 84 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Widget).sendEvent(org.eclipse.swt.widgets.Event) line: 1003 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event, boolean) line: 1027 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Widget).sendEvent(int, org.eclipse.swt.widgets.Event) line: 1012 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).closeWidget() line: 308 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).WM_CLOSE(int, int) line: 1645 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Control).windowProc(int, int, int, int) line: 3919 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Canvas).windowProc(int, int, int, int) line: 342 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).windowProc(int, int, int, int) line: 1578 org.eclipse.swt.widgets.Shell.windowProc(int, int, int, int) line: 1973 org.eclipse.swt.widgets.Display.windowProc(int, int, int, int) line: 4589 org.eclipse.swt.internal.win32.OS.DefWindowProcW(int, int, int, int) line: not available [native method] org.eclipse.swt.internal.win32.OS.DefWindowProc(int, int, int, int) line: 2389 org.eclipse.swt.widgets.Shell.callWindowProc(int, int, int, int) line: 479 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Control).windowProc(int, int, int, int) line: 4007 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Canvas).windowProc(int, int, int, int) line: 342 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).windowProc(int, int, int, int) line: 1578 org.eclipse.swt.widgets.Shell.windowProc(int, int, int, int) line: 1973 org.eclipse.swt.widgets.Display.windowProc(int, int, int, int) line: 4589 org.eclipse.swt.internal.win32.OS.DefWindowProcW(int, int, int, int) line: not available [native method] org.eclipse.swt.internal.win32.OS.DefWindowProc(int, int, int, int) line: 2389 org.eclipse.swt.widgets.Shell.callWindowProc(int, int, int, int) line: 479 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Control).windowProc(int, int, int, int) line: 4007 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Canvas).windowProc(int, int, int, int) line: 342 org.eclipse.swt.widgets.Shell(org.eclipse.swt.widgets.Decorations).windowProc(int, int, int, int) line: 1578 org.eclipse.swt.widgets.Shell.windowProc(int, int, int, int) line: 1973 org.eclipse.swt.widgets.Display.windowProc(int, int, int, int) line: 4589 org.eclipse.swt.internal.win32.OS.DispatchMessageW(org.eclipse.swt.internal.win32.MSG) line: not available [native method] org.eclipse.swt.internal.win32.OS.DispatchMessage(org.eclipse.swt.internal.win32.MSG) line: 2394 org.eclipse.swt.widgets.Display.readAndDispatch() line: 3471 org.eclipse.ui.internal.Workbench.runEventLoop(org.eclipse.jface.window.Window$IExceptionHandler, org.eclipse.swt.widgets.Display) line: 2393 org.eclipse.ui.internal.Workbench.runUI() line: 2357 org.eclipse.ui.internal.Workbench.access$4(org.eclipse.ui.internal.Workbench) line: 2209 org.eclipse.ui.internal.Workbench$5.run() line: 499 org.eclipse.core.databinding.observable.Realm.runWithDefault(org.eclipse.core.databinding.observable.Realm, java.lang.Runnable) line: 332 org.eclipse.ui.internal.Workbench.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 492 org.eclipse.ui.PlatformUI.createAndRunWorkbench(org.eclipse.swt.widgets.Display, org.eclipse.ui.application.WorkbenchAdvisor) line: 149 com.msli.mapp3d.client.rcp.app.Application.start(org.eclipse.equinox.app.IApplicationContext) line: 87 org.eclipse.equinox.internal.app.EclipseAppHandle.run(java.lang.Object) line: 194 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(java.lang.Object) line: 110 org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(java.lang.Object) line: 79 org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.Object) line: 368 org.eclipse.core.runtime.adaptor.EclipseStarter.run(java.lang.String[], java.lang.Runnable) line: 179 sun.reflect.NativeMethodAccessorImpl.invoke0(java.lang.reflect.Method, java.lang.Object, java.lang.Object[]) line: not available [native method] sun.reflect.NativeMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 39 sun.reflect.DelegatingMethodAccessorImpl.invoke(java.lang.Object, java.lang.Object[]) line: 25 java.lang.reflect.Method.invoke(java.lang.Object, java.lang.Object...) line: 597 org.eclipse.equinox.launcher.Main.invokeFramework(java.lang.String[], java.net.URL[]) line: 556 org.eclipse.equinox.launcher.Main.basicRun(java.lang.String[]) line: 511 org.eclipse.equinox.launcher.Main.run(java.lang.String[]) line: 1284 org.eclipse.equinox.launcher.Main.main(java.lang.String[]) line: 1260
bundles/org.eclipse.ui.navigator/src/org/eclipse/ui/internal/navigator/NavigatorContentService.java
}
		synchronized (this) {
			if (rootContentProviders == null) {
				rootContentProviders = extractContentProviders(findRootContentExtensions(anElement));
			}
		}
		return rootContentProviders;
	}
	/**
	 * 
	 * The label provider that is are enabled for the given element.
	 * A label provider is 'enabled' if its corresponding content provider
	 * returned the element.
	 * 
	 * @param anElement
	 *            An element from the tree (any element contributed to the
	 *            tree).
	 * @return The label provider
	 */
	public ILabelProvider[] findRelevantLabelProviders(Object anElement) {
		SortedSet extensions = new TreeSet(ExtensionPriorityComparator.INSTANCE);
		NavigatorContentDescriptor ncd = getSourceOfContribution(anElement);
		if (ncd != null) {
			extensions.add(getExtension(ncd));
		}
		Set possibleChildDescriptors = findContentExtensionsByTriggerPoint(anElement, true, CONSIDER_OVERRIDES);
		for (Iterator iter = possibleChildDescriptors.iterator(); iter.hasNext();) {
			INavigatorContentExtension ext = (INavigatorContentExtension) iter.next();
			extensions.add(ext);
		}