Details
Description
TreeDataView.renderComponent() calls ITreeDataModel.getUniqueKey() with a root node object when it should be passing in a rootUID object (line 86 in TreeDataView.java):
Object objChildUID = objTreeModel.getTreeDataModel()
.getUniqueKey(objChild, objRoot);
Instead of objRoot, objRootUID should be used, which has already been fetched on line 62:
Object objRoot = objTreeDataModel.getRoot();
Object objRootUID = objTreeDataModel.getUniqueKey(objRoot, null);
This causes a ClassCastException on line 80 of SimpleTreeDataModel.getUniqueKey():
TreePath objPath = (TreePath)objParentUniqueKey;
SimpleTreeDataModel implements ITreeDataModel correctly (which specifies that a parent UID is to be passed into getUniqueKey() rather than a parent node), and other callers to ITreeDataModel.getUniqueKey() pass in a parent UID, so I believe this is a straightforward bug in TreeDataView and TreeTableDataView.
The same bug exists in TreeTableDataView.generateNodeList() on line 117:
Object objChildUID = objTreeModel.getTreeDataModel().getUniqueKey(
objChild,
objRoot);