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

Bug 297152

Summary: Closing DynWeb Project (with JSF facet) that is new in current workbench session throws exception
Product: [WebTools] Java Server Faces Reporter: Ian Trimble <ian.trimble>
Component: CoreAssignee: Ian Trimble <ian.trimble>
Status: RESOLVED FIXED QA Contact:
Severity: minor    
Priority: P2 CC: dimitar.giormov, raghunathan.srinivasan
Version: 3.1   
Target Milestone: 3.1.2   
Hardware: PC   
OS: Windows XP   
URL: ORACLE_P2
Whiteboard:
Bug Depends on: 264105    
Bug Blocks:    

Description Ian Trimble CLA 2009-12-07 23:07:14 EST
Closing a Dynamic Web Project (with JSF facet) that is new in the current workbench session throws an exception. The issue involves JSF because when creating a dynamic web project without it, closing the project produces no exception.

To reproduce, after creation of a new dynamic web project, the JSFAppConfigManager must be initialized. One way of ensuring this is to create a new managed bean using the new managed bean wizard in the Faces Configuration Editor. (The managed bean name is validated as unique by calling the JSFAppConfigManager.)

Current thinking is that the JSFAppConfigManager locator that reads web.xml context parameters is not cleaning up correctly (the EMF resource that causes the issue is definitely a WebResourceImpl, and this locator is the only component of JSFAppConfigManager that reads web.xml).

----------------------------------------

!ENTRY org.eclipse.jst.jee 4 2 2009-12-07 19:09:28.499
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jst.jee".
!STACK 0
java.lang.NullPointerException
	at org.eclipse.wst.common.componentcore.ModuleCoreNature.primaryContributeToContext(ModuleCoreNature.java:552)
	at org.eclipse.jem.internal.util.emf.workbench.EMFWorkbenchContextFactory.createEMFContext(EMFWorkbenchContextFactory.java:113)
	at org.eclipse.wst.common.internal.emfworkbench.edit.EMFWorkbenchEditContextFactory.createEMFContext(EMFWorkbenchEditContextFactory.java:81)
	at org.eclipse.jem.util.emf.workbench.WorkbenchResourceHelperBase.createEMFContext(WorkbenchResourceHelperBase.java:249)
	at org.eclipse.jem.util.emf.workbench.nature.EMFNature.createEmfContext(EMFNature.java:105)
	at org.eclipse.jem.util.emf.workbench.nature.EMFNature.getEmfContextBase(EMFNature.java:229)
	at org.eclipse.wst.common.internal.emfworkbench.integration.EditModelNature.getEmfContext(EditModelNature.java:61)
	at org.eclipse.wst.common.componentcore.ModuleCoreNature.getModuleStructuralModelForRead(ModuleCoreNature.java:269)
	at org.eclipse.wst.common.componentcore.internal.StructureEdit.<init>(StructureEdit.java:322)
	at org.eclipse.wst.common.componentcore.internal.StructureEdit.getStructureEditForRead(StructureEdit.java:121)
	at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.getReadOnlyComponent(VirtualResource.java:329)
	at org.eclipse.wst.common.componentcore.internal.resources.VirtualResource.getProjectRelativePath(VirtualResource.java:147)
	at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelResource(JEE5ModelProvider.java:147)
	at org.eclipse.jst.jee.model.internal.Web25ModelProvider.getModelObject(Web25ModelProvider.java:42)
	at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.getModelObject(JEE5ModelProvider.java:210)
	at org.eclipse.jst.jee.model.internal.Web25MergedModelProvider.getXmlWebApp(Web25MergedModelProvider.java:51)
	at org.eclipse.jst.jee.model.internal.Web25MergedModelProvider.internalModelChanged(Web25MergedModelProvider.java:134)
	at org.eclipse.jst.jee.model.internal.Web25MergedModelProvider.xmlModelChanged(Web25MergedModelProvider.java:125)
	at org.eclipse.jst.jee.model.internal.common.AbstractMergedModelProvider$XmlModelListener.modelsChanged(AbstractMergedModelProvider.java:85)
	at org.eclipse.jst.jee.model.internal.JEE5ModelProvider$NotifyRunner.run(JEE5ModelProvider.java:446)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.notifyListeners(JEE5ModelProvider.java:421)
	at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.resourceChanged(JEE5ModelProvider.java:103)
	at org.eclipse.jst.jee.model.internal.JEE5ModelProvider$ResourceAdapter.notifyChanged(JEE5ModelProvider.java:78)
	at org.eclipse.emf.common.notify.impl.BasicNotifierImpl.eNotify(BasicNotifierImpl.java:280)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.setModified(ResourceImpl.java:1780)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl$ContentsEList.modified(ResourceImpl.java:491)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl$ContentsEList.didRemove(ResourceImpl.java:452)
	at org.eclipse.emf.common.util.AbstractEList.didClear(AbstractEList.java:172)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl$ContentsEList.didClear(ResourceImpl.java:471)
	at org.eclipse.emf.common.util.BasicEList.clear(BasicEList.java:646)
	at org.eclipse.emf.common.notify.impl.NotifyingListImpl.doClear(NotifyingListImpl.java:1155)
	at org.eclipse.emf.common.notify.impl.NotifyingListImpl.clear(NotifyingListImpl.java:1082)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.doUnload(ResourceImpl.java:1612)
	at org.eclipse.emf.ecore.xmi.impl.XMLResourceImpl.doUnload(XMLResourceImpl.java:506)
	at org.eclipse.emf.ecore.resource.impl.ResourceImpl.unload(ResourceImpl.java:1634)
	at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.removeAndUnloadAllResources(ProjectResourceSetImpl.java:429)
	at org.eclipse.jem.internal.util.emf.workbench.ProjectResourceSetImpl.release(ProjectResourceSetImpl.java:413)
	at org.eclipse.wst.common.internal.emfworkbench.integration.ResourceSetWorkbenchEditSynchronizer.release(ResourceSetWorkbenchEditSynchronizer.java:249)
	at org.eclipse.jem.util.emf.workbench.ResourceSetWorkbenchSynchronizer.resourceChanged(ResourceSetWorkbenchSynchronizer.java:83)
	at org.eclipse.wst.common.internal.emfworkbench.integration.ResourceSetWorkbenchEditSynchronizer.resourceChanged(ResourceSetWorkbenchEditSynchronizer.java:136)
	at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:291)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:285)
	at org.eclipse.core.internal.events.NotificationManager.handleEvent(NotificationManager.java:249)
	at org.eclipse.core.internal.resources.Workspace.broadcastEvent(Workspace.java:307)
	at org.eclipse.core.internal.resources.Project.close(Project.java:165)
	at org.eclipse.ui.actions.CloseResourceAction.invokeOperation(CloseResourceAction.java:218)
	at org.eclipse.ui.actions.WorkspaceAction.execute(WorkspaceAction.java:162)
	at org.eclipse.ui.actions.WorkspaceAction$2.runInWorkspace(WorkspaceAction.java:483)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Comment 1 Ian Trimble CLA 2010-01-08 19:00:20 EST
Currently blocked by Bug 264105.
Comment 2 Ian Trimble CLA 2010-02-02 17:06:52 EST
Confirmed that the fix is in WTP build M-3.1.2-20100128184250.
Comment 3 Dimitar Giormov CLA 2010-05-31 09:31:29 EDT
*** Bug 296322 has been marked as a duplicate of this bug. ***