Bug 47815 - Refactoring doesn't work with some project names [refactoring]
Summary: Refactoring doesn't work with some project names [refactoring]
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 with 1 vote (vote)
Target Milestone: 3.0 M9   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 54439 55480 57021 58633 (view as bug list)
Depends on:
Blocks:
 
Reported: 2003-12-01 10:53 EST by Thorsten Schäfer CLA
Modified: 2004-05-18 10:54 EDT (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Thorsten Schäfer CLA 2003-12-01 10:53:43 EST
Some, maybe all refactorings (e.g. move class) don't work with some project 
names. For example a project name like "Test (AB)" causes the following stack 
trace, if I try to move a class:

java.lang.NullPointerException
at 
org.eclipse.jdt.internal.corext.refactoring.changes.MoveCompilationUnitChange.g
etName(MoveCompilationUnitChange.java:40)
at org.eclipse.jdt.internal.ui.refactoring.ChangeElementLabelProvider.getText
(ChangeElementLabelProvider.java:77)
at org.eclipse.jface.viewers.TreeViewer.doUpdateItem(TreeViewer.java:95)
at org.eclipse.jdt.internal.ui.refactoring.ChangeElementTreeViewer.doUpdateItem
(ChangeElementTreeViewer.java:56)
at org.eclipse.jface.viewers.AbstractTreeViewer$UpdateItemSafeRunnable.run
(AbstractTreeViewer.java:77)
at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:1018)
at org.eclipse.core.runtime.Platform.run(Platform.java:461)
at org.eclipse.jface.viewers.AbstractTreeViewer.doUpdateItem
(AbstractTreeViewer.java:457)
at org.eclipse.jface.viewers.StructuredViewer$UpdateItemSafeRunnable.run
(StructuredViewer.java:119)
at org.eclipse.core.internal.runtime.InternalPlatform.run
(InternalPlatform.java:1018)
at org.eclipse.core.runtime.Platform.run(Platform.java:461)
at org.eclipse.jface.viewers.StructuredViewer.updateItem
(StructuredViewer.java:1263)
at org.eclipse.jface.viewers.AbstractTreeViewer.createTreeItem
(AbstractTreeViewer.java:371)
at org.eclipse.jface.viewers.AbstractTreeViewer$1.run
(AbstractTreeViewer.java:351)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:84)
at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren
(AbstractTreeViewer.java:337)
at org.eclipse.jface.viewers.AbstractTreeViewer$5.run
(AbstractTreeViewer.java:795)
at org.eclipse.jface.viewers.StructuredViewer.preservingSelection
(StructuredViewer.java:796)
at org.eclipse.jface.viewers.CheckboxTreeViewer.preservingSelection
(CheckboxTreeViewer.java:341)
at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged
(AbstractTreeViewer.java:785)
at org.eclipse.jdt.internal.ui.refactoring.ChangeElementTreeViewer.inputChanged
(ChangeElementTreeViewer.java:50)
at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:238)
at org.eclipse.jface.viewers.StructuredViewer.setInput
(StructuredViewer.java:983)
at org.eclipse.jdt.internal.ui.refactoring.PreviewWizardPage.setTreeViewerInput
(PreviewWizardPage.java:308)
at 
org.eclipse.jdt.internal.ui.refactoring.PreviewWizardPage.createStandardPreview
Page(PreviewWizardPage.java:233)
at org.eclipse.jdt.internal.ui.refactoring.PreviewWizardPage.createControl
(PreviewWizardPage.java:205)
at 
org.eclipse.jdt.internal.ui.refactoring.RefactoringWizardDialog2.previewPressed
(RefactoringWizardDialog2.java:431)
at org.eclipse.jdt.internal.ui.refactoring.RefactoringWizardDialog2.access$3
(RefactoringWizardDialog2.java:416)
at org.eclipse.jdt.internal.ui.refactoring.RefactoringWizardDialog2
$1.widgetSelected(RefactoringWizardDialog2.java:547)
at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:89)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2173)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1863)
at org.eclipse.jface.window.Window.runEventLoop(Window.java:583)
at org.eclipse.jface.window.Window.open(Window.java:563)
at org.eclipse.jdt.internal.ui.refactoring.actions.RefactoringStarter.activate
(RefactoringStarter.java:56)
at org.eclipse.jdt.internal.ui.refactoring.reorg.ReorgMoveStarter.run
(ReorgMoveStarter.java:82)
at 
org.eclipse.jdt.internal.ui.packageview.SelectionTransferDropAdapter.handleDrop
Move(SelectionTransferDropAdapter.java:207)
at org.eclipse.jdt.internal.ui.packageview.SelectionTransferDropAdapter.drop
(SelectionTransferDropAdapter.java:131)
at org.eclipse.jdt.internal.ui.dnd.JdtViewerDropAdapter.drop
(JdtViewerDropAdapter.java:112)
at org.eclipse.jdt.internal.ui.dnd.DelegatingDropAdapter.drop
(DelegatingDropAdapter.java:79)
at org.eclipse.swt.dnd.DNDListener.handleEvent(DNDListener.java:65)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:871)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:856)
at org.eclipse.swt.widgets.Widget.notifyListeners(Widget.java:664)
at org.eclipse.swt.dnd.DropTarget.notifyListeners(DropTarget.java:507)
at org.eclipse.swt.dnd.DropTarget.Drop(DropTarget.java:428)
at org.eclipse.swt.dnd.DropTarget.access$7(DropTarget.java:363)
at org.eclipse.swt.dnd.DropTarget$3.method6(DropTarget.java:232)
at org.eclipse.swt.internal.ole.win32.COMObject.callback6(COMObject.java:115)
at org.eclipse.swt.internal.ole.win32.COM.DoDragDrop(Native Method)
at org.eclipse.swt.dnd.DragSource.drag(DragSource.java:277)
at org.eclipse.swt.dnd.DragSource.access$0(DragSource.java:263)
at org.eclipse.swt.dnd.DragSource$1.handleEvent(DragSource.java:157)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:847)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2173)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:1863)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2347)
at org.eclipse.ui.internal.Workbench.run(Workbench.java:2330)
at org.eclipse.core.internal.boot.InternalBootLoader.run
(InternalBootLoader.java:858)
at org.eclipse.core.boot.BootLoader.run(BootLoader.java:461)
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.core.launcher.Main.basicRun(Main.java:299)
at org.eclipse.core.launcher.Main.run(Main.java:765)
at org.eclipse.core.launcher.Main.main(Main.java:599)
Comment 1 Dirk Baeumer CLA 2003-12-01 12:59:26 EST
Markus, can you please investigate for M7.
Comment 2 Markus Keller CLA 2004-02-09 07:04:26 EST
The problem is that JavaCore.create(handle) fails if the project name contains a
"(". Moving to jdt-core to resolve problems with "dangerous" characters in
project names.
Comment 3 Jerome Lanneluc CLA 2004-02-09 09:52:49 EST
Markus, which JavaCore.create(...) API are you refering to?
Comment 4 Markus Keller CLA 2004-02-09 13:49:45 EST
Oh sorry, I didn't realize that the create methods are overloaded :-/
I wanted to refer to JavaCore.create(String handleIdentifier).

If you set a berakpint in it and then move a CU p/A.java to package qqq, you'll
see what I meant.
Comment 5 Jerome Lanneluc CLA 2004-02-10 07:12:02 EST
Thanks. I will investigate.
Comment 6 Marko Schulz CLA 2004-04-16 01:53:33 EDT
I have the same problem with a tilde (~) in the project name.

To verify:
- Create a new java project with the name "A~B"
- Select the project in the Package Explorer
- Press Ctrl-C, Ctrl-V (on Windows) to create a copy of the project 
Result:
Error dialog "The command for the key you pressed failed"
Truncated stack trace from the error log:

---------------------------------------------------------------------
java.lang.NullPointerException
	at
org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgUtils.getResource(ReorgUtils.java:116)
	at
org.eclipse.jdt.internal.corext.refactoring.reorg.ReorgUtils.getResources(ReorgUtils.java:122)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction$ProjectPaster.getProjectsToPaste(PasteAction.java:285)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction$ProjectPaster.pasteProjects(PasteAction.java:269)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction$ProjectPaster.paste(PasteAction.java:265)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.PasteAction.run(PasteAction.java:191)
	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)
        :
---------------------------------------------------------------------


Optional: Specify an external location _without_ a tilde in it. This doesn't
make a difference for the error. This shows that the error is _not_ because of
problems with directory names or other filesystem problems.
Comment 7 Markus Keller CLA 2004-04-16 02:53:40 EDT
Yes, the problem in the format of JavaElement handleIdentifier strings. They
should escape all characters in the elementName which are used as separators in
the memento.
Comment 8 Erich Gamma CLA 2004-04-16 08:47:19 EDT
*** Bug 55480 has been marked as a duplicate of this bug. ***
Comment 9 Philipe Mulet CLA 2004-04-16 09:24:09 EDT
*** Bug 58633 has been marked as a duplicate of this bug. ***
Comment 10 Nikolay Metchev CLA 2004-04-16 09:25:42 EDT
could somebody increase the severity of this bug? I think it should be "major".
Comment 11 Daniel Lindner CLA 2004-04-19 09:30:34 EDT
*** Bug 54439 has been marked as a duplicate of this bug. ***
Comment 12 Jerome Lanneluc CLA 2004-04-19 13:18:58 EDT
Changed JavaElement.getHandleMemento() and getHandleFromMemento(...) so that 
they escape the delimiters in the memento.

Added regression test MementoTests.testProjectMemento2()
Comment 13 Daniel Lindner CLA 2004-04-19 15:14:44 EDT
Good job, thanks. I will download it tomorrow.
Thanks to Dirk Baeumer, too.
Comment 14 Dirk Baeumer CLA 2004-04-20 13:41:29 EDT
*** Bug 57021 has been marked as a duplicate of this bug. ***
Comment 15 Frederic Fusier CLA 2004-05-18 10:54:24 EDT
Verified for 3.0 with build I200405180816.