Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 340840 - NPE during validating an erroneous jsp file
Summary: NPE during validating an erroneous jsp file
Status: RESOLVED FIXED
Alias: None
Product: WTP Source Editing
Classification: WebTools
Component: jst.jsp (show other bugs)
Version: unspecified   Edit
Hardware: PC Windows XP
: P3 major (vote)
Target Milestone: 3.2.4   Edit
Assignee: Nick Sandonato CLA
QA Contact: Nick Sandonato CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2011-03-24 06:46 EDT by Patric Rufflar CLA
Modified: 2011-04-15 10:40 EDT (History)
1 user (show)

See Also:
thatnitind: review+


Attachments
patch (4.55 KB, patch)
2011-03-24 14:48 EDT, Nick Sandonato CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Patric Rufflar CLA 2011-03-24 06:46:59 EDT
Build Identifier: 3.2.1


!ENTRY org.eclipse.wst.sse.ui 4 4 2011-03-24 11:41:50.268
!MESSAGE null
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jst.jsp.core.internal.java.JSPTranslator.translate(JSPTranslator.java:1114)
	at org.eclipse.jst.jsp.core.internal.java.JSPTranslation.retranslate(JSPTranslation.java:527)
	at org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter.getJSPTranslation(JSPTranslationAdapter.java:167)
	at org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator.performValidation(JSPJavaValidator.java:309)
	at org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator.validateFile(JSPJavaValidator.java:406)
	at org.eclipse.jst.jsp.core.internal.validation.JSPValidator.validate(JSPValidator.java:196)
	at org.eclipse.wst.sse.ui.internal.reconcile.validator.ReconcileStepForValidator.validate(ReconcileStepForValidator.java:292)
	at org.eclipse.wst.sse.ui.internal.reconcile.validator.ReconcileStepForValidator.reconcileModel(ReconcileStepForValidator.java:258)
	at org.eclipse.jface.text.reconciler.AbstractReconcileStep.reconcile(AbstractReconcileStep.java:95)
	at org.eclipse.wst.sse.ui.internal.reconcile.validator.ValidatorStrategy.reconcile(ValidatorStrategy.java:267)
	at org.eclipse.wst.sse.ui.internal.reconcile.DocumentRegionProcessor.process(DocumentRegionProcessor.java:303)
	at org.eclipse.wst.sse.ui.internal.reconcile.StructuredRegionProcessor.process(StructuredRegionProcessor.java:248)
	at org.eclipse.wst.sse.ui.internal.reconcile.DirtyRegionProcessor.run(DirtyRegionProcessor.java:667)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

!ENTRY org.eclipse.wst.validation 4 0 2011-03-24 11:41:50.283
!MESSAGE Validator JSP Syntax Validator finished validating: file:/C:/IDE/runtime-EclipseApplication(1)/testa/WebContent/test.jsp

!ENTRY org.eclipse.wst.validation 4 0 2011-03-24 11:41:50.283
!MESSAGE 
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jst.jsp.core.internal.java.JSPTranslator.translate(JSPTranslator.java:1114)
	at org.eclipse.jst.jsp.core.internal.java.JSPTranslation.retranslate(JSPTranslation.java:527)
	at org.eclipse.jst.jsp.core.internal.java.JSPTranslationAdapter.getJSPTranslation(JSPTranslationAdapter.java:167)
	at org.eclipse.jst.jsp.core.internal.validation.JSPJavaValidator.performValidation(JSPJavaValidator.java:309)
	at org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator.performValidation(JSPBatchValidator.java:386)
	at org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator.validateFile(JSPBatchValidator.java:443)
	at org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator$2.run(JSPBatchValidator.java:519)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:728)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:4777)
	at org.eclipse.jst.jsp.core.internal.validation.JSPBatchValidator.validate(JSPBatchValidator.java:532)
	at org.eclipse.wst.validation.Validator$V2.validate(Validator.java:1159)
	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:783)
	at org.eclipse.wst.validation.internal.ValManager.validate(ValManager.java:669)
	at org.eclipse.wst.validation.internal.ValBuilderJob$Visitor.visit(ValBuilderJob.java:321)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:68)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:79)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:79)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:48)
	at org.eclipse.wst.validation.internal.ValBuilderJob.deltaBuild(ValBuilderJob.java:211)
	at org.eclipse.wst.validation.internal.ValBuilderJob.run(ValBuilderJob.java:179)
	at org.eclipse.wst.validation.internal.ValBuilderJob.runInWorkspace(ValBuilderJob.java:126)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

Reproducible: Always

Steps to Reproduce:
1. Create Dynamic Project
2. Create empty jsp file in web content folder
3. Paste the following line into the editor:
<% NPE %> 
4. Save
5. NPE.
Comment 1 Nick Sandonato CLA 2011-03-24 14:48:55 EDT
Created attachment 191853 [details]
patch

The problem seems to have arisen from the fact that the actual translator reference changes if a document goes from empty to non-empty and vice versa. For a translator with an empty document, the structured document reference was null, so re-translation was failing and throwing an NPE while trying to iterate through the structured document regions.

Also, it seems like the previous fix would always create a new JSPTranslationExtension, which we were intending to avoid.

This fix corrects both issues.
Comment 2 Nick Sandonato CLA 2011-03-24 14:50:30 EDT
Also wanted to point out that Bug 327934 likely caused this.
Comment 3 Nick Sandonato CLA 2011-04-15 10:40:18 EDT
Code released