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

Reply via email to