Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 340823

Summary: NPE on opening data set if Java project has missing "output" .classpath entry
Product: z_Archived Reporter: Ihor Strutynskyj <eclipse-dev>
Component: BIRTAssignee: Dazheng Gao <gump_gao>
Status: VERIFIED FIXED QA Contact: Xiaoying Gu <bluesoldier>
Severity: critical    
Priority: P3 CC: bluesoldier, gump_gao
Version: 2.6.1   
Target Milestone: 3.7.0 RC1   
Hardware: PC   
OS: Windows 7   
Whiteboard: Obsolete

Description Ihor Strutynskyj CLA 2011-03-23 20:22:32 EDT
Build Identifier: 2.6.1

If any Java project in the workspace has missing "output" entry in .classpath file, opening an existing data set in Report Designer will result in NPE:

Caused by: java.lang.NullPointerException
at org.eclipse.birt.report.designer.internal.ui.ide.adapters.IDEReportClasspathResolver.getFullPath(IDEReportClasspathResolver.java:429)
at org.eclipse.birt.report.designer.internal.ui.ide.adapters.IDEReportClasspathResolver.getProjectOutputClassPath(IDEReportClasspathResolver.java:260)
at org.eclipse.birt.report.designer.internal.ui.ide.adapters.IDEReportClasspathResolver.getProjectClasspath(IDEReportClasspathResolver.java:231)
at org.eclipse.birt.report.designer.internal.ui.ide.adapters.IDEReportClasspathResolver.resolveClasspathEntries(IDEReportClasspathResolver.java:355)
at org.eclipse.birt.report.designer.internal.ui.ide.adapters.IDEReportClasspathResolver.resolveClasspathEntries(IDEReportClasspathResolver.java:330)
at org.eclipse.birt.report.designer.internal.ui.ide.adapters.IDEReportClasspathResolver.getProjectDependentClasspath(IDEReportClasspathResolver.java:293)
at org.eclipse.birt.report.designer.internal.ui.ide.adapters.IDEReportClasspathResolver.getProjectClasspath(IDEReportClasspathResolver.java:223)
at org.eclipse.birt.report.designer.internal.ui.ide.adapters.IDEReportClasspathResolver.resolveClasspath(IDEReportClasspathResolver.java:79)
at org.eclipse.birt.report.designer.data.ui.util.DatasetClassPathHelper.getWorkspaceClassPath(DatasetClassPathHelper.java:182)
at org.eclipse.birt.report.designer.data.ui.util.DataSetProvider.getWorkspaceProjectURLs(DataSetProvider.java:1398)
at org.eclipse.birt.report.designer.data.ui.util.DataSetProvider.getClassPathURLs(DataSetProvider.java:1354)
at org.eclipse.birt.report.designer.data.ui.util.DataSetProvider.getCustomScriptClassLoader(DataSetProvider.java:1325)
at org.eclipse.birt.report.designer.data.ui.dataset.DataSetEditor$ItemModelManager.setContextLoader(DataSetEditor.java:987)
at org.eclipse.birt.report.designer.data.ui.dataset.DataSetEditor$ItemModelManager.start(DataSetEditor.java:968)
at org.eclipse.birt.report.designer.data.ui.dataset.DataSetEditor.<init>(DataSetEditor.java:191)
at org.eclipse.birt.report.designer.data.ui.dataset.AdvancedDataSetEditor.<init>(AdvancedDataSetEditor.java:23)
at org.eclipse.birt.report.designer.data.ui.providers.EditableDataSetNodeProvider.performEdit(EditableDataSetNodeProvider.java:95)
at org.eclipse.birt.report.designer.internal.ui.views.DefaultNodeProvider.performRequest(DefaultNodeProvider.java:442)
at org.eclipse.birt.report.designer.internal.ui.views.actions.EditAction.doAction(EditAction.java:90)
at org.eclipse.birt.report.designer.internal.ui.views.actions.AbstractElementAction.run(AbstractElementAction.java:70)
... 35 more

Reproducible: Always

Steps to Reproduce:
1. Create a Java project that does not have source code and make sure "output" entry is not in .classpath file.
2. Open existing BIRT report in Report Designer. 
3. Click on existing data set. NPE will be thrown.
Comment 1 Dazheng Gao CLA 2011-05-11 22:32:34 EDT
Fixed.
Comment 2 Xiaoying Gu CLA 2011-05-13 04:28:29 EDT
verified in daily build 3.7.0.v20110513-0958