Bug 67297 - Renaming included package folder throws JME
Summary: Renaming included package folder throws JME
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.0   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.0 RC3   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2004-06-15 12:50 EDT by Markus Keller CLA
Modified: 2004-06-18 12:34 EDT (History)
0 users

See Also:


Attachments
Proposed patch (1.48 KB, patch)
2004-06-18 07:54 EDT, Jerome Lanneluc CLA
no flags Details | Diff
Regression test (2.21 KB, patch)
2004-06-18 07:55 EDT, Jerome Lanneluc CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Markus Keller CLA 2004-06-15 12:50:53 EDT
200406111814

Renaming package fragment 'incl' to 'xyz' in this setup fails with a
JavaModelException in IPackageFragment#rename(..):

+ proj
  + src
    + incl
      + A.java

.classpath:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry including="incl/" kind="src" path="src"/>
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry kind="output" path="bin"/>
</classpath>

Note: Unfortunately, we currently swallow the stacktrace below (see bug 67289).

Error Jun 15, 2004 18:39:07.438 A.java [in xyz [in src [in proj7]]] does not exist
Java Model Exception: Java Model Status [A.java [in xyz [in src [in proj7]]]
does not exist]
	at java.lang.Throwable.<init>(Throwable.java)
	at java.lang.Throwable.<init>(Throwable.java)
	at org.eclipse.core.runtime.CoreException.<init>(CoreException.java:37)
	at org.eclipse.jdt.core.JavaModelException.<init>(JavaModelException.java:67)
	at
org.eclipse.jdt.internal.core.MultiOperation.processElements(MultiOperation.java:173)
	at
org.eclipse.jdt.internal.core.CopyResourceElementsOperation.processElements(CopyResourceElementsOperation.java:375)
	at
org.eclipse.jdt.internal.core.MultiOperation.executeOperation(MultiOperation.java:90)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1673)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744)
	at org.eclipse.jdt.internal.core.JavaModel.rename(JavaModel.java:304)
	at org.eclipse.jdt.internal.core.PackageFragment.rename(PackageFragment.java:394)
	at
org.eclipse.jdt.internal.corext.refactoring.changes.RenamePackageChange.doRename(RenamePackageChange.java:73)
	at
org.eclipse.jdt.internal.corext.refactoring.AbstractJavaElementRenameChange.perform(AbstractJavaElementRenameChange.java:67)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java)
	at
org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.access$0(DynamicValidationStateChange.java:1)
	at
org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange$1.run(DynamicValidationStateChange.java:76)
	at
org.eclipse.jdt.internal.core.BatchOperation.executeOperation(BatchOperation.java:34)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1673)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3246)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3203)
	at
org.eclipse.jdt.internal.corext.refactoring.changes.DynamicValidationStateChange.perform(DynamicValidationStateChange.java:79)
	at org.eclipse.ltk.core.refactoring.CompositeChange.perform(CompositeChange.java)
	at
org.eclipse.ltk.core.refactoring.PerformChangeOperation$1.run(PerformChangeOperation.java:222)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1673)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1693)
	at
org.eclipse.ltk.core.refactoring.PerformChangeOperation.executeChange(PerformChangeOperation.java:267)
	at
org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation.access$4(UIPerformChangeOperation.java:1)
	at
org.eclipse.ltk.internal.ui.refactoring.UIPerformChangeOperation$1.run(UIPerformChangeOperation.java:66)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java)
	at
org.eclipse.jface.operation.ModalContext$ModalContextThread.block(ModalContext.java)
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:262)
	at
org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.run(RefactoringWizardDialog2.java:282)
	at
org.eclipse.ltk.ui.refactoring.RefactoringWizard.internalPerformFinish(RefactoringWizard.java:533)
	at
org.eclipse.ltk.ui.refactoring.UserInputWizardPage.performFinish(UserInputWizardPage.java:153)
	at
org.eclipse.ltk.ui.refactoring.RefactoringWizard.performFinish(RefactoringWizard.java:599)
	at
org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.okPressed(RefactoringWizardDialog2.java:406)
	at org.eclipse.jface.dialogs.Dialog.buttonPressed(Dialog.java:365)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:506)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java)
	at org.eclipse.jface.window.Window.open(Window.java:648)
	at
org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:124)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java)
	at
org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:137)
	at
org.eclipse.jdt.internal.ui.refactoring.actions.RefactoringStarter.activate(RefactoringStarter.java:40)
	at
org.eclipse.jdt.internal.ui.refactoring.UserInterfaceStarter.activate(UserInterfaceStarter.java:54)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameUserInterfaceStarter.activate(RenameUserInterfaceStarter.java:113)
	at org.eclipse.jdt.ui.refactoring.RenameSupport.openDialog(RenameSupport.java:108)
	at
org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.run(RenameJavaElementAction.java:175)
	at
org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.run(RenameJavaElementAction.java:96)
	at org.eclipse.jdt.ui.actions.RenameAction.run(RenameAction.java:116)
	at
org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:212)
	at
org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:188)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:881)
	at org.eclipse.ui.actions.RetargetAction.runWithEvent(RetargetAction.java:212)
	at org.eclipse.ui.internal.WWinPluginAction.runWithEvent(WWinPluginAction.java:211)
	at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:141)
	at org.eclipse.ui.internal.commands.Command.execute(Command.java:132)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:469)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:887)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:928)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:546)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$2(WorkbenchKeyboard.java:494)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard$1.handleEvent(WorkbenchKeyboard.java:259)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java)
	at org.eclipse.swt.widgets.Control.traverse(Control.java:2709)
	at org.eclipse.swt.widgets.Control.translateMnemonic(Control.java:2550)
	at org.eclipse.swt.widgets.Composite.translateMnemonic(Composite.java:540)
	at org.eclipse.swt.widgets.Control.translateMnemonic(Control.java:2568)
	at org.eclipse.swt.widgets.Display.translateMnemonic(Display.java:3151)
	at org.eclipse.swt.widgets.Display.filterMessage(Display.java)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1362)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1333)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:252)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:141)
	at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:96)
	at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:334)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:272)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:128)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:84)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:59)
	at java.lang.reflect.Method.invoke(Method.java:390)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:185)
	at org.eclipse.core.launcher.Main.run(Main.java:638)
	at org.eclipse.core.launcher.Main.main(Main.java:622)
Comment 1 Frederic Fusier CLA 2004-06-18 07:07:19 EDT
This exception happens due to the fact that xyz is not in the classpath:
after renaming, 'xyz' does not belong to inclusion filter 'incl' and so A is no
longer reachable...

It works if you either remove the inclusion or add the new name in the inclusion
filter:
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
  <classpathentry including="incl/|xyz/" kind="src" path="src"/>
  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
  <classpathentry kind="output" path="bin"/>
</classpath>
Comment 2 Philipe Mulet CLA 2004-06-18 07:19:43 EDT
+1 for RC3 if change is small.
Comment 3 Dirk Baeumer CLA 2004-06-18 07:25:20 EDT
+1
Comment 4 Jerome Lanneluc CLA 2004-06-18 07:54:17 EDT
Created attachment 12465 [details]
Proposed patch

Changed CopyResourceelementsOperation#processPackageFragmentResource(...) to
skip the update of the package statement if the target compilation unit is
excluded.
Comment 5 Jerome Lanneluc CLA 2004-06-18 07:55:08 EDT
Created attachment 12466 [details]
Regression test

Added regression test InclusionPatternTests#testRenameIncludedPackage2()
Comment 6 Jerome Lanneluc CLA 2004-06-18 08:13:19 EDT
Reviewed by Philippe.
Comment 7 Jerome Lanneluc CLA 2004-06-18 08:14:04 EDT
Released patch and test.
Comment 8 David Audel CLA 2004-06-18 12:34:30 EDT
Verified for 3.0RC3 I200406180800