I opened https://bugs.eclipse.org/bugs/show_bug.cgi?id=218937

In the meantime if you can supply the data I requested earlier I think we
may be able to work around this.

Kelvin.

On 14/02/2008, kelvin goodson <[EMAIL PROTECTED]> wrote:
>
>
> Daniel,
>   I'll check up on your last question,  but I don't think multiple
> registration of factories is the root of your issue.  I am just submitting
> an EMF bug report to cover the issue,  and I'll put you on the cc list.  I'd
> be interested to know more about what your metadata looks like,  and what
> the value of rootElementUri and rootElementName are in the above snippet,
> and do they vary?  Are you in a position to post the schema that you use to
> generate the static SDO classes?
>
> Regards, Kelvin.
>
> On 14/02/2008, Daniel Peter <[EMAIL PROTECTED]> wrote:
> >
> > Hi Kelvin
> >
> > Yes, I finally call the XMLHelper.save method, whereas
> > the exception occurs during the createDocument method
> > call:
> >
> > HelperContext hc = HelperProvider.getDefaultContext();
> > XMLDocument xmldoc =
> > hc.getXMLHelper().createDocument(dataObject,
> > rootElementURI, rootElementName);
> > ....
> > hc.getXMLHelper().save(xmldoc, os, options);
> >
> > The register method of the corresponding factory has
> > been invoked before the code sequence above is called
> > for a given dataObject.
> > But my code currently does not avoid that the register
> > method of the same factory is invoked again while the
> > sequence above is executed concurrently.
> > If this is the cause of the problem, I will enforce
> > that the registration is done at most once and
> > synchronized.
> > When it comes to multiple factories: would it be a
> > problem if the register method of another factory
> > (same scope) is called at a later point in time, while
> > the metadata of the first factory is accessed
> > concurrently?
> >
> > Regards, Daniel.
> >
> > --- kelvin goodson <[EMAIL PROTECTED]>
> > schrieb:
> >
> >
> > > Daniel,
> > >   yes, this looks like a concurrency issue to me.
> > > The null pointer
> > > exception is occurring because the demand create
> > > metadata package doesn't
> > > have a document root.  Here's the EMF code that
> > > creates a demand created
> > > package in EMF 2.2.3  ...
> > >
> > >     EPackage ePackage =
> > > demandRegistry.getEPackage(namespace);
> > >     if (ePackage == null)
> > >     {
> > >       ePackage =
> > > EcoreFactory.eINSTANCE.createEPackage();
> > >       ePackage.setNsURI(namespace);
> > >       setQualified(ePackage, namespace != null);
> > >       if (namespace != null)
> > >       {
> > >         ePackage.setNsPrefix
> > >
> > > (namespace.equals(ExtendedMetaData.XMLNS_URI) ?
> > >
> > > namespace.equals(ExtendedMetaData.XML_URI) ?
> > >                "xml" :
> > >                "xmlns" :
> > >              computePrefix(namespace));
> > >       }
> > >       demandRegistry.put(namespace, ePackage);
> > >
> > >       // demandDocumentRoot(ePackage);
> > >
> > >       EClass documentRootEClass =
> > > EcoreFactory.eINSTANCE.createEClass();
> > >       documentRootEClass.getESuperTypes().add(
> > > XMLTypePackage.eINSTANCE.getXMLTypeDocumentRoot());
> > >       documentRootEClass.setName("DocumentRoot");
> > >
> > > ePackage.getEClassifiers().add(documentRootEClass);
> > >       setDocumentRoot(documentRootEClass);
> > >     }
> > >
> > > note that the new package is put into the demand
> > > registry before the
> > > document root class for that package is created.
> > > Hence there's an
> > > opportunity for another thread to get hold of the
> > > demand created package
> > > before it has a document root class.
> > >
> > > One thing you may be able to do is to avoid demand
> > > creating metadata by
> > > explicitly creating that metadata in the first
> > > place. Maybe you could
> > > describe what is happening from your application
> > > logic point of view. I
> > > could take a guess that you are doing an
> > > XMLHelper.save with string
> > > arguments that give a namespace uri and an element
> > > name for the root element
> > > of the XML document, and these two data don't relate
> > > to existing metadata.
> > > If this is a single pairing of ns/uri and element
> > > name,  or a small known
> > > set,  then preparing static metadata for the global
> > > elements would avoid
> > > this issue.
> > >
> > > I haven't yet looked to see if this has been raised
> > > as an EMF issue,  or
> > > fixed in a later version of EMF.  I'll take a look
> > > later.
> > >
> > > Kelvin.
> >
> >
> >
> >       Lesen Sie Ihre E-Mails jetzt einfach von unterwegs.
> > www.yahoo.de/go
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>

Reply via email to