Bug 163357 [Viewers] NullPointerException on AbstractTreeViewer.remove(path, index)
I20061102-1715 It's possible to get an NPE when removing an element from a tree viewer. The remove API accepts a "parent path" and "child index". It is possible to specify an empty tree path for the parent to indicate the root element. However, the remove code eventually trys to find the widget associated with the "last segment" of the parent path. This results in null, and an NPE: Caused by: java.lang.NullPointerException at org.eclipse.jface.viewers.CustomHashtable.hashCode(CustomHashtable.java:265) at org.eclipse.jface.viewers.CustomHashtable.get(CustomHashtable.java:237) at org.eclipse.jface.viewers.StructuredViewer.findItems(StructuredViewer.java:769) at org.eclipse.jface.viewers.AbstractTreeViewer.internalFindItem(AbstractTreeViewer.java:173) at org.eclipse.jface.viewers.AbstractTreeViewer.internalFindItems(AbstractTreeViewer.java:153) at org.eclipse.jface.viewers.TreeViewer$8.run(TreeViewer.java:1017) at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1326) at org.eclipse.jface.viewers.TreeViewer.remove(TreeViewer.java:1005) at org.eclipse.debug.internal.ui.viewers.model.ChildrenUpdate.performUpdate(ChildrenUpdate.java:62) at org.eclipse.debug.internal.ui.viewers.model.ViewerUpdateMonitor$1.runInUIThread(ViewerUpdateMonitor.java:43) at org.eclipse.ui.progress.UIJob$1.run(UIJob.java:94) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123) ... 20 more
bundles/org.eclipse.jface/src/org/eclipse/jface/viewers/TreeViewer.java
*            the cell modifier
	 * @since 3.1
	 */
	public void setCellModifier(ICellModifier modifier) {
		treeViewerImpl.setCellModifier(modifier);
	}
	/**
	 * Sets the column properties of this tree viewer. The properties must
	 * correspond with the columns of the tree control. They are used to
	 * identify the column in a cell modifier.
	 * 
	 * @param columnProperties
	 *            the list of column properties
	 * @since 3.1
	 */
	public void setColumnProperties(String[] columnProperties) {
		treeViewerImpl.setColumnProperties(columnProperties);
	}
	/*
	 * (non-Javadoc) Method declared in AbstractTreeViewer.
	 */
	protected void setExpanded(Item node, boolean expand) {
		((TreeItem) node).setExpanded(expand);
		if (contentProviderIsLazy) {
			
			getControl().update();
		}
	}
	/**
	 * The tree viewer implementation of this <code>Viewer</code> framework