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

Bug 351763

Summary: NPE when using EMF compare inside dialog
Product: [Modeling] EMFCompare Reporter: Benjamin Muskalla <b.muskalla>
Component: CoreAssignee: EMF Compare <emf.compare-inbox>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: laurent.goubet
Version: unspecified   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
proposed patch
laurent.goubet: iplog+
mylyn/context/zip none

Description Benjamin Muskalla CLA 2011-07-11 18:06:39 EDT
When using EMF compare inside a dialog (eg. EGit commit dialog), there is no reference to a workbench part and thus, EMF compare fails with an NPE.

As the site is only used to register the export action (which is not needed in that scenario), I'd just ignore adding the menu manager.


!ENTRY org.eclipse.ui 4 0 2011-07-11 23:54:02.625
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NullPointerException
	at org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer.createToolItems(ModelStructureMergeViewer.java:192)
	at org.eclipse.emf.compare.ui.viewer.structure.ParameterizedStructureMergeViewer.createToolItems(ParameterizedStructureMergeViewer.java:83)
	at org.eclipse.emf.compare.ui.viewer.structure.ModelStructureMergeViewer.<init>(ModelStructureMergeViewer.java:100)
	at org.eclipse.emf.compare.ui.viewer.structure.ParameterizedStructureMergeViewer.<init>(ParameterizedStructureMergeViewer.java:60)
	at org.eclipse.emf.compare.ui.viewer.structure.ParameterizedStructureMergeViewerCreator.createViewer(ParameterizedStructureMergeViewerCreator.java:32)
	at org.eclipse.compare.internal.ViewerDescriptor.createViewer(ViewerDescriptor.java:63)
	at org.eclipse.compare.internal.CompareUIPlugin.getViewer(CompareUIPlugin.java:969)
	at org.eclipse.compare.internal.CompareUIPlugin.findStructureViewer(CompareUIPlugin.java:850)
	at org.eclipse.compare.CompareUI.findStructureViewer(CompareUI.java:312)
	at org.eclipse.compare.CompareEditorInput.findStructureViewer(CompareEditorInput.java:931)
	at org.eclipse.compare.internal.CompareStructureViewerSwitchingPane.getViewer(CompareStructureViewerSwitchingPane.java:84)
	at org.eclipse.compare.CompareEditorInput$10.getViewer(CompareEditorInput.java:715)
	at org.eclipse.compare.CompareViewerSwitchingPane.setInput(CompareViewerSwitchingPane.java:266)
	at org.eclipse.compare.internal.CompareStructureViewerSwitchingPane.setInput(CompareStructureViewerSwitchingPane.java:132)
	at org.eclipse.compare.CompareEditorInput.feedInput(CompareEditorInput.java:747)
	at org.eclipse.compare.CompareEditorInput.createContents(CompareEditorInput.java:555)
	at org.eclipse.compare.internal.CompareDialog.createDialogArea(CompareDialog.java:175)
	at org.eclipse.jface.dialogs.Dialog.createContents(Dialog.java:760)
	at org.eclipse.jface.window.Window.create(Window.java:431)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:1089)
	at org.eclipse.jface.window.Window.open(Window.java:790)
	at org.eclipse.compare.internal.CompareDialog.open(CompareDialog.java:196)
	at org.eclipse.compare.internal.CompareUIPlugin$3.run(CompareUIPlugin.java:1253)
	at org.eclipse.compare.internal.CompareUIPlugin.syncExec(CompareUIPlugin.java:1263)
	at org.eclipse.compare.internal.CompareUIPlugin.internalOpenDialog(CompareUIPlugin.java:1256)
	at org.eclipse.compare.internal.CompareUIPlugin.openCompareDialog(CompareUIPlugin.java:547)
	at org.eclipse.compare.CompareUI.openCompareDialog(CompareUI.java:211)
	at org.eclipse.egit.ui.internal.CompareUtils.compareHeadWithWorkspace(CompareUtils.java:415)
	at org.eclipse.egit.ui.internal.dialogs.CommitDialog$CommitItemSelectionListener.widgetDefaultSelected(CommitDialog.java:250)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:119)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
	at org.eclipse.jface.window.Window.open(Window.java:801)
	at org.eclipse.egit.ui.internal.commit.CommitUI.commit(CommitUI.java:183)
	at org.eclipse.egit.ui.internal.actions.CommitActionHandler.execute(CommitActionHandler.java:32)
	at org.eclipse.egit.ui.internal.actions.RepositoryAction.run(RepositoryAction.java:86)
	at org.eclipse.ui.internal.PluginAction.runWithEvent(PluginAction.java:251)
	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:1258)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3588)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3209)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	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:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	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:597)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
Comment 1 Benjamin Muskalla CLA 2011-07-11 18:07:31 EDT
Created attachment 199453 [details]
proposed patch

.
Comment 2 Benjamin Muskalla CLA 2011-07-11 18:07:32 EDT
Created attachment 199454 [details]
mylyn/context/zip
Comment 3 Laurent Goubet CLA 2011-07-19 04:44:22 EDT
Thanks for the patch, this has been contributed to master and will also find its way into the 1.2 maintenance branch.