Bug 77879 - [1.5] Creating an enum which inherits abstract methods from an interface results in InvocationTargetException
Summary: [1.5] Creating an enum which inherits abstract methods from an interface resu...
Status: RESOLVED DUPLICATE of bug 77894
Alias: None
Product: JDT
Classification: Eclipse Project
Component: Core (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.1 M6   Edit
Assignee: Jerome Lanneluc CLA
QA Contact:
URL:
Whiteboard:
Keywords:
Depends on: 77894
Blocks:
  Show dependency tree
 
Reported: 2004-11-04 13:17 EST by Erol Koç CLA
Modified: 2005-02-23 06:45 EST (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
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 ***