Community
Participate
Working Groups
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)
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)
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)
Changing severity
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 ***
Adding to Hot List at the request of Ted Bashor and setting priority to P2 in case it is reopened.
closing