Bug 87662 [PropertiesView] NPE in PropertySheetViewer.updateChildrenOf
3.1 M5 An NPE can occur in PropertySheetViewer.updateChildrenOf if one of the top level items has null data. Although this should never happen, apparently it can (not sure how). Caused by: java.lang.NullPointerException at org.eclipse.ui.views.properties.PropertySheetViewer.updateChildrenOf(PropertySheetViewer.java:1117) at org.eclipse.ui.views.properties.PropertySheetViewer.setInput(PropertySheetViewer.java:850) at org.eclipse.ui.views.properties.PropertySheetPage.refresh(PropertySheetPage.java:397) at com.rational.clearcase.RSCMService$19.run(RSCMService.java:4459) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:118) In this last exception, at line 1117, this line in the code reads: item.dispose(); In the code from updateChildrenOf containing 1117 we have: Set set = new HashSet(childItems.length * 2 + 1); for (int i = 0; i < childItems.length; i++) { Object data = childItems[i].getData(); if (data != null) { Object e = data; int ix = children.indexOf(e); if (ix < 0) { // not found removeItem(childItems[i]); } else { // found set.add(e); } } else if (data == null) { // the dummy item.dispose(); <----------------line 1117 } }
bundles/org.eclipse.ui.views/src/org/eclipse/ui/views/properties/PropertySheetViewer.java
}
    /**
     * The expand icon for a node in this viewer has been selected to collapse a
     * subtree. Deactivate the cell editor
     * 
     * @param event
     *            the SWT tree event
     */
    private void handleTreeCollapse(TreeEvent event) {
        if (cellEditor != null) {
            applyEditorValue();
            deactivateCellEditor();
        }
    }
    /**
     * The expand icon for a node in this viewer has been selected to expand the
     * subtree. Create the children 1 level deep.
     * <p>
     * Note that we use a "dummy" item (no user data) to show a "+" icon beside
     * an item which has children before the item is expanded now that it is
     * being expanded we have to create the real child items
     * </p>
     * 
     * @param event
     *            the SWT tree event
     */
    private void handleTreeExpand(TreeEvent event) {
        createChildren(event.item);
    }
    /**