Bug 182857

Summary: NPE in PackageExplorerContentProvider.getPackageFragmentRoots
Product: [Eclipse Project] JDT Reporter: Walter Harley <eclipse>
Component: CoreAssignee: JDT-Core-Inbox <jdt-core-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3    
Version: 3.3   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Walter Harley CLA 2007-04-18 00:24:36 EDT
We encountered the following NPE, in 3.3M6.  This is reproducible, but the repro case we have requires WTP and possibly some BEA-proprietary plug-ins, so you may just want to take my word for it :-)

The basic problem is that IPackageFragmentRoot.getRawClasspathEntry() is documented to throw JavaModelException when it cannot find the requested entry, but in fact it returns null.  The calling code in PackageExplorerContentProvider is not prepared to deal with a null.

So, either there needs to be a null check here, or the implementation of PackageFragmentRoot needs to be fixed.  I would suggest that probably putting in a null check is the more conservative fix at this point, although it might also be good to change the javadoc of the IPackageFragmentRoot method.

Here's the stack trace:

java.lang.NullPointerException
    at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getPackageFragmentRoots(PackageExplorerContentProvider.java:291)
    at org.eclipse.jdt.ui.StandardJavaElementContentProvider.getChildren(StandardJavaElementContentProvider.java:179)
    at org.eclipse.jdt.internal.ui.packageview.PackageExplorerContentProvider.getChildren(PackageExplorerContentProvider.java:270)
    at org.eclipse.jdt.internal.ui.navigator.JavaNavigatorContentProvider.getPipelinedChildren(JavaNavigatorContentProvider.java:124)
    at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.pipelineChildren(NavigatorContentServiceContentProvider.java:310)
    at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.internalGetChildren(NavigatorContentServiceContentProvider.java:252)
    at org.eclipse.ui.internal.navigator.NavigatorContentServiceContentProvider.getChildren(NavigatorContentServiceContentProvider.java:635)
    at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1277)
    at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:363)
    at org.eclipse.jface.viewers.AbstractTreeViewer.getFilteredChildren(AbstractTreeViewer.java:614)
    at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:580)
    at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:2446)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1788)
    at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:561)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1795)
    at org.eclipse.jface.viewers.TreeViewer.internalRefreshStruct(TreeViewer.java:561)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1763)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1719)
    at org.eclipse.ui.navigator.CommonViewer.internalRefresh(CommonViewer.java:454)
    at org.eclipse.jface.viewers.StructuredViewer$8.run(StructuredViewer.java:1478)
    at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1333)
    at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1476)
    at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:303)
    at org.eclipse.ui.navigator.CommonViewer.refresh(CommonViewer.java:401)
    at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider$3.run(ResourceExtensionContentProvider.java:283)
    at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider.runUpdates(ResourceExtensionContentProvider.java:295)
    at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider.access$1(ResourceExtensionContentProvider.java:292)
    at org.eclipse.ui.internal.navigator.resources.workbench.ResourceExtensionContentProvider$1.run(ResourceExtensionContentProvider.java:118)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
Comment 1 Frederic Fusier CLA 2007-04-18 04:21:49 EDT
This is a duplicate of JDT/Core bug 162104
Comment 2 Frederic Fusier CLA 2007-04-18 04:22:09 EDT

*** This bug has been marked as a duplicate of bug 162104 ***