Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 330819 - Project Properties - Facets - Change Configuration - Receive npe error
Summary: Project Properties - Facets - Change Configuration - Receive npe error
Status: RESOLVED FIXED
Alias: None
Product: Java Server Faces
Classification: WebTools
Component: Core (show other bugs)
Version: 3.3   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.3 M7   Edit
Assignee: Ian Trimble CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-11-22 11:17 EST by Jolene Moffitt CLA
Modified: 2011-03-22 14:21 EDT (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Jolene Moffitt CLA 2010-11-22 11:17:33 EST
Create a JAXB 2.1 or JAXB 2.2 project using defaults for either
R-Click and select Properties
Go to Project Facets and select any one of the JavaServer Faces from the Configuration drop down.
Receive the following error - 
java.lang.NullPointerException
	at org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetInstallDataModelProvider.getWebContentFolderName(JSFFacetInstallDataModelProvider.java:383)
	at org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetInstallDataModelProvider.getWebContentFolder(JSFFacetInstallDataModelProvider.java:361)
	at org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetInstallDataModelProvider.validateConfigLocation(JSFFacetInstallDataModelProvider.java:231)
	at org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetInstallDataModelProvider.validate(JSFFacetInstallDataModelProvider.java:161)
	at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.validate(DataModelImpl.java:377)
	at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelImpl.validate(DataModelImpl.java:358)
	at org.eclipse.wst.common.componentcore.datamodel.FacetDataModelConfigAdapter.validate(FacetDataModelConfigAdapter.java:63)
	at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage.updateFurtherConfigHyperlink(FacetsPropertyPage.java:422)
	at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage.access$4(FacetsPropertyPage.java:337)
	at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$6.run(FacetsPropertyPage.java:330)
	at org.eclipse.wst.common.project.facet.ui.internal.util.SwtUtil.runOnDisplayThread(SwtUtil.java:34)
	at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage.handleProjectModifiedEvent(FacetsPropertyPage.java:334)
	at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage.access$2(FacetsPropertyPage.java:324)
	at org.eclipse.wst.common.project.facet.ui.internal.FacetsPropertyPage$3.handleEvent(FacetsPropertyPage.java:189)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.notifyListeners(FacetedProjectWorkingCopy.java:1752)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.resumeEventNotification(FacetedProjectWorkingCopy.java:1797)
	at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.setSelectedPreset(FacetedProjectWorkingCopy.java:1097)
	at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$8.widgetSelected(ModifyFacetedProjectWizard.java:576)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4084)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3675)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:157)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4084)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3675)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:621)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:576)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1409)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1385)
Comment 1 Neil Hauge CLA 2010-12-10 16:37:32 EST
This doesn't appear related to having a JAXB faceted project, so you should be able to reproduce with any faceted project.
Comment 2 Yury Kats CLA 2010-12-10 20:10:17 EST
What is a JAXB project? Is it a Web project? Does it have a WebContent folder?
Comment 3 Neil Hauge CLA 2010-12-13 09:18:38 EST
(In reply to comment #2)
> What is a JAXB project? Is it a Web project? Does it have a WebContent folder?

It's really just a faceted project that only contains a JAXB facet.  It can be combined with a Web facet to get Web project content.
Comment 4 Yury Kats CLA 2010-12-13 09:49:04 EST
The stack trace suggests there is no WebContent folder in the project, which implies that this is not a valid Dynamic Web Project to begin with. 
I don't know why, just throwing it out there.
Comment 5 Neil Hauge CLA 2010-12-13 10:50:54 EST
(In reply to comment #4)
> The stack trace suggests there is no WebContent folder in the project, which
> implies that this is not a valid Dynamic Web Project to begin with. 
> I don't know why, just throwing it out there.

That would probably explain the NPE. : ) I guess we need to figure out why these configurations are available.  I was able to reproduce with a JPA project (faceted project with Java and JPA facets). 

The JAXB facet also has the Java facet, which I didn't mention before.
Comment 6 Neil Hauge CLA 2010-12-13 15:59:22 EST
Took another look at this.  The Configurations appear to be valid options.  All you need is a plain faceted project to reproduce the issue.

I encountered this exception first while testing selection of JSF Configurations.



java.lang.NullPointerException
at org.eclipse.jst.j2ee.project.facet.J2EEModuleFacetInstallDataModelProvider.handleProjectFacetsChanged(J2EEModuleFacetInstallDataModelProvider.java:216)
at org.eclipse.jst.j2ee.project.facet.J2EEModuleFacetInstallDataModelProvider.access$0(J2EEModuleFacetInstallDataModelProvider.java:198)
at org.eclipse.jst.j2ee.project.facet.J2EEModuleFacetInstallDataModelProvider$2.handleEvent(J2EEModuleFacetInstallDataModelProvider.java:180)
at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.notifyListeners(FacetedProjectWorkingCopy.java:1752)
at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.resumeEventNotification(FacetedProjectWorkingCopy.java:1797)
at org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.setSelectedPreset(FacetedProjectWorkingCopy.java:1097)
at org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$8.widgetSelected(ModifyFacetedProjectWizard.java:576)
...
Comment 7 Raghunathan Srinivasan CLA 2011-01-19 19:50:45 EST
Moving this to 3.3 since we are in ramp down for 3.2.3
Comment 8 Max Rydahl Andersen CLA 2011-03-16 04:26:30 EDT
I just spotted this again and yes, this is reproducible by creating a new faceted project, go to Facet properties and enable/disable the JSF facet.

It seems it assumes that it is always called on a dynamic web project and that is not the case when the user is just selecting the facet.
Comment 9 Ian Trimble CLA 2011-03-21 19:17:18 EDT
org.eclipse.jst.jsf.core.internal.project.facet.JSFFacetInstallDataModelProvider was making some invalid assumptions about the existence of a Java project.

Fix submitted at 2011/03/21 04:17PM PDT.
Comment 10 Rosendo Martinez CLA 2011-03-22 14:21:41 EDT
(In reply to comment #6)
> Took another look at this.  The Configurations appear to be valid options.  All
> you need is a plain faceted project to reproduce the issue.
> 
> I encountered this exception first while testing selection of JSF
> Configurations.
> 
> 
> 
> java.lang.NullPointerException
> at
> org.eclipse.jst.j2ee.project.facet.J2EEModuleFacetInstallDataModelProvider.handleProjectFacetsChanged(J2EEModuleFacetInstallDataModelProvider.java:216)
> at
> org.eclipse.jst.j2ee.project.facet.J2EEModuleFacetInstallDataModelProvider.access$0(J2EEModuleFacetInstallDataModelProvider.java:198)
> at
> org.eclipse.jst.j2ee.project.facet.J2EEModuleFacetInstallDataModelProvider$2.handleEvent(J2EEModuleFacetInstallDataModelProvider.java:180)
> at
> org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.notifyListeners(FacetedProjectWorkingCopy.java:1752)
> at
> org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.resumeEventNotification(FacetedProjectWorkingCopy.java:1797)
> at
> org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy.setSelectedPreset(FacetedProjectWorkingCopy.java:1097)
> at
> org.eclipse.wst.common.project.facet.ui.ModifyFacetedProjectWizard$8.widgetSelected(ModifyFacetedProjectWizard.java:576)
> ...

Regarding comment # 6, a new bugzilla was created: https://bugs.eclipse.org/bugs/show_bug.cgi?id=340689 and a patch was attached with a proposed fix.