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.

Reply via email to