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

Bug 321606

Summary: NPE when a User Library reference is added to an EAR
Product: [WebTools] WTP Java EE Tools Reporter: Aidyl Kareh <amkareh>
Component: jst.j2eeAssignee: Aidyl Kareh <amkareh>
Status: RESOLVED FIXED QA Contact: Chuck Bridgham <cbridgha>
Severity: normal    
Priority: P3 CC: amkareh, jsholl
Version: unspecifiedFlags: cbridgha: review+
jsholl: review+
Target Milestone: 3.2.2   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Attachments:
Description Flags
Proposed Patch none

Description Aidyl Kareh CLA 2010-08-03 10:49:04 EDT
Build Identifier: WTP 3.2.1

The following 2 exceptions are being logged when adding (1st exception) or removing (2nd exception) a User Library reference to an EAR.

!ENTRY org.eclipse.jst.jee 4 0 2010-08-03 09:57:27.152
!MESSAGE
!STACK 0
java.lang.NullPointerException
        at org.eclipse.core.runtime.Path.append(Path.java:261)
        at org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationOp$1.run(AddComponentToEnterpriseApplicationOp.java:144)
        at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.modify(JEE5ModelProvider.java:256)
        at org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationOp.updateEARDD(AddComponentToEnterpriseApplicationOp.java:136)
        at org.eclipse.jst.j2ee.application.internal.operations.AddComponentToEnterpriseApplicationOp.execute(AddComponentToEnterpriseApplicationOp.java:81)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl$1.run(DataModelPausibleOperationImpl.java:385)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.runOperation(DataModelPausibleOperationImpl.java:410)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.runOperation(DataModelPausibleOperationImpl.java:360)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.doExecute(DataModelPausibleOperationImpl.java:247)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.executeImpl(DataModelPausibleOperationImpl.java:219)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.cacheThreadAndContinue(DataModelPausibleOperationImpl.java:89)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.execute(DataModelPausibleOperationImpl.java:207)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.addOneReference(AddModuleDependenciesPropertiesPage.java:1024)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.addReferences(AddModuleDependenciesPropertiesPage.java:1004)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage$4.run(AddModuleDependenciesPropertiesPage.java:991)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1957)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.handleAdded(AddModuleDependenciesPropertiesPage.java:995)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.saveReferenceChanges(AddModuleDependenciesPropertiesPage.java:913)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.performOk(AddModuleDependenciesPropertiesPage.java:839)
        at org.eclipse.jst.j2ee.internal.ui.preferences.EarModuleDependenciesPropertyPage.performOk(EarModuleDependenciesPropertyPage.java:172)
        at org.eclipse.wst.common.componentcore.ui.propertypage.ModuleAssemblyRootPage.performOkModuleAssemblyRootPage.java:74)
        at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:964)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
        at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
        at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:944)
        at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:447)
        at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
        at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
        at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
        at org.eclipse.jface.window.Window.open(Window.java:801)
        at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:157)
        at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
        at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
        at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
        at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1407)


!ENTRY org.eclipse.jst.jee 4 0 2010-08-03 10:00:31.201
!MESSAGE
!STACK 0
java.lang.NullPointerException
        at org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationOperation.getModule(RemoveComponentFromEnterpriseApplicationOperation.java:192)
        at org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationOperation$1.run(RemoveComponentFromEnterpriseApplicationOperation.java:89)
        at org.eclipse.jst.jee.model.internal.JEE5ModelProvider.modify(JEE5ModelProvider.java:256)
        at org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationOperation.updateEARDD(RemoveComponentFromEnterpriseApplicationOperation.java:80)
        at org.eclipse.jst.j2ee.application.internal.operations.RemoveComponentFromEnterpriseApplicationOperation.execute(RemoveComponentFromEnterpriseApplicationOperation.java:52)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl$1.run(DataModelPausibleOperationImpl.java:385)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.runOperation(DataModelPausibleOperationImpl.java:410)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.runOperation(DataModelPausibleOperationImpl.java:360)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.doExecute(DataModelPausibleOperationImpl.java:247)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.executeImpl(DataModelPausibleOperationImpl.java:219)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.cacheThreadAndContinue(DataModelPausibleOperationImpl.java:89)
        at org.eclipse.wst.common.frameworks.internal.datamodel.DataModelPausibleOperationImpl.execute(DataModelPausibleOperationImpl.java:207)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.removeOneReference(AddModuleDependenciesPropertiesPage.java:959)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.removeReferences(AddModuleDependenciesPropertiesPage.java:952)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage$3.run(AddModuleDependenciesPropertiesPage.java:938)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1975)
        at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1957)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.handleRemoved(AddModuleDependenciesPropertiesPage.java:942)
        at org.eclipse.jst.j2ee.internal.ui.preferences.EarModuleDependenciesPropertyPage.handleRemoved(EarModuleDependenciesPropertyPage.java:124)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.saveReferenceChanges(AddModuleDependenciesPropertiesPage.java:912)
        at org.eclipse.wst.common.componentcore.ui.propertypage.AddModuleDependenciesPropertiesPage.performOk(AddModuleDependenciesPropertiesPage.java:839)
        at org.eclipse.jst.j2ee.internal.ui.preferences.EarModuleDependenciesPropertyPage.performOk(EarModuleDependenciesPropertyPage.java:172)
        at org.eclipse.wst.common.componentcore.ui.propertypage.ModuleAssemblyRootPage.performOk(ModuleAssemblyRootPage.java:74)
        at org.eclipse.jface.preference.PreferenceDialog$13.run(PreferenceDialog.java:964)
        at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
        at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
        at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
        at org.eclipse.jface.preference.PreferenceDialog.okPressed(PreferenceDialog.java:944)
        at org.eclipse.ui.internal.dialogs.FilteredPreferenceDialog.okPressed(FilteredPreferenceDialog.java:447)
        at org.eclipse.jface.preference.PreferenceDialog.buttonPressed(PreferenceDialog.java:233)
        at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:624)
        at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:234)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
        at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
        at org.eclipse.jface.window.Window.open(Window.java:801)
        at org.eclipse.ui.dialogs.PropertyDialogAction.run(PropertyDialogAction.java:157)
        at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
        at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
        at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
        at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
        at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
        at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
        at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4066)
        at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3657)
        at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
        at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
        at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
        at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
        at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
        at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
        at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
        at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
        at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
        at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:369)
        at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:619)
        at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
        at org.eclipse.equinox.launcher.Main.run(Main.java:1407)

Reproducible: Always

Steps to Reproduce:
1. Create an EAR project
2. Go to the 'Deployment Assembly' properties page of the EAR
3. Add a reference to a User Library and click 'OK' to save the changes (first exception is logged)
4. Go to the 'Deployment Assembly' properties page of the EAR
5. Remove the User Library reference that you just added and click 'OK' to save the changes (2nd exception is logged)
Comment 1 Aidyl Kareh CLA 2010-08-03 10:57:32 EDT
Created attachment 175784 [details]
Proposed Patch

Patch adds null value verification at some locations in the AddComponentToEnterpriseApplicationOp.updateEARDD() and RemoveComponentFromEnterpriseApplicationOperation.updateEARDD() methods.
Comment 2 Chuck Bridgham CLA 2010-08-10 15:59:30 EDT
approved
Comment 3 Jason Sholl CLA 2010-08-10 17:24:13 EDT
code checked into head for 3.2.2