I'm currently trying to generate SDO classes exhibiting multiple inheritance to test that the generator is doing the right thing in the presence of such models. I can't describe these with an XSD, so I am building up the models with DataObjects, submitting them to TypeHelper.define() and then pinching code from the XSD2JavaGenerator to finish the job. However, there's a difference between the way TypeHelper.define and XSDHelper.define handle global elements, which is blocking me. XSDHelper puts its global elements by default in a type called "DocumentRoot" but TypeHelper uses the new open content property creation scheme and puts these properties in a type with a null value for its name. The EMF generator doesn't like this and falls over thus ...
Exception in thread "main" java.lang.NullPointerException at org.eclipse.emf.codegen.ecore.genmodel.impl.GenClassImpl.isEObject( GenClassImpl.java:831) at org.eclipse.emf.codegen.ecore.genmodel.impl.GenPackageImpl$SwitchHelper.initLocal (GenPackageImpl.java:2233) at org.eclipse.emf.codegen.ecore.genmodel.impl.GenPackageImpl$SwitchHelper .<init>(GenPackageImpl.java:2215) at org.eclipse.emf.codegen.ecore.genmodel.impl.GenPackageImpl.prepareCache( GenPackageImpl.java:2703) at org.eclipse.emf.codegen.ecore.genmodel.generator.GenPackageGeneratorAdapter.doPreGenerate (GenPackageGeneratorAdapter.java:136) at org.eclipse.emf.codegen.ecore.generator.AbstractGeneratorAdapter.preGenerate (AbstractGeneratorAdapter.java:157) at org.eclipse.emf.codegen.ecore.generator.Generator.generate( Generator.java:327) at org.eclipse.emf.codegen.ecore.generator.Generator.generate( Generator.java:296) at org.apache.tuscany.sdo.generate.JavaGenerator.generateFromGenModel( JavaGenerator.java:448) at org.apache.tuscany.sdo.generate.JavaGenerator.generatePackages( JavaGenerator.java:370) at org.apache.tuscany.sdo.generate.MemoryModel2JavaGenerator.generateFromTypeDesc (MemoryModel2JavaGenerator.java:133) at org.apache.tuscany.sdo.generate.MemoryModel2JavaGenerator.generateFromTypeList (MemoryModel2JavaGenerator.java:113) at org.apache.tuscany.sdo.test.GenMultipleInheritanceTestClasses.run( GenMultipleInheritanceTestClasses.java:31) at org.apache.tuscany.sdo.test.GenMultipleInheritanceTestClasses.main( GenMultipleInheritanceTestClasses.java:56) So I'm trying to figure out what my options are, and whether I need to seek a fix in EMF, or find a way round this in our implementation. Any thoughts? Regards, Kelvin.
