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

Bug 325395

Summary: NPE in org.eclipse.wst.server.core.internal.ResourceManager.registerServer
Product: [WebTools] WTP ServerTools Reporter: Troy Bishop <tjbishop>
Component: wst.serverAssignee: Elson Yuen <eyuen7>
Status: RESOLVED FIXED QA Contact: Angel Vera <arvera>
Severity: trivial    
Priority: P3    
Version: 3.2   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
See Also: https://git.eclipse.org/r/109030
Whiteboard: plan_draft_324
Attachments:
Description Flags
possible patch
none
v1.0 none

Description Troy Bishop CLA 2010-09-15 17:17:41 EDT
Build Identifier: WTP 3.2.1

If a workspace contains a .server file that does not exist for a WTP product then the following NPE will occur during classpath initialization:

!ENTRY org.eclipse.wst.server.core 4 0 2010-09-15 16:59:49.437
!MESSAGE Error loading server
!STACK 0
java.lang.NullPointerException
	at org.eclipse.wst.server.core.internal.ResourceManager.registerServer(ResourceManager.java:1117)
	at org.eclipse.wst.server.core.internal.ResourceManager.addServer(ResourceManager.java:630)
	at org.eclipse.wst.server.core.internal.ResourceManager.handleNewFile(ResourceManager.java:818)
	at org.eclipse.wst.server.core.internal.ResourceManager$2.visit(ResourceManager.java:281)
	at org.eclipse.core.internal.resources.Resource$1.visitElement(Resource.java:64)
	at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:82)
	at org.eclipse.core.internal.watson.ElementTreeIterator.doIteration(ElementTreeIterator.java:86)
	at org.eclipse.core.internal.watson.ElementTreeIterator.iterate(ElementTreeIterator.java:127)
	at org.eclipse.core.internal.resources.Resource.accept(Resource.java:74)
	at org.eclipse.wst.server.core.internal.ResourceManager.loadFromProject(ResourceManager.java:275)
	at org.eclipse.wst.server.core.internal.ResourceManager.init(ResourceManager.java:257)
	at org.eclipse.wst.server.core.internal.ResourceManager.getRuntime(ResourceManager.java:675)
	at org.eclipse.wst.server.core.ServerCore.findRuntime(ServerCore.java:260)
	at org.eclipse.jst.server.core.internal.RuntimeClasspathContainerInitializer.initialize(RuntimeClasspathContainerInitializer.java:43)
	at org.eclipse.jdt.internal.core.JavaModelManager.initializeContainer(JavaModelManager.java:2707)
	at org.eclipse.jdt.internal.core.JavaModelManager.getClasspathContainer(JavaModelManager.java:1850)
	at org.eclipse.jdt.core.JavaCore.getClasspathContainer(JavaCore.java:2705)
	at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2645)
	at org.eclipse.jdt.internal.core.JavaProject.resolveClasspath(JavaProject.java:2783)
	at org.eclipse.jdt.internal.core.ClasspathChange.generateDelta(ClasspathChange.java:218)
	at org.eclipse.jdt.internal.core.DeltaProcessor.resourceChanged(DeltaProcessor.java:1916)
	at org.eclipse.jdt.internal.core.DeltaProcessingState.resourceChanged(DeltaProcessingState.java:470)
	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.broadcastChanges(NotificationManager.java:149)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:327)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:1181)
	at org.eclipse.core.internal.resources.Resource.refreshLocal(Resource.java:1676)
	at org.eclipse.core.internal.refresh.RefreshJob.runInWorkspace(RefreshJob.java:166)
	at org.eclipse.core.internal.resources.InternalWorkspaceJob.run(InternalWorkspaceJob.java:38)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:54)

I will attach a patch which will solve this NPE.

I am marking this as Trivial as there is no negative side-effects to this NPE... it is just an entry in the .log file that doesn't need to be there :)

Reproducible: Always
Comment 1 Troy Bishop CLA 2010-09-15 17:19:00 EDT
Created attachment 178984 [details]
possible patch
Comment 2 Troy Bishop CLA 2010-09-15 17:19:45 EDT
Just to clarify... I should have said:

"If a workspace contains a .server file for a server type that does not exist for a WTP product then the following NPE will occur during classpath initialization:"

...
Comment 3 Troy Bishop CLA 2010-09-15 18:06:47 EDT
There is also an NPE in ServerCore#isPublishRequired() for the same situation.  The line of code:

if (controller.supportsType(server.getServerType().getId()))

will cause an NPE as the call to getServerType() will be null.
Comment 4 Elson Yuen CLA 2011-03-30 17:26:04 EDT
Created attachment 192229 [details]
v1.0

This patch both NPE problem that has been reported on this defect.
Comment 5 Elson Yuen CLA 2011-03-30 17:26:21 EDT
Code committed to 3.2M
Comment 6 Elson Yuen CLA 2011-03-30 17:26:42 EDT
Code released to 33M
Comment 7 Angel Vera CLA 2011-03-30 22:07:15 EDT
Code released to 32M
Comment 8 Eclipse Genie CLA 2017-10-11 16:36:03 EDT
New Gerrit change created: https://git.eclipse.org/r/109030