Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 120755 - NPE at ComponentDeployable.getModules():93
Summary: NPE at ComponentDeployable.getModules():93
Status: CLOSED DUPLICATE of bug 120562
Alias: None
Product: WTP Java EE Tools
Classification: WebTools
Component: wst.web (show other bugs)
Version: 1.0   Edit
Hardware: PC Windows XP
: P2 critical (vote)
Target Milestone: 1.0 M10   Edit
Assignee: John Lanuti CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2005-12-13 17:23 EST by Rob Frost CLA
Modified: 2006-06-21 13:27 EDT (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Rob Frost CLA 2005-12-13 17:23:04 EST
We're seeing the following non-repeatable exception testing the following refactoring scenario with RC2 and our server:

-Create a web project (add it to an EAR)
-Add the EAR to a server instance
-Delete the web project: can generate an NPE
-Delete the EAR: can generate an NPE

For the NPE generated on removal of the web project, it looks like it is possible for the server listener to call refreshServer() on ServerTableViewer before the operation executed by the refactoring IResourceListener can update the server.

If feasible, the refactoring logic should be altered to eliminate the possibility of this type of race condition - need to do some more research and experimentation to see if this is possible.

java.lang.NullPointerException
    at org.eclipse.wst.web.internal.deployables.ComponentDeployable.getModules(ComponentDeployable.java:91)
    at com.bea.wlw.server.internal.core.WeblogicServer.getChildModules(WeblogicServer.java:312)
    at org.eclipse.wst.server.core.internal.Server.getChildModules(Server.java:1985)
    at org.eclipse.wst.server.ui.internal.view.servers.ServerTableViewer$ServerContentProvider.hasChildren(ServerTableViewer.java:119)
    at org.eclipse.jface.viewers.AbstractTreeViewer.isExpandable(AbstractTreeViewer.java:1378)
    at org.eclipse.jface.viewers.AbstractTreeViewer.updatePlus(AbstractTreeViewer.java:1845)
    at org.eclipse.jface.viewers.AbstractTreeViewer.updateChildren(AbstractTreeViewer.java:1792)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefreshStruct(AbstractTreeViewer.java:1268)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1245)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1201)
    at org.eclipse.jface.viewers.AbstractTreeViewer.internalRefresh(AbstractTreeViewer.java:1188)
    at org.eclipse.jface.viewers.StructuredViewer$7.run(StructuredViewer.java:1264)
    at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1201)
    at org.eclipse.jface.viewers.StructuredViewer.refresh(StructuredViewer.java:1262)
    at org.eclipse.wst.server.ui.internal.view.servers.ServerTableViewer$7.run(ServerTableViewer.java:370)
    at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
    at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
    at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3057)
    at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2716)
    at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
    at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
    at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
    at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
    at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
    at org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
    at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    at java.lang.reflect.Method.invoke(Method.java:585)
    at org.eclipse.core.launcher.Main.invokeFramework(Main.java:334)
    at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
    at org.eclipse.core.launcher.Main.run(Main.java:973)
    at org.eclipse.core.launcher.Main.main(Main.java:948)
Comment 1 Ted Bashor CLA 2005-12-13 19:06:27 EST
Here's the same NPE coming via the ResourceManager$ServerResourceChangeListener


java.lang.NullPointerException
	at org.eclipse.wst.web.internal.deployables.ComponentDeployable.getModules(ComponentDeployable.java:91)
	at com.bea.wlw.server.internal.core.WeblogicServer.getChildModules(WeblogicServer.java:312)
	at org.eclipse.wst.server.core.internal.Server.getChildModules(Server.java:1985)
	at org.eclipse.wst.server.core.internal.Server.visitModule(Server.java:2142)
	at org.eclipse.wst.server.core.internal.Server.visit(Server.java:2123)
	at org.eclipse.wst.server.core.internal.Server.handleModuleProjectChange(Server.java:450)
	at org.eclipse.wst.server.core.internal.ResourceManager.publishHandleProjectChange(ResourceManager.java:950)
	at org.eclipse.wst.server.core.internal.ResourceManager$1.visit(ResourceManager.java:111)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:68)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:77)
	at org.eclipse.core.internal.events.ResourceDelta.accept(ResourceDelta.java:49)
	at org.eclipse.wst.server.core.internal.ResourceManager$ServerResourceChangeListener.resourceChanged(ResourceManager.java:105)
	at org.eclipse.core.internal.events.NotificationManager$2.run(NotificationManager.java:276)
	at org.eclipse.core.internal.runtime.InternalPlatform.run(InternalPlatform.java:1044)
	at org.eclipse.core.runtime.Platform.run(Platform.java:783)
	at org.eclipse.core.internal.events.NotificationManager.notify(NotificationManager.java:270)
	at org.eclipse.core.internal.events.NotificationManager.broadcastChanges(NotificationManager.java:144)
	at org.eclipse.core.internal.resources.Workspace.broadcastPostChange(Workspace.java:180)
	at org.eclipse.core.internal.resources.Workspace.endOperation(Workspace.java:914)
	at org.eclipse.core.internal.resources.File.create(File.java:170)
	at org.eclipse.core.internal.localstore.CopyVisitor.copyContents(CopyVisitor.java:81)
	at org.eclipse.core.internal.localstore.CopyVisitor.copy(CopyVisitor.java:67)
	at org.eclipse.core.internal.localstore.CopyVisitor.visit(CopyVisitor.java:185)
	at org.eclipse.core.internal.localstore.UnifiedTree.accept(UnifiedTree.java:83)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.copy(FileSystemResourceManager.java:144)
	at org.eclipse.core.internal.resources.Resource.copy(Resource.java:536)
	at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.findSourceFiles(IncrementalImageBuilder.java:521)
	at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.findSourceFiles(IncrementalImageBuilder.java:418)
	at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.findSourceFiles(IncrementalImageBuilder.java:418)
	at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.findSourceFiles(IncrementalImageBuilder.java:418)
	at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.findSourceFiles(IncrementalImageBuilder.java:375)
	at org.eclipse.jdt.internal.core.builder.IncrementalImageBuilder.build(IncrementalImageBuilder.java:77)
Comment 2 Rob Frost CLA 2005-12-13 23:12:12 EST
Although I think the refactoring issue still exists and needs to be solved, based on some of the other occurrences of this NPE, this is looking like it may be triggered by a wider set of cases than just project refactoring (another stack is included below); I'm changing the summary to reflect this and moving to wst.web since I think we should initially fix the NPE in ComponentDeployables.getModules() (i.e. check if the referenced component is null)

  [java] !ENTRY com.bea.wlw.server.core 4 4000 2005-12-13 16:46:47.261
     [java] !MESSAGE Error in getChildModules()
     [java] !STACK 0
     [java] java.lang.NullPointerException
     [java] 	at org.eclipse.wst.web.internal.deployables.ComponentDeployable.getModules(ComponentDeployable.java:91)
     [java] 	at com.bea.wlw.server.internal.core.WeblogicServer.getChildModules(WeblogicServer.java:312)
     [java] 	at org.eclipse.wst.server.core.internal.Server.getChildModules(Server.java:1985)
     [java] 	at org.eclipse.wst.server.ui.internal.wizard.page.ModifyModulesComposite.setServer(ModifyModulesComposite.java:302)
     [java] 	at org.eclipse.wst.server.ui.internal.wizard.fragment.ModifyModulesWizardFragment.updateModules(ModifyModulesWizardFragment.java:73)
     [java] 	at org.eclipse.wst.server.ui.internal.wizard.fragment.ModifyModulesWizardFragment.getChildFragments(ModifyModulesWizardFragment.java:62)
     [java] 	at org.eclipse.wst.server.ui.internal.wizard.TaskWizard.addSubWizardFragments(TaskWizard.java:310)
     [java] 	at org.eclipse.wst.server.ui.internal.wizard.TaskWizard.addSubWizardFragments(TaskWizard.java:314)
     [java] 	at org.eclipse.wst.server.ui.internal.wizard.TaskWizard.getAllWizardFragments(TaskWizard.java:298)
     [java] 	at org.eclipse.wst.server.ui.internal.wizard.TaskWizard.switchWizardFragment(TaskWizard.java:263)
     [java] 	at org.eclipse.wst.server.ui.internal.wizard.TaskWizardPage.setVisible(TaskWizardPage.java:92)
     [java] 	at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1030)
     [java] 	at org.eclipse.jface.wizard.WizardDialog.access$2(WizardDialog.java:1013)
     [java] 	at org.eclipse.jface.wizard.WizardDialog$4.run(WizardDialog.java:1003)
     [java] 	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
     [java] 	at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1001)
     [java] 	at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:753)
     [java] 	at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:345)
     [java] 	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:556)
     [java] 	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:90)
     [java] 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
     [java] 	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:843)
     [java] 	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3080)
     [java] 	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2713)
     [java] 	at org.eclipse.jface.window.Window.runEventLoop(Window.java:809)
     [java] 	at org.eclipse.jface.window.Window.open(Window.java:787)
     [java] 	at org.eclipse.ui.actions.NewWizardAction.run(NewWizardAction.java:181)
     [java] 	at org.eclipse.jface.action.Action.runWithEvent(Action.java:996)
     [java] 	at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:538)
     [java] 	at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:488)
     [java] 	at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:400)
     [java] 	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)

Comment 3 Rob Frost CLA 2005-12-14 14:50:12 EST
Changing severity
Comment 4 Chuck Bridgham CLA 2005-12-14 17:09:09 EST
This code which produced the NPE will be null guarded as a part of the fix dropped for 120562.

*** This bug has been marked as a duplicate of 120562 ***
Comment 5 Arthur Ryman CLA 2005-12-14 17:10:29 EST
Adding to Hot List at the request of Ted Bashor and setting priority to P2 in case it is reopened.
Comment 6 Rob Frost CLA 2006-06-21 13:27:17 EDT
closing