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

Bug 342659

Summary: [compare editor] replace with > local history... causes NPE
Product: [Modeling] TMF Reporter: Knut Wannheden <knut.wannheden>
Component: XtextAssignee: Project Inbox <tmf.xtext-inbox>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: clay, sebastian.zarnekow
Version: 2.0.0Flags: sebastian.zarnekow: indigo+
Target Milestone: M7   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
propsed patch none

Description Knut Wannheden CLA 2011-04-13 02:43:23 EDT
The default "Compare with" editors ("Compare with > Local history..." and "Compare with > each other") work as expected, but the "Replace with > Local history") results in an NPE when selecting a revision from the local history to compare against.

Note that this bug occurs both with and without the proposed patch to bug 342296.

The problem seems to be that in DefaultMergeViewer#createSourceViewer() the call to getSite() returns null as the action opens a separate window (thus no IWorkbenchPartSite).

java.lang.NullPointerException
at org.eclipse.xtext.ui.compare.DefaultMergeViewer.createSourceViewerConfiguration(DefaultMergeViewer.java:124)
at org.eclipse.xtext.ui.compare.DefaultMergeViewer.configureSourceViewer(DefaultMergeViewer.java:113)
at org.eclipse.xtext.ui.compare.DefaultMergeViewer.configureTextViewer(DefaultMergeViewer.java:106)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer.configureSourceViewer(TextMergeViewer.java:2890)
at org.eclipse.compare.contentmergeviewer.TextMergeViewer.updateContent(TextMergeViewer.java:2843)
at org.eclipse.xtext.ui.compare.DefaultMergeViewer.updateContent(DefaultMergeViewer.java:62)
at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.internalRefresh(ContentMergeViewer.java:783)
at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.inputChanged(ContentMergeViewer.java:683)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:274)
at org.eclipse.compare.CompareViewerSwitchingPane.setInput(CompareViewerSwitchingPane.java:270)
at org.eclipse.compare.internal.CompareContentViewerSwitchingPane.setInput(CompareContentViewerSwitchingPane.java:132)
at org.eclipse.compare.CompareEditorInput.internalSetContentPaneInput(CompareEditorInput.java:817)
at org.eclipse.compare.CompareEditorInput.access$8(CompareEditorInput.java:815)
at org.eclipse.compare.CompareEditorInput$11.run(CompareEditorInput.java:760)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.compare.CompareEditorInput.feed1(CompareEditorInput.java:749)
at org.eclipse.compare.CompareEditorInput.access$3(CompareEditorInput.java:748)
at org.eclipse.compare.CompareEditorInput$5.open(CompareEditorInput.java:634)
at org.eclipse.compare.CompareViewerPane.open(CompareViewerPane.java:325)
at org.eclipse.team.ui.PageCompareEditorInput$1.open(PageCompareEditorInput.java:83)
at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:842)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.runtime.Platform.run(Platform.java:888)
at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:48)
at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:840)
at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1101)
at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1205)
at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:264)
at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:258)
at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:298)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Display.sendEvent(Display.java:3543)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1250)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1273)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1258)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:1079)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3441)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3100)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:825)
at org.eclipse.jface.window.Window.open(Window.java:801)
at org.eclipse.compare.internal.CompareDialog.open(CompareDialog.java:195)
at org.eclipse.compare.internal.CompareUIPlugin$3.run(CompareUIPlugin.java:1248)
at org.eclipse.compare.internal.CompareUIPlugin.syncExec(CompareUIPlugin.java:1258)
at org.eclipse.compare.internal.CompareUIPlugin.internalOpenDialog(CompareUIPlugin.java:1251)
at org.eclipse.compare.internal.CompareUIPlugin.openCompareDialog(CompareUIPlugin.java:542)
at org.eclipse.compare.CompareUI.openCompareDialog(CompareUI.java:211)
at org.eclipse.team.internal.ui.history.ReplaceLocalHistory.showCompareInDialog(ReplaceLocalHistory.java:66)
at org.eclipse.team.internal.ui.history.ReplaceLocalHistory.access$0(ReplaceLocalHistory.java:40)
at org.eclipse.team.internal.ui.history.ReplaceLocalHistory$1.run(ReplaceLocalHistory.java:34)
at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3405)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3102)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
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:368)
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:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
at org.eclipse.equinox.launcher.Main.main(Main.java:1287)
Comment 1 Michael Clay CLA 2011-04-20 10:28:48 EDT
Created attachment 193705 [details]
propsed patch
Comment 2 Sebastian Zarnekow CLA 2011-04-20 10:44:40 EDT
Looks good to me. Please apply the patch.
Comment 3 Michael Clay CLA 2011-04-20 11:49:46 EDT
pushed to master
Comment 4 Karsten Thoms CLA 2017-09-19 17:44:50 EDT
Closing all bugs that were set to RESOLVED before Neon.0
Comment 5 Karsten Thoms CLA 2017-09-19 17:56:03 EDT
Closing all bugs that were set to RESOLVED before Neon.0