Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 315574 - [JSF2.0] Three exceptions when there is an invalid folder under "WebContent/resources"
Summary: [JSF2.0] Three exceptions when there is an invalid folder under "WebContent/r...
Status: RESOLVED FIXED
Alias: None
Product: Java Server Faces
Classification: WebTools
Component: JSF Tools (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.2.3   Edit
Assignee: Ian Trimble CLA
QA Contact: Cameron Bateman CLA
URL:
Whiteboard: JSF2.0
Keywords:
Depends on:
Blocks:
 
Reported: 2010-06-03 08:55 EDT by Xiaonan Jiang CLA
Modified: 2011-01-04 17:03 EST (History)
3 users (show)

See Also:


Attachments
the test project to reproduce the problem (5.35 KB, application/x-zip-compressed)
2010-06-03 08:56 EDT, Xiaonan Jiang CLA
no flags Details
Fixes the issue by narrowing the exception catching so resource location isn't prematurely terminated by a bad resource id (3.41 KB, patch)
2010-06-03 16:51 EDT, Cameron Bateman CLA
no flags Details | Diff
Regression coverage (20.86 KB, patch)
2010-06-03 16:53 EDT, Cameron Bateman CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Xiaonan Jiang CLA 2010-06-03 08:55:57 EDT
Build Identifier: 3.2.0RC1-20100513125036

The third exception is caused by the second.

Reproducible: Always

Steps to Reproduce:
1. Import the attached project
2. Restart the workspace

After a while, will the following three exceptions in the error log:


!ENTRY org.eclipse.jst.jsf.core 4 0 2010-06-03 08:47:03.781
!MESSAGE While trying to locate JSF resources in the workspace
!STACK 0
org.eclipse.jst.jsf.designtime.internal.resources.ResourceIdentifierFactory$InvalidIdentifierException
	at org.eclipse.jst.jsf.designtime.internal.resources.ResourceIdentifierFactory.createLibraryResource(ResourceIdentifierFactory.java:56)
	at org.eclipse.jst.jsf.designtime.internal.resources.WorkspaceResourceManager.track(WorkspaceResourceManager.java:126)
	at org.eclipse.jst.jsf.designtime.internal.resources.WorkspaceResourceManager.trackAllInFolder(WorkspaceResourceManager.java:104)
	at org.eclipse.jst.jsf.designtime.internal.resources.WorkspaceResourceManager.initResources(WorkspaceResourceManager.java:86)
	at org.eclipse.jst.jsf.designtime.internal.resources.WorkspaceJSFResourceLocator.start(WorkspaceJSFResourceLocator.java:68)
	at org.eclipse.jst.jsf.designtime.internal.resources.WorkspaceJSFResourceLocator.start(WorkspaceJSFResourceLocator.java:1)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.CompositeComponentTaglibLocator.start(CompositeComponentTaglibLocator.java:169)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.CompositeComponentTaglibLocator.start(CompositeComponentTaglibLocator.java:1)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor$1.run(ProjectTaglibDescriptor.java:79)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor.initialize(ProjectTaglibDescriptor.java:68)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor.getTagLibraries(ProjectTaglibDescriptor.java:90)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.initialize(FaceletTagRegistry.java:155)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.getAllTagLibraries(FaceletTagRegistry.java:110)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.getTagLibrary(FaceletTagRegistry.java:201)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.getOrCreateCMDocument(FaceletDocumentFactory.java:160)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.createCMDocumentForContext(FaceletDocumentFactory.java:56)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.createCMElementDeclaration(FaceletDocumentFactory.java:78)
	at org.eclipse.jst.jsf.facelet.ui.internal.hover.FaceletHover$MyHTMLTagInfoHoverProcessor.getCMElementDeclaration(FaceletHover.java:132)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeTagNameHelp(XMLTagInfoHoverProcessor.java:143)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeRegionHelp(XMLTagInfoHoverProcessor.java:105)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeHoverHelp(XMLTagInfoHoverProcessor.java:86)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.getHoverInfo(XMLTagInfoHoverProcessor.java:257)
	at org.eclipse.jst.jsf.facelet.ui.internal.hover.FaceletHover.getHoverInfo(FaceletHover.java:58)
	at org.eclipse.wst.sse.ui.internal.taginfo.BestMatchHover.getHoverInfo(BestMatchHover.java:90)
	at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:168)

!ENTRY org.eclipse.jst.jsf.facelet.core 4 2 2010-06-03 08:47:04.125
!MESSAGE Problems occurred when invoking code from plug-in: "org.eclipse.jst.jsf.facelet.core".
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.CompositeComponentTaglibLocator.start(CompositeComponentTaglibLocator.java:180)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.CompositeComponentTaglibLocator.start(CompositeComponentTaglibLocator.java:1)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor$1.run(ProjectTaglibDescriptor.java:79)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor.initialize(ProjectTaglibDescriptor.java:68)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor.getTagLibraries(ProjectTaglibDescriptor.java:90)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.initialize(FaceletTagRegistry.java:155)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.getAllTagLibraries(FaceletTagRegistry.java:110)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.getTagLibrary(FaceletTagRegistry.java:201)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.getOrCreateCMDocument(FaceletDocumentFactory.java:160)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.createCMDocumentForContext(FaceletDocumentFactory.java:56)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.createCMElementDeclaration(FaceletDocumentFactory.java:78)
	at org.eclipse.jst.jsf.facelet.ui.internal.hover.FaceletHover$MyHTMLTagInfoHoverProcessor.getCMElementDeclaration(FaceletHover.java:132)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeTagNameHelp(XMLTagInfoHoverProcessor.java:143)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeRegionHelp(XMLTagInfoHoverProcessor.java:105)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeHoverHelp(XMLTagInfoHoverProcessor.java:86)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.getHoverInfo(XMLTagInfoHoverProcessor.java:257)
	at org.eclipse.jst.jsf.facelet.ui.internal.hover.FaceletHover.getHoverInfo(FaceletHover.java:58)
	at org.eclipse.wst.sse.ui.internal.taginfo.BestMatchHover.getHoverInfo(BestMatchHover.java:90)
	at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:168)

!ENTRY org.eclipse.jst.jsf.facelet.core 4 0 2010-06-03 08:47:04.140
!MESSAGE While locating facelet libraries on project: Test
!STACK 0
java.lang.Exception: java.lang.NullPointerException
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor$1.handleException(ProjectTaglibDescriptor.java:74)
	at org.eclipse.core.runtime.SafeRunner.handleException(SafeRunner.java:75)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:44)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor.initialize(ProjectTaglibDescriptor.java:68)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor.getTagLibraries(ProjectTaglibDescriptor.java:90)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.initialize(FaceletTagRegistry.java:155)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.getAllTagLibraries(FaceletTagRegistry.java:110)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.FaceletTagRegistry.getTagLibrary(FaceletTagRegistry.java:201)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.getOrCreateCMDocument(FaceletDocumentFactory.java:160)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.createCMDocumentForContext(FaceletDocumentFactory.java:56)
	at org.eclipse.jst.jsf.facelet.core.internal.cm.FaceletDocumentFactory.createCMElementDeclaration(FaceletDocumentFactory.java:78)
	at org.eclipse.jst.jsf.facelet.ui.internal.hover.FaceletHover$MyHTMLTagInfoHoverProcessor.getCMElementDeclaration(FaceletHover.java:132)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeTagNameHelp(XMLTagInfoHoverProcessor.java:143)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeRegionHelp(XMLTagInfoHoverProcessor.java:105)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.computeHoverHelp(XMLTagInfoHoverProcessor.java:86)
	at org.eclipse.wst.xml.ui.internal.taginfo.XMLTagInfoHoverProcessor.getHoverInfo(XMLTagInfoHoverProcessor.java:257)
	at org.eclipse.jst.jsf.facelet.ui.internal.hover.FaceletHover.getHoverInfo(FaceletHover.java:58)
	at org.eclipse.wst.sse.ui.internal.taginfo.BestMatchHover.getHoverInfo(BestMatchHover.java:90)
	at org.eclipse.jface.text.TextViewerHoverManager$4.run(TextViewerHoverManager.java:168)
Caused by: java.lang.NullPointerException
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.CompositeComponentTaglibLocator.start(CompositeComponentTaglibLocator.java:180)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.CompositeComponentTaglibLocator.start(CompositeComponentTaglibLocator.java:1)
	at org.eclipse.jst.jsf.facelet.core.internal.registry.taglib.ProjectTaglibDescriptor$1.run(ProjectTaglibDescriptor.java:79)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	... 16 more
Comment 1 Xiaonan Jiang CLA 2010-06-03 08:56:33 EDT
Created attachment 170946 [details]
the test project to reproduce the problem
Comment 2 Cameron Bateman CLA 2010-06-03 16:51:16 EDT
Created attachment 171026 [details]
Fixes the issue by narrowing the exception catching so resource location isn't prematurely terminated by a bad resource id
Comment 3 Cameron Bateman CLA 2010-06-03 16:53:11 EDT
Created attachment 171027 [details]
Regression coverage
Comment 4 Cameron Bateman CLA 2010-06-03 16:54:12 EDT
Deferring since it is due to an invalid user data case that can be worked around, so isn't stop-ship.
Comment 5 Yury Kats CLA 2010-12-01 13:45:53 EST
Is anything preventing the patch from being applied to 3.2.3? Any other assistance we can offer to help resolve this bug?
Comment 6 Raghunathan Srinivasan CLA 2010-12-01 14:25:02 EST
Mass update: The JSF Tools team is currently focused on performance and deadlock issues in the product. We plan to address other WTP bugs later this month and will review and checkin the patches soon. Thanks for your contribution and understanding.
-Raghu
Comment 7 Ian Trimble CLA 2011-01-04 17:03:24 EST
This appears to have been fixed on 2010/08/24, but not marked fixed. I am now seeing the "invalid resource" message as info in the log, without a thrown exception.