[jbosstools-issues] [JBoss JIRA] (JBIDE-23040) NPE in ELReference when validating non-synchronized resources

Viacheslav Kabanovich (JIRA) issues at jboss.org
Thu Aug 25 02:21:00 EDT 2016


     [ https://issues.jboss.org/browse/JBIDE-23040?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Viacheslav Kabanovich updated JBIDE-23040:
------------------------------------------
    Description: 
Open in Eclipse workspace with a jsf project. Open one of page files in an external editor and modify it. Do not open the file in an editor inside Eclipse. Rebuild project.
{code}
org.jboss.tools.common.validation.JBTValidationException
	at org.jboss.tools.common.validation.ValidatorManager.validate(ValidatorManager.java:147)
	at org.jboss.tools.common.validation.ValidatorManager.validateInJob(ValidatorManager.java:81)
	at org.eclipse.wst.validation.internal.core.ValidatorLauncher.start(ValidatorLauncher.java:77)
	at org.eclipse.wst.validation.Validator$V1.validate(Validator.java:768)
	at org.eclipse.wst.validation.Validator.validate(Validator.java:405)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)
	at org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)
	at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:810)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)
	at org.eclipse.wst.validation.internal.ValidationRunner.execute(ValidationRunner.java:134)
	at org.eclipse.wst.validation.internal.ValidationRunner.validate(ValidationRunner.java:68)
	at org.eclipse.wst.validation.ui.internal.ManualValidationRunner.runInWorkspace(ManualValidationRunner.java:83)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Caused by: java.lang.NullPointerException
	at org.jboss.tools.common.el.core.ELReference.getText(ELReference.java:175)
	at org.jboss.tools.common.el.core.ELReference.getSourceText(ELReference.java:134)
	at org.jboss.tools.common.el.core.ELReference.getEl(ELReference.java:164)
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateEL(ELValidator.java:336)
	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validate(ELValidator.java:209)
	at org.jboss.tools.common.validation.ValidatorManager.validate(ValidatorManager.java:140)
	... 13 more
{code}

If the file is open in editor in Eclipse, its content is stored in a buffer, and method FileUtil.getContentFromEditorOrFile(IFile) takes it from the buffer. When the file was not open in editor in Eclipse, the content is not buffered, and the method accesses the file but fails if it is not synchronized. However, clients of the method (e.g. search) may need the content even if the file is not synchronized in order to check its relevance and report synchronization problem only if the case is relevant. As it is, an error is logged now any time when user's resources are not synchronized. So, I suggest not only checking for null in ELReference but also returning in FileUtil.getContentFromEditorOrFile(IFile) content from the file on disk (if it exists) for not synchronized files.


> NPE in ELReference when validating non-synchronized resources
> -------------------------------------------------------------
>
>                 Key: JBIDE-23040
>                 URL: https://issues.jboss.org/browse/JBIDE-23040
>             Project: Tools (JBoss Tools)
>          Issue Type: Bug
>          Components: common/jst/core
>    Affects Versions: 4.4.1.AM3
>            Reporter: Viacheslav Kabanovich
>            Assignee: Viacheslav Kabanovich
>
> Open in Eclipse workspace with a jsf project. Open one of page files in an external editor and modify it. Do not open the file in an editor inside Eclipse. Rebuild project.
> {code}
> org.jboss.tools.common.validation.JBTValidationException
> 	at org.jboss.tools.common.validation.ValidatorManager.validate(ValidatorManager.java:147)
> 	at org.jboss.tools.common.validation.ValidatorManager.validateInJob(ValidatorManager.java:81)
> 	at org.eclipse.wst.validation.internal.core.ValidatorLauncher.start(ValidatorLauncher.java:77)
> 	at org.eclipse.wst.validation.Validator$V1.validate(Validator.java:768)
> 	at org.eclipse.wst.validation.Validator.validate(Validator.java:405)
> 	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:704)
> 	at org.eclipse.wst.validation.internal.ValManager$1.visit(ValManager.java:665)
> 	at org.eclipse.wst.validation.internal.ValManager.accept(ValManager.java:810)
> 	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)
> 	at org.eclipse.wst.validation.internal.ValidationRunner.execute(ValidationRunner.java:134)
> 	at org.eclipse.wst.validation.internal.ValidationRunner.validate(ValidationRunner.java:68)
> 	at org.eclipse.wst.validation.ui.internal.ManualValidationRunner.runInWorkspace(ManualValidationRunner.java:83)
> 	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:39)
> 	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
> Caused by: java.lang.NullPointerException
> 	at org.jboss.tools.common.el.core.ELReference.getText(ELReference.java:175)
> 	at org.jboss.tools.common.el.core.ELReference.getSourceText(ELReference.java:134)
> 	at org.jboss.tools.common.el.core.ELReference.getEl(ELReference.java:164)
> 	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validateEL(ELValidator.java:336)
> 	at org.jboss.tools.jst.web.kb.internal.validation.ELValidator.validate(ELValidator.java:209)
> 	at org.jboss.tools.common.validation.ValidatorManager.validate(ValidatorManager.java:140)
> 	... 13 more
> {code}
> If the file is open in editor in Eclipse, its content is stored in a buffer, and method FileUtil.getContentFromEditorOrFile(IFile) takes it from the buffer. When the file was not open in editor in Eclipse, the content is not buffered, and the method accesses the file but fails if it is not synchronized. However, clients of the method (e.g. search) may need the content even if the file is not synchronized in order to check its relevance and report synchronization problem only if the case is relevant. As it is, an error is logged now any time when user's resources are not synchronized. So, I suggest not only checking for null in ELReference but also returning in FileUtil.getContentFromEditorOrFile(IFile) content from the file on disk (if it exists) for not synchronized files.



--
This message was sent by Atlassian JIRA
(v6.4.11#64026)


More information about the jbosstools-issues mailing list