Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 325395 - NPE in org.eclipse.wst.server.core.internal.ResourceManager.registerServer
Summary: NPE in org.eclipse.wst.server.core.internal.ResourceManager.registerServer
Status: RESOLVED FIXED
Alias: None
Product: WTP ServerTools
Classification: WebTools
Component: wst.server (show other bugs)
Version: 3.2   Edit
Hardware: PC Windows XP
: P3 trivial (vote)
Target Milestone: ---   Edit
Assignee: Elson Yuen CLA
QA Contact: Angel Vera CLA
URL:
Whiteboard: plan_draft_324
Keywords:
Depends on:
Blocks:
 
Reported: 2010-09-15 17:17 EDT by Troy Bishop CLA
Modified: 2017-10-11 16:36 EDT (History)
0 users

See Also:


Attachments
possible patch (1.12 KB, patch)
2010-09-15 17:19 EDT, Troy Bishop CLA
no flags Details | Diff
v1.0 (2.05 KB, patch)
2011-03-30 17:26 EDT, Elson Yuen CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
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