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

Bug 206523

Summary: [rename] Exception when doing Java refactoring
Product: [Eclipse Project] JDT Reporter: Daniel <dsegall>
Component: UIAssignee: JDT-UI-Inbox <jdt-ui-inbox>
Status: CLOSED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: daniel_megert, markus.kell.r, martinae
Version: 3.4   
Target Milestone: ---   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Daniel CLA 2007-10-16 16:08:23 EDT
Build ID: I20070621-1340

Steps To Reproduce:
I'm trying to rename a static variable, and I get the exception below.  The code is private and extremely complicated.

Refactoring does work for me on simpler cases, though.

More information:
!ENTRY org.eclipse.jdt.ui 4 10001 2007-10-16 15:59:50.515
!MESSAGE Internal Error
!STACK 0
java.lang.reflect.InvocationTargetException
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:350)
	at org.eclipse.jface.window.ApplicationWindow$1.run(ApplicationWindow.java:758)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.jface.window.ApplicationWindow.run(ApplicationWindow.java:755)
	at org.eclipse.ui.internal.WorkbenchWindow.run(WorkbenchWindow.java:2451)
	at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper.perform(RefactoringExecutionHelper.java:178)
	at org.eclipse.jdt.ui.refactoring.RenameSupport.perform(RenameSupport.java:196)
	at org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode.doRename(RenameLinkedMode.java:339)
	at org.eclipse.jdt.internal.ui.refactoring.reorg.RenameLinkedMode$EditorSynchronizer.left(RenameLinkedMode.java:113)
	at org.eclipse.jface.text.link.LinkedModeModel.exit(LinkedModeModel.java:339)
	at org.eclipse.jface.text.link.LinkedModeUI$4.run(LinkedModeUI.java:1190)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3659)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3296)
	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)
Caused by: org.eclipse.text.edits.MalformedTreeException: End position lies outside document range
	at org.eclipse.text.edits.TextEditProcessor.checkIntegrityDo(TextEditProcessor.java:170)
	at org.eclipse.text.edits.TextEdit.dispatchCheckIntegrity(TextEdit.java:740)
	at org.eclipse.text.edits.TextEditProcessor.performEdits(TextEditProcessor.java:149)
	at org.eclipse.ltk.core.refactoring.TextChange.getPreviewDocument(TextChange.java:507)
	at org.eclipse.ltk.core.refactoring.TextChange.getPreviewDocument(TextChange.java:376)
	at org.eclipse.ltk.core.refactoring.TextChange.getPreviewContent(TextChange.java:384)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameAnalyzeUtil.createNewWorkingCopy(RenameAnalyzeUtil.java:194)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameAnalyzeUtil.createNewWorkingCopies(RenameAnalyzeUtil.java:185)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor.analyzeRenameChanges(RenameFieldProcessor.java:802)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor.createChanges(RenameFieldProcessor.java:633)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor.doCheckFinalConditions(RenameFieldProcessor.java:448)
	at org.eclipse.jdt.internal.corext.refactoring.rename.JavaRenameProcessor.checkFinalConditions(JavaRenameProcessor.java:48)
	at org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring.checkFinalConditions(ProcessorBasedRefactoring.java:174)
	at org.eclipse.ltk.core.refactoring.Refactoring.checkAllConditions(Refactoring.java:160)
	at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper$Operation.run(RefactoringExecutionHelper.java:75)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:4466)
	at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
Root exception:
org.eclipse.text.edits.MalformedTreeException: End position lies outside document range
	at org.eclipse.text.edits.TextEditProcessor.checkIntegrityDo(TextEditProcessor.java:170)
	at org.eclipse.text.edits.TextEdit.dispatchCheckIntegrity(TextEdit.java:740)
	at org.eclipse.text.edits.TextEditProcessor.performEdits(TextEditProcessor.java:149)
	at org.eclipse.ltk.core.refactoring.TextChange.getPreviewDocument(TextChange.java:507)
	at org.eclipse.ltk.core.refactoring.TextChange.getPreviewDocument(TextChange.java:376)
	at org.eclipse.ltk.core.refactoring.TextChange.getPreviewContent(TextChange.java:384)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameAnalyzeUtil.createNewWorkingCopy(RenameAnalyzeUtil.java:194)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameAnalyzeUtil.createNewWorkingCopies(RenameAnalyzeUtil.java:185)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor.analyzeRenameChanges(RenameFieldProcessor.java:802)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor.createChanges(RenameFieldProcessor.java:633)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor.doCheckFinalConditions(RenameFieldProcessor.java:448)
	at org.eclipse.jdt.internal.corext.refactoring.rename.JavaRenameProcessor.checkFinalConditions(JavaRenameProcessor.java:48)
	at org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring.checkFinalConditions(ProcessorBasedRefactoring.java:174)
	at org.eclipse.ltk.core.refactoring.Refactoring.checkAllConditions(Refactoring.java:160)
	at org.eclipse.jdt.internal.ui.refactoring.RefactoringExecutionHelper$Operation.run(RefactoringExecutionHelper.java:75)
	at org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:39)
	at org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:720)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1797)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:4466)
	at org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:113)
Comment 1 Daniel CLA 2007-10-16 16:12:33 EDT
I got it to work by doing a refresh of my source tree from the root.

It would be nice if I would have gotten a dialog box explaining what happened and telling me to do a refresh instead of the refactoring operation failing silently and having to figure out what went wrong and how to fix it.
Comment 2 Martin Aeschlimann CLA 2007-10-17 05:35:48 EDT
I believe we already check that all elements are in sync, and you would get a warning. So the reason might have been another one.
Markus can you confirm?
Comment 3 Daniel CLA 2007-10-17 09:20:50 EDT
The reason was definitely that the elements were out of sync.  When the refactoring didn't work, I tried using text search/replace to do the refactoring instead, and that dialog did give me a warning that resources were out of sync.  That's how I knew to try the refresh.

The refactoring operation did NOT give me a warning that resources were out of sync.  I did not use the refactor dialog; just the in-place rename and press Enter.
Comment 4 Dani Megert CLA 2010-05-18 09:50:02 EDT

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