Bug 322300

Summary: Refactor->rename file causes NullPointerException
Product: [Eclipse Project] JDT Reporter: DougHW <dougw>
Component: CoreAssignee: Olivier Thomann <Olivier_Thomann>
Status: VERIFIED WORKSFORME QA Contact:
Severity: normal    
Priority: P3 CC: amj87.iitr, Olivier_Thomann, srikanth_sankaran
Version: 3.6   
Target Milestone: 3.7 M3   
Hardware: Macintosh   
OS: Mac OS X - Carbon (unsup.)   
Whiteboard:

Description DougHW CLA 2010-08-10 19:35:57 EDT
Build Identifier: 20090619-0625

If source files have changed on the disk, trying to refactor->rename a file will crash if it has dependencies in those changed files.  This is not an uncommon scenario in team coding.  Instead of this, it should either prompt to refresh, or throw a meaningful error.

Reproducible: Always

Steps to Reproduce:
1.Delete a class that references some other class in your project
2.Do not refresh Eclipse
3.Try to Refactor->Rename the referenced class in Eclipse
4.Internal Error

java.lang.reflect.InvocationTargetException
	at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:91)
	at org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:121)
Caused by: Java Model Exception: Core Exception [code 271] File not found: /Users/doug/workspace/android/trunk/Zoosk/src/com/zoosk/zoosk/services/image/ImageClient.java.
	at org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1165)
	at org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1137)
	at org.eclipse.jdt.internal.core.CompilationUnit.openBuffer(CompilationUnit.java:1152)
	at org.eclipse.jdt.internal.core.CompilationUnit.buildStructure(CompilationUnit.java:116)
	at org.eclipse.jdt.internal.core.Openable.generateInfos(Openable.java:258)
	at org.eclipse.jdt.internal.core.JavaElement.openWhenClosed(JavaElement.java:515)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:252)
	at org.eclipse.jdt.internal.core.JavaElement.getElementInfo(JavaElement.java:238)
	at org.eclipse.jdt.internal.core.Openable.getBuffer(Openable.java:284)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RefactoringScanner.scan(RefactoringScanner.java:69)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addCuTextMatches(TextMatchUpdater.java:158)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addTextMatches(TextMatchUpdater.java:135)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addTextMatches(TextMatchUpdater.java:145)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addTextMatches(TextMatchUpdater.java:145)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addTextMatches(TextMatchUpdater.java:145)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addTextMatches(TextMatchUpdater.java:145)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addTextMatches(TextMatchUpdater.java:145)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addTextMatches(TextMatchUpdater.java:145)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.addTextMatches(TextMatchUpdater.java:145)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.updateTextMatches(TextMatchUpdater.java:101)
	at org.eclipse.jdt.internal.corext.refactoring.rename.TextMatchUpdater.perform(TextMatchUpdater.java:89)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeProcessor.createChanges(RenameTypeProcessor.java:1109)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameTypeProcessor.doCheckFinalConditions(RenameTypeProcessor.java:544)
	at org.eclipse.jdt.internal.corext.refactoring.rename.JavaRenameProcessor.checkFinalConditions(JavaRenameProcessor.java:46)
	at org.eclipse.jdt.internal.corext.refactoring.rename.RenameCompilationUnitProcessor.doCheckFinalConditions(RenameCompilationUnitProcessor.java:324)
	at org.eclipse.jdt.internal.corext.refactoring.rename.JavaRenameProcessor.checkFinalConditions(JavaRenameProcessor.java:46)
	at org.eclipse.ltk.core.refactoring.participants.ProcessorBasedRefactoring.checkFinalConditions(ProcessorBasedRefactoring.java:224)
	at org.eclipse.ltk.core.refactoring.CheckConditionsOperation.run(CheckConditionsOperation.java:85)
	at org.eclipse.ltk.core.refactoring.CreateChangeOperation.run(CreateChangeOperation.java:121)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1800)
	at org.eclipse.ltk.internal.ui.refactoring.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:87)
	... 1 more
Caused by: org.eclipse.core.runtime.CoreException: File not found: /Users/doug/workspace/android/trunk/Zoosk/src/com/zoosk/zoosk/services/image/ImageClient.java.
	at org.eclipse.core.internal.filesystem.Policy.error(Policy.java:55)
	at org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:366)
	at org.eclipse.core.internal.localstore.FileSystemResourceManager.read(FileSystemResourceManager.java:667)
	at org.eclipse.core.internal.resources.File.getContents(File.java:288)
	at org.eclipse.jdt.internal.core.util.Util.getResourceContentsAsCharArray(Util.java:1163)
	... 31 more
Caused by: java.io.FileNotFoundException: /Users/doug/workspace/android/trunk/Zoosk/src/com/zoosk/zoosk/services/image/ImageClient.java (No such file or directory)
	at java.io.FileInputStream.open(Native Method)
	at java.io.FileInputStream.<init>(FileInputStream.java:106)
	at org.eclipse.core.internal.filesystem.local.LocalFile.openInputStream(LocalFile.java:357)
	... 34 more
Comment 1 Srikanth Sankaran CLA 2010-08-10 22:17:39 EDT
Could you attach the .log ? If don't see any 
reference to NullPointerException in the
abbreviated traces you have posted - TIA.
Comment 2 Olivier Thomann CLA 2010-09-19 20:40:12 EDT
Closing as WORKSFORME.
Comment 3 Ayushman Jain CLA 2010-10-26 06:01:44 EDT
Verified for 3.7M3