Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 343481 - [compare editor] hover over throws NPE
Summary: [compare editor] hover over throws NPE
Status: CLOSED FIXED
Alias: None
Product: TMF
Classification: Modeling
Component: Xtext (show other bugs)
Version: 2.0.0   Edit
Hardware: All All
: P3 normal (vote)
Target Milestone: RC1   Edit
Assignee: Project Inbox CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 345015
Blocks:
  Show dependency tree
 
Reported: 2011-04-21 03:03 EDT by Knut Wannheden CLA
Modified: 2017-09-19 17:56 EDT (History)
3 users (show)

See Also:
sebastian.zarnekow: indigo+


Attachments
proposed patch pls verify & test (30.27 KB, patch)
2011-05-05 17:19 EDT, Michael Clay CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Knut Wannheden CLA 2011-04-21 03:03:27 EDT
When opening the compare editor (e.g. using Compare With > Local History...) then hovering over text in the right pane doesn't show the popup (e.g. hovering over a Java type reference in an Xtend2 editor). Instead an "Unhandled event loop exception" will be logged to the error log:

java.lang.NullPointerException
	at org.eclipse.xtext.resource.EObjectAtOffsetHelper.internalResolveElementAt(EObjectAtOffsetHelper.java:39)
	at org.eclipse.xtext.resource.EObjectAtOffsetHelper.resolveCrossReferencedElementAt(EObjectAtOffsetHelper.java:35)
	at org.eclipse.xtext.xbase.jvmmodel.JvmEObjectAtOffsetHelper.resolveCrossReferencedElementAt(JvmEObjectAtOffsetHelper.java:26)
	at org.eclipse.xtext.xtend2.resource.XtendEObjectAtOffsetHelper.resolveCrossReferencedElementAt(XtendEObjectAtOffsetHelper.java:29)
	at org.eclipse.xtext.ui.editor.hover.AbstractEObjectHover.getXtextElementAt(AbstractEObjectHover.java:91)
	at org.eclipse.xtext.ui.editor.hover.AbstractEObjectHover$1.exec(AbstractEObjectHover.java:51)
	at org.eclipse.xtext.ui.editor.hover.AbstractEObjectHover$1.exec(AbstractEObjectHover.java:1)
	at org.eclipse.xtext.util.concurrent.AbstractReadWriteAcces.readOnly(AbstractReadWriteAcces.java:32)
	at org.eclipse.xtext.ui.editor.model.XtextDocument.readOnly(XtextDocument.java:86)
	at org.eclipse.xtext.ui.editor.hover.AbstractEObjectHover.getHoverRegion(AbstractEObjectHover.java:49)
	at org.eclipse.xtext.ui.editor.hover.AbstractCompositeHover.getHoverRegion(AbstractCompositeHover.java:62)
	at org.eclipse.jface.text.TextViewerHoverManager.computeInformation(TextViewerHoverManager.java:140)
	at org.eclipse.jface.text.AbstractInformationControlManager.doShowInformation(AbstractInformationControlManager.java:1120)
	at org.eclipse.jface.text.AbstractHoverInformationControlManager$MouseTracker.mouseHover(AbstractHoverInformationControlManager.java:519)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:195)
	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.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)

It appears like the reason is that the XtextDocument doesn't have an XtextResource, just its contents, as that's how the document is created in StreamContentDocumentProvider#createDocument().

Shouldn't we instead load the XtextResource with the content and set that using XtextDocument#setInput()?
Comment 1 Michael Clay CLA 2011-05-05 17:19:23 EDT
Created attachment 194887 [details]
proposed patch pls verify & test
Comment 2 Sven Efftinge CLA 2011-05-12 05:22:10 EDT
please apply and push
Comment 3 Sebastian Zarnekow CLA 2011-05-13 11:08:27 EDT
Pushed to master.
Comment 4 Karsten Thoms CLA 2017-09-19 17:45:17 EDT
Closing all bugs that were set to RESOLVED before Neon.0
Comment 5 Karsten Thoms CLA 2017-09-19 17:56:24 EDT
Closing all bugs that were set to RESOLVED before Neon.0