Community
Participate
Working Groups
This bug shows up consistently when using the eMF code generator (both 1.x and 2.0), in Eclipse (both 2.x and 3.0), preventing the code generator from completing. It appears to be caused by JDOM not working properly with initializers in anonymous classes. The eMF scenario in which it occurs is when regenerating an eMF model from annotated Java. Ed Merks from IBM's eMF development (merks@ca.ibm.com) was able to narrow down the problem to this small example: package org.example; public interface Sample { Object x = new Object() { { System.err.println("**"); } }; } I get the following exception and stack trace: >>> org.eclipse.jdt.core.jdom.DOMException: Attempt to add child to node that cannot have children >>> at org.eclipse.jdt.internal.core.jdom.DOMNode.basicAddChild (DOMNode.java:344) >>> at org.eclipse.jdt.internal.core.jdom.AbstractDOMBuilder.addChild (AbstractDOMBuilder.java:129) >>> at org.eclipse.jdt.internal.core.jdom.DOMBuilder.addChild (DOMBuilder.java:139) >>> at org.eclipse.jdt.internal.core.jdom.DOMBuilder.acceptInitializer (DOMBuilder.java:99) >>> at org.eclipse.jdt.internal.compiler.DocumentElementParser.consumeClassBodyDeclara tion(DocumentElementParser.java:131) >>> at org.eclipse.jdt.internal.compiler.parser.Parser.consumeRule (Parser.java:2695) >>> at org.eclipse.jdt.internal.compiler.parser.Parser.parse (Parser.java:5370) >>> at org.eclipse.jdt.internal.compiler.DocumentElementParser.parseType (DocumentElementParser.java:1204) >>> at org.eclipse.jdt.internal.core.jdom.DOMBuilder.createType (DOMBuilder.java:266) >>> at org.eclipse.jdt.core.jdom.DOMFactory.createType(DOMFactory.java:157) >>> at org.eclipse.jdt.internal.core.jdom.DOMType.getDetailedNode (DOMType.java:389) >>> at org.eclipse.jdt.internal.core.jdom.DOMNode.becomeDetailed (DOMNode.java:390) >>> at org.eclipse.jdt.internal.core.jdom.DOMMember.getComment (DOMMember.java:218) >>> at org.eclipse.emf.codegen.ecore.java2ecore.JavaEcoreBuilder.analyzeType (JavaEcoreBuilder.java:739) >>> at org.eclipse.emf.codegen.ecore.java2ecore.JavaEcoreBuilder.analyzeCompilationUni t(JavaEcoreBuilder.java:719) >>> at org.eclipse.emf.codegen.ecore.java2ecore.JavaEcoreBuilder.traverse (JavaEcoreBuilder.java:701) >>> at org.eclipse.emf.codegen.ecore.java2ecore.JavaEcoreBuilder.traverse (JavaEcoreBuilder.java:677) >>> at org.eclipse.emf.codegen.ecore.java2ecore.JavaEcoreBuilder.traverse (JavaEcoreBuilder.java:681) >>> at org.eclipse.emf.codegen.ecore.java2ecore.JavaEcoreBuilder.traverse (JavaEcoreBuilder.java:681) >>> at org.eclipse.emf.codegen.ecore.java2ecore.JavaEcoreBuilder.run (JavaEcoreBuilder.java:269) >>> at org.eclipse.emf.codegen.ecore.genmodel.presentation.EMFProjectWizard$40.execute (EMFProjectWizard.java:2693) >>> at org.eclipse.ui.actions.WorkspaceModifyOperation$1.run (WorkspaceModifyOperation.java:91) >>> at org.eclipse.core.internal.resources.Workspace.run (Workspace.java:1673) >>> at org.eclipse.ui.actions.WorkspaceModifyOperation.run (WorkspaceModifyOperation.java:105) >>> at org.eclipse.jface.operation.ModalContext.runInCurrentThread (ModalContext.java:303) >>> at org.eclipse.jface.operation.ModalContext.run(ModalContext.java:253) >>> at org.eclipse.jface.wizard.WizardDialog.run(WizardDialog.java:752) >>> at org.eclipse.emf.codegen.ecore.genmodel.presentation.EMFProjectWizard$PackagePag e.refreshPackagesTable(EMFProjectWizard.java:2735) >>> at org.eclipse.emf.codegen.ecore.genmodel.presentation.EMFProjectWizard$PackagePag e.setVisible(EMFProjectWizard.java:2138) >>> at org.eclipse.jface.wizard.WizardDialog.updateForPage (WizardDialog.java:937) >>> at org.eclipse.jface.wizard.WizardDialog.access$2 (WizardDialog.java:920) >>> at org.eclipse.jface.wizard.WizardDialog$4.run(WizardDialog.java:911) >>> at org.eclipse.swt.custom.BusyIndicator.showWhile (BusyIndicator.java:69) >>> at org.eclipse.jface.wizard.WizardDialog.showPage (WizardDialog.java:909) >>> at org.eclipse.jface.wizard.WizardDialog.nextPressed (WizardDialog.java:680) >>> at org.eclipse.jface.wizard.WizardDialog.buttonPressed (WizardDialog.java:300) >>> at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:506) >>> 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:796) >>> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2772) >>> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2431) >>> at org.eclipse.jface.window.Window.runEventLoop(Window.java:668) >>> at org.eclipse.jface.window.Window.open(Window.java:648) >>> at org.eclipse.emf.codegen.ecore.genmodel.presentation.GenModelActionBarContributo r$ReloadAction.run(GenModelActionBarContributor.java:165) >>> at org.eclipse.jface.action.Action.runWithEvent(Action.java:881) >>> at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection (ActionContributionItem.java:915) >>> at org.eclipse.jface.action.ActionContributionItem.access$2 (ActionContributionItem.java:866) >>> at org.eclipse.jface.action.ActionContributionItem$7.handleEvent (ActionContributionItem.java:785) >>> at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:82) >>> at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:796) >>> at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:2772) >>> at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:2431) >>> at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:1377) >>> at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:1348) >>> at org.eclipse.ui.internal.Workbench.createAndRunWorkbench (Workbench.java:254) >>> 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: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(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:183) >>> at org.eclipse.core.launcher.Main.run(Main.java:644) >>> at org.eclipse.core.launcher.Main.main(Main.java:628) >>> >
JDOM has been deprecated. Please use the DOM AST support and the AST rewrite support instead.