I see TypeHelperImpl#defineOpenContentProperty creates(SDOUtil.createType)
DocumentRoot if not existed.
SDOUtil.createType creates DocumentRoot by DataObjectUtil.createDocumentRoot
().
DataObjectUtil.createDocumentRoot() has set XML name ("") while forgetting
eCore name ("DocumentRoot" normally).
It can be fixed by
documentRootEClass.setName("DocumentRoot");
On 2/1/07, kelvin goodson <[EMAIL PROTECTED]> wrote:
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.
--
Yang ZHONG