Bug 423283 - [Viewers] Jface TreeViewer does not work If we have any cyclic dependencies
Summary: [Viewers] Jface TreeViewer does not work If we have any cyclic dependencies
Status: CLOSED WONTFIX
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 4.4   Edit
Hardware: PC Windows 7
: P3 normal (vote)
Target Milestone: ---   Edit
Assignee: Platform UI Triaged CLA
QA Contact:
URL:
Whiteboard: stalebug
Keywords: helpwanted
Depends on:
Blocks:
 
Reported: 2013-12-05 04:03 EST by Missing name Mising name CLA
Modified: 2019-12-07 03:34 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Missing name Mising name CLA 2013-12-05 04:03:51 EST
I am using treeViewer to display tree.

I have my custom object and have overridden my createTreeItem. My Tree is displayed correctly. and works fine.when i use "+" and "*" my tree get expanded correctly. But when my tree has some dependcies like X-->Y-->X i am getting following error and my application get's hanged:- 

org.eclipse.swt.internal.win32.OS.CallWindowProcW(OS.java:-2)
   org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
   org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534)
   org.eclipse.swt.widgets.Control.windowProc(Control.java:4623)
   org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
   org.eclipse.swt.widgets.Display.windowProc(Display.java:4976)
   org.eclipse.swt.internal.win32.OS.SendMessageW(OS.java:-2)
   org.eclipse.swt.internal.win32.OS.SendMessage(OS.java:3385)
   org.eclipse.swt.widgets.Tree.createItem(Tree.java:2104)
   org.eclipse.swt.widgets.TreeItem.<init>(TreeItem.java:203)
   org.eclipse.swt.widgets.TreeItem.<init>(TreeItem.java:161)
   org.eclipse.jface.viewers.TreeViewer.createNewRowPart(TreeViewer.java:818)
   org.eclipse.jface.viewers.TreeViewer.newItem(TreeViewer.java:312)
   org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem(AbstractTreeViewer.java:847)
   com.org.rac.ui.views.TCComponentView$1.createTreeItem(TCComponentView.java:227)
   org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:823)
   org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
   org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:797)
   org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:644)
   org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:768)
   org.eclipse.jface.viewers.AbstractTreeViewer.handleTreeExpand(AbstractTreeViewer.java:1500)
   org.eclipse.jface.viewers.TreeViewer.handleTreeExpand(TreeViewer.java:952)
   org.eclipse.jface.viewers.AbstractTreeViewer$4.treeExpanded(AbstractTreeViewer.java:1511)
   org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:132)
   org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
   org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
   org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1077)
   org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
   org.eclipse.swt.widgets.Tree.wmNotifyChild(Tree.java:7565)
   org.eclipse.swt.widgets.Control.wmNotify(Control.java:5534)
   org.eclipse.swt.widgets.Composite.wmNotify(Composite.java:1896)
   org.eclipse.swt.widgets.Control.WM_NOTIFY(Control.java:5086)
   org.eclipse.swt.widgets.Control.windowProc(Control.java:4584)
   org.eclipse.swt.widgets.Display.windowProc(Display.java:4989)
   org.eclipse.swt.internal.win32.OS.CallWindowProcW(OS.java:-2)
   org.eclipse.swt.internal.win32.OS.CallWindowProc(OS.java:2440)
   org.eclipse.swt.widgets.Tree.callWindowProc(Tree.java:1534)
   org.eclipse.swt.widgets.Control.windowProc(Control.java:4623)
   org.eclipse.swt.widgets.Tree.windowProc(Tree.java:5958)
   org.eclipse.swt.widgets.Display.windowProc(Display.java:4989)
   org.eclipse.swt.internal.win32.OS.DispatchMessageW(OS.java:-2)
   org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2546)
   org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3756)
   org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701)
   org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665)
   org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499)
   org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679)
   org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
   org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668)
   org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
   com.org.rac.aifrcp.Application.runApplication(Application.java:53)
   com.org.rac.aifrcp.Application.start(Application.java:77)
   org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
   org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
   org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
   org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:353)
   org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180)
   sun.reflect.NativeMethodAccessorImpl.invoke0(NativeMethodAccessorImpl.java:-2)
   sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
   sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
   java.lang.reflect.Method.invoke(Method.java:601)
   org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629)
   org.eclipse.equinox.launcher.Main.basicRun(Main.java:584)
   org.eclipse.equinox.launcher.Main.run(Main.java:1438)
   org.eclipse.equinox.launcher.Main.main(Main.java:1414)
Thread[AWT-EventQueue-0,6,main]/java.awt.EventDispatchThread [Alive]
Comment 1 Missing name Mising name CLA 2013-12-05 04:15:05 EST
Is there any way to handle this error. or how can i fix this issue.
Comment 2 Curtis Windatt CLA 2013-12-05 09:33:12 EST
Moving to JFace
Comment 3 Missing name Mising name CLA 2013-12-06 01:33:59 EST
JFace treeviewer content provider is not able to recognize cyclic dependencies and it keeps on doing recursive call to createTreeItem. Please resolve this issue.
Comment 4 Wojciech Sudol CLA 2013-12-09 04:01:46 EST
Hi,
Could you attach a snippet that show the bug?
Comment 5 Missing name Mising name CLA 2013-12-10 06:05:57 EST
I have my view CustomView which extends from ViewPart.  And there is Content Provider. My Custom content provider extends from ITreeContentProvider and overridden all the method like getChildren , getParent()…
[code]
Class MyContentProvider extends ITreeContentProvider
{	
	Object[] getChildren()
{
---
}
}	
Class CustomView extends ViewPart
{
	@Override
    protected StructuredViewer createViewer( Composite parent )
    {
	TreeViewer tv = new TreeViewer(parent, )
{
	@Override
            protected void createTreeItem( Widget parent, Object element, int index )
            {
		int index = insertAt( parent ) ? -1 : index;
       super.createTreeItem( parent, element, indexToConsider );
}
}
    }
}

[/code]
In all condition my tree expand correctly. But when My tree has any cyclic dependencies like A-->B-->A, createTreeItem gets called infinitely and application gets closed.
Comment 6 Paul Webster CLA 2013-12-10 06:15:11 EST
This sounds like an existing limitation of our tree viewers, unless you use the virtual trees and the lazy content providers.

PW
Comment 7 Eclipse Genie CLA 2019-12-07 03:34:55 EST
This bug hasn't had any activity in quite some time. Maybe the problem got resolved, was a duplicate of something else, or became less pressing for some reason - or maybe it's still relevant but just hasn't been looked at yet.

If you have further information on the current state of the bug, please add it. The information can be, for example, that the problem still occurs, that you still want the feature, that more information is needed, or that the bug is (for whatever reason) no longer relevant.

--
The automated Eclipse Genie.