Bug 114086 - Refactor->Rename of instance variables fails with "-1" when Code Style->Fields prefix list has dangling ","
Summary: Refactor->Rename of instance variables fails with "-1" when Code Style->Field...
Status: VERIFIED FIXED
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1.1   Edit
Hardware: PC Windows XP
: P3 minor (vote)
Target Milestone: 3.2 M4   Edit
Assignee: David Audel CLA
QA Contact:
URL:
Whiteboard:
Keywords:
: 117982 167546 (view as bug list)
Depends on:
Blocks:
 
Reported: 2005-10-28 07:34 EDT by Mark Oppenheim CLA
Modified: 2006-12-13 11:07 EST (History)
2 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Oppenheim CLA 2005-10-28 07:34:53 EDT
Build: eclipse.buildId=M20050929-0840

In preferences I (accidentally) added a dangling comma to the list of prefixes
for  Fields.  From this point on I found that attempts to rename an instance
variable would fail with the uniformative reason "-1" and did not display dialog
asking for a new name.  The error log showed:

java.lang.ArrayIndexOutOfBoundsException: -1
	at
org.eclipse.jdt.core.NamingConventions.removePrefixAndSuffix(NamingConventions.java:245)
	at
org.eclipse.jdt.core.NamingConventions.removePrefixAndSuffixForFieldName(NamingConventions.java:364)
	at
org.eclipse.jdt.core.NamingConventions.suggestAccessorName(NamingConventions.java:894)
	at
org.eclipse.jdt.core.NamingConventions.suggestGetterName(NamingConventions.java:750)
	at
org.eclipse.jdt.core.NamingConventions.suggestGetterName(NamingConventions.java:789)
	at
org.eclipse.jdt.internal.corext.codemanipulation.GetterSetterUtil.getGetterName(GetterSetterUtil.java:50)
	at
org.eclipse.jdt.internal.corext.codemanipulation.GetterSetterUtil.getGetterName(GetterSetterUtil.java:46)
	at
org.eclipse.jdt.internal.corext.codemanipulation.GetterSetterUtil.getGetter(GetterSetterUtil.java:65)
	at
org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor.getGetter(RenameFieldProcessor.java:256)
	at
org.eclipse.jdt.internal.corext.refactoring.rename.RenameFieldProcessor.canEnableGetterRenaming(RenameFieldProcessor.java:208)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameFieldWizard$RenameFieldInputWizardPage.checkGetterRenamingEnablement(RenameFieldWizard.java:202)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameFieldWizard$RenameFieldInputWizardPage.access$3(RenameFieldWizard.java:198)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameFieldWizard$3.run(RenameFieldWizard.java:132)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameFieldWizard$RenameFieldInputWizardPage.getGetterSetterRenamingEnablement(RenameFieldWizard.java:130)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameFieldWizard$RenameFieldInputWizardPage.createControl(RenameFieldWizard.java:87)
	at
org.eclipse.ltk.internal.ui.refactoring.RefactoringWizardDialog2.createContents(RefactoringWizardDialog2.java:555)
	at org.eclipse.jface.window.Window.create(Window.java:418)
	at org.eclipse.jface.dialogs.Dialog.create(Dialog.java:996)
	at org.eclipse.jface.window.Window.open(Window.java:776)
	at
org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation$1.run(RefactoringWizardOpenOperation.java:125)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:69)
	at
org.eclipse.ltk.ui.refactoring.RefactoringWizardOpenOperation.run(RefactoringWizardOpenOperation.java:138)
	at
org.eclipse.jdt.internal.ui.refactoring.actions.RefactoringStarter.activate(RefactoringStarter.java:40)
	at
org.eclipse.jdt.internal.ui.refactoring.UserInterfaceStarter.activate(UserInterfaceStarter.java:56)
	at
org.eclipse.jdt.internal.ui.refactoring.reorg.RenameUserInterfaceStarter.activate(RenameUserInterfaceStarter.java:113)
	at org.eclipse.jdt.ui.refactoring.RenameSupport.openDialog(RenameSupport.java:114)
	at
org.eclipse.jdt.internal.corext.refactoring.RefactoringExecutionStarter.startRenameRefactoring(RefactoringExecutionStarter.java:327)
	at
org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.run(RenameJavaElementAction.java:171)
	at
org.eclipse.jdt.internal.ui.refactoring.actions.RenameJavaElementAction.run(RenameJavaElementAction.java:131)
	at org.eclipse.jdt.ui.actions.RenameAction.run(RenameAction.java:117)
	at
org.eclipse.jdt.ui.actions.SelectionDispatchAction.dispatchRun(SelectionDispatchAction.java:226)
	at
org.eclipse.jdt.ui.actions.SelectionDispatchAction.run(SelectionDispatchAction.java:198)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:996)
	at org.eclipse.ui.commands.ActionHandler.execute(ActionHandler.java:182)
	at
org.eclipse.ui.internal.handlers.LegacyHandlerWrapper.execute(LegacyHandlerWrapper.java:108)
	at org.eclipse.core.commands.Command.execute(Command.java:311)
	at
org.eclipse.core.commands.ParameterizedCommand.execute(ParameterizedCommand.java:396)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:459)
	at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:781)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:828)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:550)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:493)
	at
org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:117)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Display.filterEvent(Display.java:917)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:842)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:867)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:852)
	at org.eclipse.swt.widgets.Control.traverse(Control.java:2778)
	at org.eclipse.swt.widgets.Control.translateMnemonic(Control.java:2619)
	at org.eclipse.swt.widgets.Composite.translateMnemonic(Composite.java:827)
	at org.eclipse.swt.widgets.Control.translateMnemonic(Control.java:2637)
	at org.eclipse.swt.widgets.Display.translateMnemonic(Display.java:3514)
	at org.eclipse.swt.widgets.Display.filterMessage(Display.java:931)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2709)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1699)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1663)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:367)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:143)
	at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:103)
	at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:226)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:376)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:163)
	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.invokeFramework(Main.java:334)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:278)
	at org.eclipse.core.launcher.Main.run(Main.java:973)
	at org.eclipse.core.launcher.Main.main(Main.java:948)

Removing the dangling "," resolves the issue.
Comment 1 David Audel CLA 2005-11-04 11:08:57 EST
Fixed and test added
  NamingConventionTests#testRemovePrefixAndSuffixForFieldName004()

The bug can be reproduced in 3.1.1 but not with I20051102-0010 (3.2). The bug
isn't visible in 3.2 but still exist because some protections were added in JDT/UI.
I added protections in JDT/Core to ignore empty prefixes/suffixes.
Comment 2 Jerome Lanneluc CLA 2005-12-12 09:25:51 EST
Verified for 3.2 M4 using build I20051212-0010
Comment 3 Jerome Lanneluc CLA 2005-12-14 07:57:19 EST
*** Bug 117982 has been marked as a duplicate of this bug. ***
Comment 4 Olivier Thomann CLA 2006-12-13 11:07:45 EST
*** Bug 167546 has been marked as a duplicate of this bug. ***