Bug 77879

Summary: [1.5] Creating an enum which inherits abstract methods from an interface results in InvocationTargetException
Product: [Eclipse Project] JDT Reporter: Erol Koç <erol_koc_OTI>
Component: CoreAssignee: Jerome Lanneluc <jerome_lanneluc>
Status: RESOLVED DUPLICATE QA Contact:
Severity: normal    
Priority: P3 CC: martinae
Version: 3.1   
Target Milestone: 3.1 M6   
Hardware: PC   
OS: Windows XP   
Whiteboard:
Bug Depends on: 77894    
Bug Blocks:    

Description Erol Koç CLA 2004-11-04 13:17:48 EST
Using N20041103

Trying to create an enum which implements abstract methods from an interface
brings up the following error:

"Creation of element failed. Attempt to add child of incompatible type"

With the following stack trace:

!ENTRY org.eclipse.jdt.ui 4 10001 2004-11-04 18:56:08.554
!MESSAGE Internal Error
!STACK 0
java.lang.reflect.InvocationTargetException
	at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:303)
	at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:824)
	at
org.eclipse.jdt.internal.ui.wizards.NewElementWizard.performFinish(NewElementWizard.java:115)
	at
org.eclipse.jdt.internal.ui.wizards.NewEnumCreationWizard.performFinish(NewEnumCreationWizard.java:63)
	at org.eclipse.jface.wizard.WizardDialog.finishPressed(WizardDialog.java:670)
	at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:342)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:543)
	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:800)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2794)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2448)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:707)
	at org.eclipse.jface.window.Window.open(Window.java:685)
	at
org.eclipse.jdt.internal.ui.wizards.AbstractOpenWizardAction.run(AbstractOpenWizardAction.java:159)
	at org.eclipse.jface.action.Action.runWithEvent(Action.java:988)
	at
org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:946)
	at
org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:896)
	at
org.eclipse.jface.action.ActionContributionItem$7.handleEvent(ActionContributionItem.java:810)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:800)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2794)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2448)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1443)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1414)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:271)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:144)
	at org.eclipse.ui.internal.ide.IDEApplication.run(IDEApplication.java:102)
	at
org.eclipse.core.internal.runtime.PlatformActivator$1.run(PlatformActivator.java:335)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:273)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:129)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
	at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
	at java.lang.reflect.Method.invoke(Method.java:585)
	at org.eclipse.core.launcher.Main.basicRun(Main.java:185)
	at org.eclipse.core.launcher.Main.run(Main.java:704)
	at org.eclipse.core.launcher.Main.main(Main.java:688)
Caused by: org.eclipse.jdt.core.jdom.DOMException: Attempt to add child of
incompatible type
	at org.eclipse.jdt.internal.core.jdom.DOMNode.basicAddChild(DOMNode.java:350)
	at org.eclipse.jdt.internal.core.jdom.DOMNode.addChild(DOMNode.java:262)
	at
org.eclipse.jdt.internal.core.CreateElementInCUOperation.insertDOMNode(CreateElementInCUOperation.java:282)
	at
org.eclipse.jdt.internal.core.CreateTypeMemberOperation.generateNewCompilationUnitDOM(CreateTypeMemberOperation.java:74)
	at
org.eclipse.jdt.internal.core.CreateElementInCUOperation.executeOperation(CreateElementInCUOperation.java:139)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1676)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744)
	at org.eclipse.jdt.internal.core.SourceType.createMethod(SourceType.java:139)
	at
org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createInheritedMethods(NewTypeWizardPage.java:1943)
	at
org.eclipse.jdt.ui.wizards.NewEnumWizardPage.createTypeMembers(NewEnumWizardPage.java:207)
	at
org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createType(NewTypeWizardPage.java:1574)
	at
org.eclipse.jdt.internal.ui.wizards.NewEnumCreationWizard.finishPage(NewEnumCreationWizard.java:55)
	at
org.eclipse.jdt.internal.ui.wizards.NewElementWizard$2.run(NewElementWizard.java:108)
	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:1676)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3536)
	at
org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:65)
	at
org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:105)
Root exception:
org.eclipse.jdt.core.jdom.DOMException: Attempt to add child of incompatible type
	at org.eclipse.jdt.internal.core.jdom.DOMNode.basicAddChild(DOMNode.java:350)
	at org.eclipse.jdt.internal.core.jdom.DOMNode.addChild(DOMNode.java:262)
	at
org.eclipse.jdt.internal.core.CreateElementInCUOperation.insertDOMNode(CreateElementInCUOperation.java:282)
	at
org.eclipse.jdt.internal.core.CreateTypeMemberOperation.generateNewCompilationUnitDOM(CreateTypeMemberOperation.java:74)
	at
org.eclipse.jdt.internal.core.CreateElementInCUOperation.executeOperation(CreateElementInCUOperation.java:139)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.run(JavaModelOperation.java:700)
	at org.eclipse.core.internal.resources.Workspace.run(Workspace.java:1676)
	at
org.eclipse.jdt.internal.core.JavaModelOperation.runOperation(JavaModelOperation.java:744)
	at org.eclipse.jdt.internal.core.SourceType.createMethod(SourceType.java:139)
	at
org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createInheritedMethods(NewTypeWizardPage.java:1943)
	at
org.eclipse.jdt.ui.wizards.NewEnumWizardPage.createTypeMembers(NewEnumWizardPage.java:207)
	at
org.eclipse.jdt.ui.wizards.NewTypeWizardPage.createType(NewTypeWizardPage.java:1574)
	at
org.eclipse.jdt.internal.ui.wizards.NewEnumCreationWizard.finishPage(NewEnumCreationWizard.java:55)
	at
org.eclipse.jdt.internal.ui.wizards.NewElementWizard$2.run(NewElementWizard.java:108)
	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:1676)
	at org.eclipse.jdt.core.JavaCore.run(JavaCore.java:3536)
	at
org.eclipse.jdt.internal.ui.actions.WorkbenchRunnableAdapter.run(WorkbenchRunnableAdapter.java:65)
	at
org.eclipse.jface.operation.ModalContext$ModalContextThread.run(ModalContext.java:105)
Comment 1 Olivier Thomann CLA 2004-11-04 14:46:49 EST
The workaround is to set the workspace compiler preference to be 1.5.
You can then add the implemented method. It doesn't handle the fact that the
method needs to be added after the enum constant. So it doesn't add the extra
semi-colon required.
I think this should be fixed by use DOM/AST inside the jdt/core operations.
Comment 2 Philipe Mulet CLA 2005-02-18 07:24:30 EST
Is it ok now?
Comment 3 Jerome Lanneluc CLA 2005-02-23 06:45:38 EST

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