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

Bug 200781

Summary: NullPointerException on Save when comparing 2 Files
Product: [Eclipse Project] Platform Reporter: Hans Meier <eclipseBugs>
Component: CompareAssignee: Platform-Compare-Inbox <platform-compare-inbox>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: krzysztof.michalski, Szymon.Brandys
Version: 3.3   
Target Milestone: ---   
Hardware: PC   
OS: Linux   
Whiteboard:
Attachments:
Description Flags
the 2 files none

Description Hans Meier CLA 2007-08-22 05:18:00 EDT
Created attachment 76626 [details]
the 2 files

Build ID: I20070621-1340

Steps To Reproduce:
1. Select the 2 .java files and do "Compare With" -> "Each Other"
2. Copy all text from the second file(right) and overwrite with it the contents of the first file(left)
3. Click on the first file(left) and save it with CTRL+S


More information:
The error message is:

"Save" did not complete normally.  Please see the log for more information.
java.lang.NullPointerException

In the Log:

!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.visit(JavaParseTreeBuilder.java:134)
	at org.eclipse.jdt.core.dom.ImportDeclaration.accept0(ImportDeclaration.java:219)
	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:212)
	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:1101)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1125)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1106)
	at org.eclipse.swt.widgets.Control.sendFocusEvent(Control.java:3045)
	at org.eclipse.swt.widgets.Control.gtk_event_after(Control.java:2453)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1481)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4234)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3973)
	at org.eclipse.swt.internal.gtk.OS._gtk_widget_grab_focus(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_widget_grab_focus(OS.java:8871)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:1919)
	at org.eclipse.swt.widgets.Composite.forceFocus(Composite.java:476)
	at org.eclipse.swt.widgets.Control.forceFocus(Control.java:1913)
	at org.eclipse.swt.widgets.Control.setFocus(Control.java:3406)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:1168)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:1166)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:1166)
	at org.eclipse.swt.widgets.Composite.setFocus(Composite.java:1166)
	at org.eclipse.swt.widgets.Control.fixFocus(Control.java:132)
	at org.eclipse.swt.widgets.Control.setEnabled(Control.java:3386)
	at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:743)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2451)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:274)
	at org.eclipse.ui.internal.SaveableHelper.runProgressMonitorOperation(SaveableHelper.java:253)
	at org.eclipse.ui.internal.SaveableHelper.saveModels(SaveableHelper.java:196)
	at org.eclipse.ui.internal.SaveableHelper.savePart(SaveableHelper.java:136)
	at org.eclipse.ui.internal.EditorManager.savePart(EditorManager.java:1345)
	at org.eclipse.ui.internal.WorkbenchPage.savePart(WorkbenchPage.java:3184)
	at org.eclipse.ui.internal.WorkbenchPage.saveEditor(WorkbenchPage.java:3197)
	at org.eclipse.ui.internal.SaveAction.run(SaveAction.java:73)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
	at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)
	at org.eclipse.core.commands.Command.executeWithChecks(Command.java:475)
	at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:429)
	at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:165)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:470)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:821)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:879)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:568)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:510)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:126)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1423)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1100)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1125)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1110)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1137)
	at org.eclipse.swt.widgets.Widget.gtk_key_press_event(Widget.java:663)
	at org.eclipse.swt.widgets.Control.gtk_key_press_event(Control.java:2533)
	at org.eclipse.swt.widgets.Composite.gtk_key_press_event(Composite.java:679)
	at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1486)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4234)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:3973)
	at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method)
	at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:5593)
	at org.eclipse.swt.widgets.Display.eventProc(Display.java:1192)
	at org.eclipse.swt.internal.gtk.OS._g_main_context_iteration(Native Method)
	at org.eclipse.swt.internal.gtk.OS.g_main_context_iteration(OS.java:1487)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2969)
	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(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:504)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:443)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1169)

The second time I tried, I got this error message:

An internal error occurred during: "Update comparison Compare (ui-ui)".

And in the Log:
!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.visit(JavaParseTreeBuilder.java:134)
	at org.eclipse.jdt.core.dom.ImportDeclaration.accept0(ImportDeclaration.java:219)
	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:212)
	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$3.run(StructureDiffViewer.java:88)
	at org.eclipse.compare.internal.Worker.performNextTask(Worker.java:116)
	at org.eclipse.compare.internal.Worker.run(Worker.java:63)
	at org.eclipse.compare.internal.WorkerJob.run(WorkerJob.java:30)
	at org.eclipse.core.internal.jobs.Worker.run(Worker.java:55)
Comment 1 Hans Meier CLA 2007-08-22 05:23:40 EDT
My report was actually not accurate, this happens when you have placed the 2 files 2 separate projects in packages with the same name. Then you select the 2 packages and do "Compare With" -> "Each Other" on the packages. Doing it only on the 2 files doesn't produce an error.
Comment 2 Krzysztof Michalski CLA 2007-08-23 07:17:55 EDT
It's duplicate of bug 190778.
Comment 3 Szymon Brandys CLA 2007-08-23 07:52:58 EDT

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