Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 340823 - NPE on opening data set if Java project has missing "output" .classpath entry
Summary: NPE on opening data set if Java project has missing "output" .classpath entry
Status: VERIFIED FIXED
Alias: None
Product: z_Archived
Classification: Eclipse Foundation
Component: BIRT (show other bugs)
Version: 2.6.1   Edit
Hardware: PC Windows 7
: P3 critical (vote)
Target Milestone: 3.7.0 RC1   Edit
Assignee: Dazheng Gao CLA
QA Contact: Xiaoying Gu CLA
URL:
Whiteboard: Obsolete
Keywords:
Depends on:
Blocks:
 
Reported: 2011-03-23 20:22 EDT by Ihor Strutynskyj CLA
Modified: 2011-05-13 04:28 EDT (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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