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

Bug 198830

Summary: [Viewers] NPE when merging files (compare.structuremergeviewer)
Product: [Eclipse Project] Platform Reporter: Neale Upstone <neale>
Component: CompareAssignee: Platform-Compare-Inbox <platform-compare-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: critical    
Priority: P3 CC: krzysztof.michalski, Michael.Valenta, Szymon.Brandys
Version: 3.3   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Neale Upstone CLA 2007-08-03 13:14:20 EDT
Build ID: I20070621-1340

Steps To Reproduce:
1. Compare 2 java files where the left pane has imports that do not occur in the right pane
2. Click in the imports in the left pane
3. Click on "Copy Current Change from Right to Left"
4. Click in the right hand pane (exception at this point)

From here on it, nothing saves, thus the merge editor is unusuable.

This seems to be happening consistently, so I'd expect that you could pick two arbitrary java files to try it on.

More information:
!ENTRY org.eclipse.ui 4 0 2007-08-03 17:58:35.296
!MESSAGE Unhandled event loop exception
!STACK 0
java.lang.NullPointerException
	at org.eclipse.jface.text.AbstractDocument.computeIndexInPositionList(AbstractDocument.java:472)
	at org.eclipse.jface.text.AbstractDocument.addPosition(AbstractDocument.java:356)
	at org.eclipse.compare.structuremergeviewer.DocumentRangeNode.setAppendPosition(DocumentRangeNode.java:207)
	at org.eclipse.jdt.internal.ui.compare.JavaParseTreeBuilder.push(JavaParseTreeBuilder.java:178)
	at org.eclipse.jdt.internal.ui.compare.JavaParseTreeBuilder.visit(JavaParseTreeBuilder.java:69)
	at org.eclipse.jdt.core.dom.TypeDeclaration.accept0(TypeDeclaration.java:466)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2476)
	at org.eclipse.jdt.core.dom.ASTNode.acceptChildren(ASTNode.java:2546)
	at org.eclipse.jdt.core.dom.CompilationUnit.accept0(CompilationUnit.java:213)
	at org.eclipse.jdt.core.dom.ASTNode.accept(ASTNode.java:2476)
	at org.eclipse.jdt.internal.ui.compare.JavaStructureCreator.createStructureComparator(JavaStructureCreator.java:294)
	at org.eclipse.jdt.internal.ui.compare.JavaStructureCreator.getStructure(JavaStructureCreator.java:243)
	at org.eclipse.compare.structuremergeviewer.StructureCreator.createStructure(StructureCreator.java:97)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$StructureInfo.createStructure(StructureDiffViewer.java:157)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$StructureInfo.refresh(StructureDiffViewer.java:135)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$StructureInfo.setInput(StructureDiffViewer.java:106)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer.compareInputChanged(StructureDiffViewer.java:349)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$2.run(StructureDiffViewer.java:73)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$6.run(StructureDiffViewer.java:324)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer.compareInputChanged(StructureDiffViewer.java:321)
	at org.eclipse.compare.structuremergeviewer.StructureDiffViewer$5.compareInputChanged(StructureDiffViewer.java:215)
	at org.eclipse.compare.structuremergeviewer.DiffNode.fireChange(DiffNode.java:138)
	at org.eclipse.compare.internal.ResourceCompareInput$MyDiffNode.fireChange(ResourceCompareInput.java:66)
	at org.eclipse.compare.internal.MergeViewerContentProvider.saveLeftContent(MergeViewerContentProvider.java:134)
	at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.flushContent(ContentMergeViewer.java:1151)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.flushContent(TextMergeViewer.java:5346)
	at org.eclipse.compare.contentmergeviewer.ContentMergeViewer.flush(ContentMergeViewer.java:1125)
	at org.eclipse.compare.CompareEditorInput.flushViewer(CompareEditorInput.java:1013)
	at org.eclipse.compare.CompareEditorInput.flushViewers(CompareEditorInput.java:1006)
	at org.eclipse.compare.internal.ResourceCompareInput.getAdapter(ResourceCompareInput.java:434)
	at org.eclipse.ui.ide.ResourceUtil.getFile(ResourceUtil.java:57)
	at org.eclipse.ui.internal.ide.actions.BuildUtilities.findSelectedProjects(BuildUtilities.java:87)
	at org.eclipse.ui.actions.BuildAction.isEnabled(BuildAction.java:204)
	at org.eclipse.ui.actions.RetargetAction.setActionHandler(RetargetAction.java:272)
	at org.eclipse.ui.internal.ide.actions.RetargetActionWithDefault.setActionHandler(RetargetActionWithDefault.java:47)
	at org.eclipse.ui.actions.RetargetAction.propagateChange(RetargetAction.java:210)
	at org.eclipse.ui.actions.RetargetAction$1.propertyChange(RetargetAction.java:60)
	at org.eclipse.ui.SubActionBars.firePropertyChange(SubActionBars.java:290)
	at org.eclipse.ui.SubActionBars.fireActionHandlersChanged(SubActionBars.java:272)
	at org.eclipse.ui.SubActionBars.updateActionBars(SubActionBars.java:599)
	at org.eclipse.compare.internal.CompareHandlerService.updateActionBars(CompareHandlerService.java:121)
	at org.eclipse.compare.internal.CompareHandlerService.updatePaneActionHandlers(CompareHandlerService.java:151)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.connectGlobalActions(TextMergeViewer.java:2414)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer.access$55(TextMergeViewer.java:2410)
	at org.eclipse.compare.contentmergeviewer.TextMergeViewer$23.focusLost(TextMergeViewer.java:2371)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:136)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:962)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:943)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:2352)
	at org.eclipse.swt.widgets.Widget.wmKillFocus(Widget.java:1681)
	at org.eclipse.swt.widgets.Control.WM_KILLFOCUS(Control.java:4000)
	at org.eclipse.swt.widgets.Canvas.WM_KILLFOCUS(Canvas.java:337)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3703)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:291)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4364)
	at org.eclipse.swt.internal.win32.OS.SetFocus(Native Method)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:963)
	at org.eclipse.swt.widgets.Control.setFocus(Control.java:2727)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:816)
	at org.eclipse.swt.widgets.Composite.WM_LBUTTONDOWN(Composite.java:1083)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:3705)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:291)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4351)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2264)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3291)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2389)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2353)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2219)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:466)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:461)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:106)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:153)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:363)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:176)
	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:504)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:443)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1169)
Comment 1 Michael Valenta CLA 2007-08-07 17:07:32 EDT
Neale, I am not able to reproduce the failure in the latest 3.4 builds or in the 3.3.0 build. However, we have made some related changes in both the 3.3.1 and 3.4 streams. Would it be possible for you to try the latest M-build to see if you still get the failure. If you do, would it be possible for you to provide a full test case (including file contents). I'm not suggesting you include the original file if it is proprietary but if you could provide an example file for which you see the error, that would help a lot.
Comment 2 Neale Upstone CLA 2007-08-07 17:32:31 EDT
Hi Michael,

That's at least encouraging that I might be a rare case.

I'll endeavour to test with later builds...  things are mad here at the moment, so if I forget, feel free to ping a comment on here to remind me.

Cheers,

Neale
Comment 3 Szymon Brandys CLA 2007-08-17 11:46:41 EDT
Hi Neale,
Did you try to reproduce the issue with the latest builds?
Comment 4 Krzysztof Michalski CLA 2007-08-23 07:38:43 EDT
It's duplicate of bug 190778.
Comment 5 Szymon Brandys CLA 2007-08-23 07:51:49 EDT

*** This bug has been marked as a duplicate of bug 190778 ***