And that was not a consequense of the DocumentRoot issue?

-----Original Message-----
From: Yang ZHONG [mailto:[EMAIL PROTECTED] 
Sent: 14. februar 2007 22:00
To: tuscany-user@ws.apache.org
Subject: Re: SDO (Types) Registry

My previous email has mentioned two "TestElementXType", the old and the
new
one.
Do you want to check it out?

The new TestElementXType instance is *not* an instance of the old
TestElementXType,
just like a class instance is not an instance of a class loaded by
different
ClassLoader from the same .class file.


On 2/14/07, Christian Landbo Frederiksen <
[EMAIL PROTECTED]> wrote:
>
> Let me just follow up.
>
> When I don't create the DataObject using the property found on
> DocumentRoot
>
> I get an error doing this:
>
>        System.out.println(XMLHelper.INSTANCE.save(documentDataObject,
> namespace, "TestElementX"));
>
>
> java.lang.ClassCastException: The feature 'TestElementX's type
> 'TestElementXType' does not permit a value of type 'TestElementXType'
>        at
>
org.eclipse.emf.ecore.impl.EStructuralFeatureImpl$BasicFeatureMapEntry.v
> alidate(EStructuralFeatureImpl.java:2843)
>        at
>
org.eclipse.emf.ecore.util.FeatureMapUtil.createEntry(FeatureMapUtil.jav
> a:146)
>        at
>
org.eclipse.emf.ecore.util.BasicFeatureMap.createEntry(BasicFeatureMap.j
> ava:94)
>
> /Chr
>
> -----Original Message-----
> From: Christian Landbo Frederiksen
> [mailto:[EMAIL PROTECTED]
> Sent: 14. februar 2007 20:58
> To: tuscany-user@ws.apache.org
> Subject: RE: SDO (Types) Registry
>
>
> The way I read your answer here is that all my problems have been
solved
> with the changes done so far.
>
> I fact I did not know that I was trying to add or replace individual
> properties in a single type :)
>
> Total redefinition is fine for me.
>
> Now I see it is the way I handle DocumentRoot that is the problem and
> this is only due to that fact that I don't know how else to get the
> correct property.
>
> If I call DataFactory.INSTANCE.create(namespace, "TestElementXType") I
> actually get a dataobject but if I try to generate XML from it the
> element isn't called <TestElementX>. That was why I first found the
> TestElementX property from the DocumentRoot and the created DataObject
> from that.
>
> Is there a way to create a DataObject using
> DataFactory.INSTANCE.create(namespace, "TestElementXType") and then
> generate XML with property name <TestElementX> ?
>
> /Chr
>
> P.S Is 'Patch' that GNU thing for Linux or is there an eclipse plugin
or
> something?
>
>
>
> -----Original Message-----
> From: Frank Budinsky [mailto:[EMAIL PROTECTED]
> Sent: 14. februar 2007 20:26
> To: tuscany-user@ws.apache.org
> Subject: RE: SDO (Types) Registry
>
> Looking at your test program, I can see that what you're trying to do
is
>
> more than I thought, so it's going to be harder. Let me explain.
>
> In the FIRST part, you define a Type named "TestElementXType". Then in
> SECOND, you add a second Type: "TestElementYType", which should work
> with
> the "true" added to XSDHelper.define(), which allows it to proceed. In
> the
> THIRD part, you redefine Type "TestElementXType", which should work
with
>
> the addToSortedList() change. That's my theory, anyway :-)
>
> What isn't working, since we haven't done anything to support it, is
> incremental addition/modification of the properties in a Type. Right
> now,
> all we have is the ability to add new types or completely replace a
type
>
> with a new version (like you're doing for TestElementXType in part
> THREE).
> You can't add to or replace individual properties in a single type,
> which
> is what you're also trying to do with the global elements/properties
in
> the "DocumentRoot" Type.
>
> To test this theory, you could change the global element in the first
> schema to something like this:
>
>        <element name="RootElement" type="xsd:AnyType"/>
>
> and then delete the global elements in the second and third schemas.
>
> This way, you would define the "DocumentRoot" Type in the first call
to
> XSDHelper.define() and it would contain the property "RootElement". On
> the
> second and third calls to TypeHelper.define(), since you have no new
> global elements, it won't change/replace the "DocumentRoot", which is
> causing the problem.
>
> I think you should try to get this much working first, then we can
think
>
> about how to specially handle the DocumentRoot. Note that if we just
> change things to allow you to also add new properties or change
> properties
> in a Type, then it wouldn't be doing the right thing to
> "TestElementXType"
> in the THIRD part - you would have ended up with a "TestElementXType"
> that
> has 4 properties (2 double and 2 integer) instead of a redefinition.
>
> Frank.
>
> P.S. please try to get patch working, so that you can send us just the
> delta for existing files that you change.
>
>
>
> "Christian Landbo Frederiksen"
<[EMAIL PROTECTED]>
>
> wrote on 02/14/2007 01:30:41 PM:
>
> > I have created https://issues.apache.org/jira/browse/TUSCANY-1113
> >
> >
> >
> > -----Original Message-----
> > From: kelvin goodson [mailto:[EMAIL PROTECTED]
> > Sent: 14. februar 2007 19:03
> > To: tuscany-user@ws.apache.org
> > Subject: Re: SDO (Types) Registry
> >
> > Hi Christian,
> >   it would be good to get to a stage where we can exchange code and
> > replicate issues in quick turnaround and attack this together.  I
> > haven't
> > had a chance to work with the code you attached earlier yet.
> >
> > Frank suggested attaching the sources you are having problems with
to
> a
> > JIRA.  If you were able to do that that would be really helpful.
Just
> > go to
> > http://issues.apache.org/jira/browse/TUSCANY and create a new issue
as
> > an
> > "Improvement" and paste your scenario into the description.  Then I
> can
> > try
> > and replicate your issues in an eclipse 3.2 workspace.
> >
> > It would be good to get you up and running with subversion so that
you
> > could
> > attach patches rather than files.  It's tempting to suggest that we
> have
> > an
> > IRC chat on the Tuscany channel and really interactively pursue this
> > (there's some info on IRC connection here
> > http://incubator.apache.org/tuscany/get-involved.html) .  We could
> also
> > use
> > pasetbin (http://pastebin.com/) in conjunction with IRC to quickly
> share
> > code snippets. Unfortunately I have to leave the office in about 15
> > minutes
> > (working in UK),  but I'll see if I can get back to this later this
> > evening.  I assume you are in Denmark, yes?   I'll make it a
priority
> to
> > try
> > to support you interactively either later this evening or in the
> > morning. If
> > you fancy this then please let me know when is convenient for you.
> >
> > Best Regards, Kelvin.
> >
> > On 14/02/07, Christian Landbo Frederiksen <
> > [EMAIL PROTECTED]> wrote:
> > >
> > > Im pretty sure version 7 (which I am using) is based on 3.2 but
> > > otherwise you are right :)
> > >
> > > -----Original Message-----
> > > From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED]
> > > Sent: 14. februar 2007 18:02
> > > To: tuscany-user@ws.apache.org
> > > Subject: RE: SDO (Types) Registry
> > >
> > > Chr:
> > >
> > > Actually, Rational App. Dev is based on Eclipse 3.0, not the
> bleeding
> > > edge
> > > 3.2. This is a pain for us as well, as we would like to use at
least
> > 3.1
> > >
> > > plug-ins for our developers, but it's never a good idea to install
> > > Eclipse
> > > plug-ins in to RAD (we've had a lot of problems with that,
> > particularly
> > > the Maven plug-in)
> > >
> > > -
> > > Brandon Werner
> > >
> > >
> > >
> > >
> > >
> > > "Christian Landbo Frederiksen"
> > <[EMAIL PROTECTED]>
> > >
> > > 02/14/2007 11:30 AM
> > > Please respond to
> > > tuscany-user@ws.apache.org
> > >
> > >
> > > To
> > > <tuscany-user@ws.apache.org>
> > > cc
> > >
> > > Subject
> > > RE: SDO (Types) Registry
> > >
> > >
> > >
> > >
> > >
> > >
> > >
> > > I too believe they are related.
> > >
> > > I am currently using Rational App. Dev. which is based on Eclipse
> 3.2
> > so
> > > it ought to be able to do what you mention, otherwise I'll
download
> > and
> > > set it up in Eclipse.
> > >
> > > A guide to setting it up with regards to patch files would be
great.
> > > I'll look into submitting this issue via JIRA.
> > >
> > > Btw. clearing  xsdComponentToEModelElementMap didn't help.
> > >
> > > /Chr
> > >
> > >
> > > -----Original Message-----
> > > From: Frank Budinsky [mailto:[EMAIL PROTECTED]
> > > Sent: 14. februar 2007 16:04
> > > To: tuscany-user@ws.apache.org
> > > Subject: RE: SDO (Types) Registry
> > >
> > > Hi Christian,
> > >
> > > My guess is that both of these problems are related.
Unfortunately,
> I
> > > don't have time to look at it myself right now, but my guess is
that
> > you
> > >
> > > probably need to make sure the cached mapping (Yang mentioned
below)
> > is
> > > updated. Maybe something like this is needed:
> > >
> > >   public void generate(XSDSchema xsdSchema, boolean
forceOverwrite)
> > >   {
> > >     if (forceOverwrite) xsdComponentToEModelElementMap.clear();
> > >     super.generate(xsdSchema);
> > >   }
> > >
> > > Yang has volunteered to help get this working, but I think that we
> > need
> > > a
> > > better way to collaborate. Maybe you can open a JIRA request for
> this
> > > feature and then attach the test case and a patch to it (sending
> your
> > > changes in emails is very difficult to work with).
> > >
> > > Are you using Eclipse? If so, you should  be able to  easily
create
> > > patch
> > > files and apply patch files that Yang (or I) send you. You should
> also
> > > be
> > > able to debug the code (including into the EMF code) to understand
> > where
> > >
> > > things are going wrong. Let us know if you need help setting up an
> > > effective development environment.
> > >
> > > Thanks,
> > > Frank
> > >
> > >
> > > "Christian Landbo Frederiksen"
> > <[EMAIL PROTECTED]>
> > >
> > > wrote on 02/14/2007 07:46:23 AM:
> > >
> > > > Yep those are my 2 problems (at the moment)
> > > >
> > > > My problem is that I am looking and debugging in the source and
> > can't
> > > > seem to find out where these things take place.
> > > >
> > > > /Chr
> > > >
> > > >
> > > > -----Original Message-----
> > > > From: Yang ZHONG [mailto:[EMAIL PROTECTED]
> > > > Sent: 13. februar 2007 23:18
> > > > To: tuscany-user@ws.apache.org
> > > > Subject: Re: SDO (Types) Registry
> > > >
> > > > Very nice to see you participate, it'll be my pleasure to assist
> you
> > > > through.
> > > >
> > > > If I understand correctly, there're two problems:
> > > >
> > > >  2-1. propertyX, propertyX1, propertyX11
> > > >
> > > > EMF records original element/attribute name from XML schema;
let's
> > > call
> > > > it
> > > > XML name.
> > > > XML name local part may be not unique, Java identifier has
> different
> > > > syntax, and CodeGen may need some convention, etc,
> > > > so EMF also assigns unique eCore name to
> > > properties/EStructuralFeatures.
> > > >
> > > > EMF derives eCore name from the XML one, and appending 1s to
> assure
> > > > uniqueness,
> > > > so before addToSortedList/addOrReplaceInSortedList, you may want
> to
> > > > bypass
> > > > the 1s appending if XML name matches.
> > > > ExtendedMetaData#getNamespace and ExtendedMetaData#getName can
> give
> > > you
> > > > the
> > > > XML name.
> > > >
> > > > 2-2. null eClass.getEPackage()
> > > >
> > > > EMF contains EClass(complex type) and EDataType(simple type)
into
> > > > EPackage.
> > > > Being kicked out of the List by "set" within
> > addOrReplaceInSortedList
> > > > will
> > > > make the EClass/EDataType *not* contained by the EPackage.
> > > > Let me know if you want me to explain more the difference
between
> > > > containment and non-containment.
> > > > EMF/SDO EPackage may have a cache mapping from name to
> > > EClass/EDataType,
> > > > and EMF/SDO EClass/Type may also have a cache mapping from name
to
> > > > EStructuralFeature/Property whose type is EClass/EDataType used
by
> > > code
> > > > such
> > > > as createDataObject.
> > > > You may want to assure those cache are updated accordingly so
that
> > the
> > > > kicked-out EClass/EDataType won't be used since whose
> getEPackage()
> > is
> > > > null.
> > > >
> > > >
> > > > On 2/13/07, Christian Landbo Frederiksen <
> > > > [EMAIL PROTECTED]> wrote:
> > > > >
> > > > > Arghhh just ignore the last one.
> > > > >
> > > > > I was testing with different namespaces :(
> > > > >
> > > > > I still have the nullpointer!
> > > > >
> > > > > Sorry for all the spamming - I'm getting pretty frustrated
now.
> I
> > > > think
> > > > > I'll go to bed....
> > > > >
> > > > > /Chr
> > > > >
> > > > >
> > > > > -----Original Message-----
> > > > > From: Christian Landbo Frederiksen
> > > > > [mailto:[EMAIL PROTECTED]
> > > > > Sent: 13. februar 2007 22:40
> > > > > To: tuscany-user@ws.apache.org
> > > > > Subject: RE: SDO (Types) Registry
> > > > >
> > > > > Further info:
> > > > >
> > > > > If I remove the extensibleNamespaces I added to XSDHelperImpl
so
> > it
> > > > > again looks like this:
> > > > >
> > > > >        if (ePackage == null ||
> > > > > TypeHelperImpl.getBuiltInModels().contains(ePackage))
> > > > >
> > > > > The nullpointerexception does not occur but then the existing
> > types
> > > of
> > > > a
> > > > > namespace does not seem to respond to changes...
> > > > >
> > > > > Ought the extensibleNamespaces change stay in:
> > > > >
> > > > > if (extensibleNamespaces || ePackage == null ||
> > > > > TypeHelperImpl.getBuiltInModels().contains(ePackage))
> > > > >
> > > > > /Chr
> > > > >
> > > > > -----Original Message-----
> > > > > From: Christian Landbo Frederiksen
> > > > > [mailto:[EMAIL PROTECTED]
> > > > > Sent: 13. februar 2007 21:24
> > > > > To: tuscany-user@ws.apache.org
> > > > > Subject: RE: SDO (Types) Registry
> > > > >
> > > > > Hi Frank
> > > > >
> > > > > I tried adding your code very brute forcely by pulling down
> > > > > computeEClass and computeEDataType from XSDEcoreBuilder to
> > > > > SDOXSDEcoreBuilder, giving these two methods new names and
> calling
> > > > them
> > > > > from the already existing computeEClass and computeEDataType
in
> > > > > SDOXSDEcoreBuilder. In the two pulled down methods I call the
> > > > > addOrReplaceInSortedList instead of addToSortedList.
> > > > >
> > > > > When I debug it it seems to do the trick in the
> > > > addOrReplaceInSortedList
> > > > > method - but once I run it it fails somehow.
> > > > >
> > > > > The XSDHelper.INSTANCE.define method completes fine using the
> new
> > > > code,
> > > > > but afterward I execute the following (where 'rootElement' is
> set
> > to
> > > > the
> > > > > root I seek in the particular invocation):
> > > > >
> > > > >                        DataObject documentDataObject =
> > > > > DataFactory.INSTANCE.create(namespace, "DocumentRoot");
> > > > >                        List documentProperties =
> > > > > documentDataObject.getInstanceProperties();
> > > > >                        Property rootProperty = null;
> > > > >                        for (Iterator i =
> > > > documentProperties.iterator();
> > > > > i.hasNext();) {
> > > > >                                Property p = (Property)
i.next();
> > > > > // point 1
> > > > >                                if
> > (rootElement.equals(p.getName()))
> > > {
> > > > >                                        rootProperty = p;
> > > > >                                        continue;
> > > > >                                }
> > > > >                        }
> > > > >
> > > > >                        if (rootProperty == null) {
> > > > >                                throw new
RuntimeException("FOUND
> > NO
> > > > > ROOT");
> > > > >                        }
> > > > >
> > > > >                        if (!rootProperty.isContainment()) {
> > > > >                                throw new
RuntimeException("ROOT
> IS
> > > NOT
> > > > > CONTAINMENT: " + rootProperty);
> > > > >                        } else {
> > > > > // point 2
> > > > >                                DataObject rootDataObject =
> > > > > documentDataObject.createDataObject(rootProperty);
> > > > >
> > > > >                                CompositeXmlElement xmlElement
=
> > new
> > > > > CompositeXmlElement(rootDataObject, rootProperty);
> > > > >
handleRootDataObject(xmlElement);
> > > > >                                return xmlElement;
> > > > >                        }
> > > > >
> > > > >
> > > > > At point 1 I get propertyX, propertyX1, propertyX11 even with
> the
> > > new
> > > > > code that ought to replace propertyX??
> > > > >
> > > > > At point 2 I now get:
> > > > >
> > > > > java.lang.NullPointerException
> > > > > at
> > org.eclipse.emf.ecore.util.EcoreUtil.create(EcoreUtil.java:2970)
> > > > > at
> > > > >
> > > >
> > >
> >
>
org.apache.tuscany.sdo.util.DataObjectUtil.create(DataObjectUtil.java:24
> > > > > 72)
> > > > > at
> > > > >
> > > >
> > >
> >
>
org.apache.tuscany.sdo.util.DataObjectUtil.createDataObject(DataObjectUt
> > > > > il.java:434)
> > > > > at
> > > > >
> > > >
> > >
> >
>
org.apache.tuscany.sdo.util.DataObjectUtil.createDataObject(DataObjectUt
> > > > > il.java:463)
> > > > > at
> > > > >
> > > >
> > >
> >
>
org.apache.tuscany.sdo.impl.DataObjectImpl.createDataObject(DataObjectIm
> > > > > pl.java:1216)
> > > > >
> > > > > Any ideas (if you can interpret this mail)?
> > > > >
> > > > > /Chr
> > > > >
> > > > > -----Original Message-----
> > > > > From: Frank Budinsky [mailto:[EMAIL PROTECTED]
> > > > > Sent: 13. februar 2007 18:23
> > > > > To: tuscany-user@ws.apache.org
> > > > > Subject: RE: SDO (Types) Registry
> > > > >
> > > > > Hi Christian,
> > > > >
> > > > > To replace an existing type, you need to override the behavior
> of
> > > > > XSDEcoreBuilder methods: createEClass() and createEDataType()
to
> > not
> > > > add
> > > > > a
> > > > > duplicate, but instead replace it when found. I noticed that
> they
> > > both
> > > > > call this method to add the new type:
> > > > >
> > > > > public static void addToSortedList(List eNamedElements,
> > > ENamedElement
> > > > > eNamedElement)
> > > > > {
> > > > >    int index = Collections.binarySearch(eNamedElements,
> > > eNamedElement,
> > > > > Comparator.INSTANCE);
> > > > >    if (index < 0)
> > > > >    {
> > > > >      eNamedElements.add(-(index + 1), eNamedElement);
> > > > >    }
> > > > >    else if (eNamedElements.get(index) != eNamedElement)
> > > > >    {
> > > > >      eNamedElements.add(index, eNamedElement);
> > > > >    }
> > > > > }
> > > > >
> > > > > What you want is to do is something like this instead:
> > > > >
> > > > >   public static void addOrReplaceInSortedList(List
> eNamedElements,
> > > > > ENamedElement eNamedElement)
> > > > > {
> > > > >    int index = Collections.binarySearch(eNamedElements,
> > > eNamedElement,
> > > > > Comparator.INSTANCE);
> > > > >    if (index < 0)
> > > > >    {
> > > > >      eNamedElements.add(-(index + 1), eNamedElement);
> > > > >    }
> > > > >    else if (eNamedElements.get(index) != eNamedElement)
> > > > >    {
> > > > >      eNamedElements.set(index, eNamedElement); // overwrite
> > existing
> > > > > element
> > > > >    }
> > > > > }
> > > > >
> > > > > The only question, is how best to optionally turn on this
> > behavior.
> > > I
> > > > > think that adding something like this in SDOXSDEcoreBuilder:
> > > > >
> > > > > protected boolean overwrite = false;
> > > > >
> > > > > and setting it to true in XSDHelperImpl, when you want this
> > > behavior.
> > > > >
> > > > > Anyway, that's where I'd start. Then you can try to figure out
> > where
> > > > > best
> > > > > to check the variable and change to the alternate
> > > > > addOrReplaceInSortedList() behavior.
> > > > >
> > > > > Let me know how it goes, and if you have any other questions.
> > > > >
> > > > > Frank.
> > > > >
> > > > >
> > > > > "Christian Landbo Frederiksen"
> > > > <[EMAIL PROTECTED]>
> > > > >
> > > > > wrote on 02/12/2007 03:15:52 PM:
> > > > >
> > > > > > Hi Frank et. al.
> > > > > >
> > > > > > First I'll summarize my use case as Yang Zhong requested:
> > > > > >
> > > > > > An xml schema is uploaded and SDO is used to generate a form
> for
> > > > > > submitting data as xml-instances of the schema.
> > > > > > New schemas in the same namespace may be added often
resulting
> > in
> > > > new
> > > > > > forms (this is the first issue where I need to extend
existing
> > > > > > namespaces).
> > > > > >
> > > > > > Xml instances may later be edited again.
> > > > > > This is the most common use case and SDO seems to support
this
> > > very
> > > > > > well.
> > > > > >
> > > > > > BUT xml schemas may be modified, even individual types.
> > > > > >
> > > > > > This of course flagged some warning signs and schema
versions
> > were
> > > > > > considered.
> > > > > > But 'use at own risk' was chosen because of its simplicity.
To
> > > > support
> > > > > > this strategy a status/mode will be introduced so
> xml-instances
> > > > cannot
> > > > > > be edited while schema is in 'administration'-mode. This
ought
> > to
> > > > > handle
> > > > > > the case with instances at schema-modification time.
> > > > > >
> > > > > > With regards to serialized xml instances any data that is
> > rendered
> > > > > > invalid with type changes will be reset/deleted as of
design.
> > > > > >
> > > > > > I sure like the fact that you say it would not be difficult
to
> > > > > implement
> > > > > > replacing existing types and I would greatly appreciate any
> help
> > > in
> > > > > that
> > > > > > direction.
> > > > > >
> > > > > > /Chr
> > > > > >
> > > > > >
> > > > > > -----Original Message-----
> > > > > > From: Frank Budinsky [mailto:[EMAIL PROTECTED]
> > > > > > Sent: 12. februar 2007 20:37
> > > > > > To: tuscany-user@ws.apache.org
> > > > > > Subject: RE: SDO (Types) Registry
> > > > > >
> > > > > > Christian,
> > > > > >
> > > > > > I don't think your scenario is beyond the purpose of SDO -
In
> > > fact,
> > > > I
> > > > > > see
> > > > > > it as a "real world" example that we should try to
> accommodate.
> > > > > >
> > > > > > To provide an option that allows you to overwrite/replace
> > existing
> > > > > > types,
> > > > > > would not be difficult to do - but it would be dangerous to
> use
> > > if,
> > > > > for
> > > > > > example, you have instances of the types at the time you
> change
> > > > them.
> > > > > > Also, you could end up with corrupt models if, for example,
> you
> > > > delete
> > > > > a
> > > > > >
> > > > > > type that is referenced by another. What about serialized
XML
> > > > > instances?
> > > > > >
> > > > > > If you change a type and then try to load a serialized XML,
> > unless
> > > > the
> > > > >
> > > > > > types are a compatible extension (i.e., only new things
> added),
> > it
> > > > may
> > > > > > no
> > > > > > longer conform to the schema. What level of versioning does
> this
> > > > > > requirement imply?
> > > > > >
> > > > > > Would it be acceptable if this option was a "use at own
risk"
> > > > feature
> > > > > -
> > > > > > the user needs to be very careful when using it?
> > > > > >
> > > > > > I realize that, as an SDO/EMF novice, you may have a hard
time
> > > > finding
> > > > > > the
> > > > > > right places in the code that need to change, so we can help
> > with
> > > > > that,
> > > > > > if
> > > > > > we agree exactly what we're trying to implement.
> > > > > >
> > > > > > Frank.
> > > > > >
> > > > > > "Christian Landbo Frederiksen"
> > > > > <[EMAIL PROTECTED]>
> > > > > >
> > > > > > wrote on 02/12/2007 01:40:25 PM:
> > > > > >
> > > > > > >
> > > > > > >
> > > > > > > Let me first say, I don't not have very much insight into
> how
> > > > > Tuscany
> > > > > > is
> > > > > > > built up.
> > > > > > >
> > > > > > > I am dealing with a situation where the xsd's, that define
> the
> > > > > format
> > > > > > of
> > > > > > > a generic data publishing sysem, can be added and changed
> > > > > dynamically
> > > > > > -
> > > > > > > even the individual types of a namespace can be changed
> > > (probably
> > > > > not
> > > > > > > very often). I first looked into EMF XSD and then found
> > Tuscany,
> > > > and
> > > > > > it
> > > > > > > has looked very promising.
> > > > > > >
> > > > > > > Except that I ran into the fact that namespaces cannot be
> > > altered
> > > > > once
> > > > > > > defined. Frank Budinsky came up with a solution where
> > namespaces
> > > > can
> > > > > > be
> > > > > > > extended, but the types that exist already in a namespace
> > cannot
> > > > be
> > > > > > > redefined.
> > > > > > >
> > > > > > > Perhaps this scenario is way beyond the purpose of SDO,
but
> > > > besides
> > > > > > > these two issues I find it very useful to work with
runtime
> > xml
> > > > > > schemas.
> > > > > > >
> > > > > > > So as you might guess I think an option to totally
redefine
> > > > > namespaces
> > > > > > > or to extend them with new types and just overwrite the
> > existing
> > > > > ones,
> > > > > > > would be fine.
> > > > > > >
> > > > > > > This is in fact something I am trying to look into
implement
> > > > myself,
> > > > > > but
> > > > > > > at the understanding I'm at now I am having difficulties
> > > > maneuvering
> > > > > > in
> > > > > > > the EMF. I have no idea where defined schemas are
currently
> > kept
> > > > in
> > > > > > the
> > > > > > > VM and therefore don't know where to put in the code to
> allow
> > > > types
> > > > > of
> > > > > > a
> > > > > > > namespace to be redefined.
> > > > > > >
> > > > > > > Any pointers to where this code would go would be GREAT...
> > > > > > >
> > > > > > > /Chr
> > > > > > >
> > > > > > > -----Original Message-----
> > > > > > > From: kelvin goodson [mailto:[EMAIL PROTECTED]
> > > > > > > Sent: 10. februar 2007 13:27
> > > > > > > To: tuscany-user@ws.apache.org
> > > > > > > Subject: Re: SDO (Types) Registry
> > > > > > >
> > > > > > > Christian,
> > > > > > >
> > > > > > >   unfortunately not.  The only open JIRA we have in this
> area
> > is
> > > > > > > http://issues.apache.org/jira/browse/TUSCANY-761 for
> > > unregistering
> > > > > all
> > > > > > > the
> > > > > > > types in a namespace.  Perhaps we could collect together
> some
> > > info
> > > > > on
> > > > > > > what's
> > > > > > > really useful here and have some design discussions on how
> to
> > > > handle
> > > > > > > type
> > > > > > > lifecycle.  There have previously been discussions on
> forming
> > > > > > > associations
> > > > > > > between HelperContexts so that one HC  can have
dependencies
> > on
> > > > > > > another/others.  This might allow for example dropping
type
> > > > > > definitions
> > > > > > > by
> > > > > > > dropping all references to a given HelperContext.  It
would
> be
> > > > good
> > > > > to
> > > > > > > know
> > > > > > > exactly which operations would be the most valuable to you
> in
> > > > order
> > > > > to
> > > > > > > help
> > > > > > > make good design decisions.
> > > > > > >
> > > > > > > Regards, Kelvin.
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > On 10/02/07, Christian Landbo Frederiksen <
> > > > > > > [EMAIL PROTECTED]> wrote:
> > > > > > > >
> > > > > > > > Is there no way to 'undefine' types if you have to
modify
> > > > existing
> > > > > > > types?
> > > > > > > >
> > > > > > > > /Chr
> > > > > > > >
> > > > > > > > ________________________________
> > > > > > > >
> > > > > > > > From: Frank Budinsky [mailto:[EMAIL PROTECTED]
> > > > > > > > Sent: Fri 2/9/2007 5:10 PM
> > > > > > > > To: tuscany-user@ws.apache.org
> > > > > > > > Subject: RE: SDO (Types) Registry
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > If the requirement is just to add new types to a
> namespace,
> > as
> > > > > > opposed
> > > > > > > to
> > > > > > > > modifying existing types (which is nasty), I don't think
> it
> > > > would
> > > > > be
> > > > > > > hard
> > > > > > > > to add this support.
> > > > > > > >
> > > > > > > > This is open source, maybe you want to help :-)
> > > > > > > >
> > > > > > > > Initially, I would suggest adding a new instance
variable
> in
> > > > > > > XSDHelperImpl
> > > > > > > > - extensibleNamespaces (false by default, but can be set
> to
> > > > true)
> > > > > -
> > > > > > > and
> > > > > > > > then change this line in XSDHelperImpl.define():
> > > > > > > >
> > > > > > > >         if (ePackage == null ||
> > > TypeHelperImpl.getBuiltInModels
> > > > > > > > ().contains(ePackage))
> > > > > > > >
> > > > > > > > to this:
> > > > > > > >
> > > > > > > >         if (extensibleNamespaces || ePackage == null ||
> > > > > > > TypeHelperImpl.
> > > > > > > > getBuiltInModels().contains(ePackage))
> > > > > > > >
> > > > > > > > Then, it's a matter of debugging to make sure that in
> > > > > > > SDOXSDEcoreBuilder,
> > > > > > > > when a type is requested that already exists, it just
uses
> > the
> > > > > > > existing
> > > > > > > > type and moves on. New types would get added in the
usual
> > way.
> > > > > > > >
> > > > > > > > I think this may be related to, and helped by, the work
> that
> > > > will
> > > > > be
> > > > > > > done
> > > > > > > > in TUSCANY-1085 (not the patch provided by Fuhwei, but
the
> > > > proper
> > > > > > fix
> > > > > > > that
> > > > > > > > needs to be done), which needs to ensure that previously
> > > loaded
> > > > > > types
> > > > > > > are
> > > > > > > > found in SDOXSDEcoreBuilder.
> > > > > > > >
> > > > > > > > Frank.
> > > > > > > >
> > > > > > > >
> > > > > > > > "Christian Landbo Frederiksen"
> > > > > > > <[EMAIL PROTECTED]>
> > > > > > > > wrote on 02/09/2007 08:36:35 AM:
> > > > > > > >
> > > > > > > > > Hmmm. I just found this in the Dev list:
> > > > > > > > >
> > > > > > > > > "In the future, we may want to look at allowing new
> types
> > to
> > > > be
> > > > > > > added to
> > > > > > > > > an
> > > > > > > > > existing namespace, but currently that is not
> supported."
> > -
> > > > > Frank
> > > > > > > > > Budinsky
> > > > > > > > >
> > > > > > > > > If this is not coming up real soon - is there a way to
> > > > > circumvent
> > > > > > > this
> > > > > > > > > using the underlying EMF or something?
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Christian Landbo Frederiksen
> > > > > > > > > [mailto:[EMAIL PROTECTED]
> > > > > > > > > Sent: 9. februar 2007 14:29
> > > > > > > > > To: tuscany-user@ws.apache.org
> > > > > > > > > Subject: RE: SDO (Types) Registry
> > > > > > > > >
> > > > > > > > > And then again - that way I can't define from my xsd.
> > > > > > > > >
> > > > > > > > > Dang. How do I solve this?
> > > > > > > > >
> > > > > > > > > /Chr
> > > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Christian Landbo Frederiksen
> > > > > > > > > [mailto:[EMAIL PROTECTED]
> > > > > > > > > Sent: 9. februar 2007 14:27
> > > > > > > > > To: tuscany-user@ws.apache.org
> > > > > > > > > Subject: RE: SDO (Types) Registry
> > > > > > > > >
> > > > > > > > > I have just run into calling define(...) for a schema
> with
> > > > > > namespace
> > > > > > > > > that has already been defined by another schema does
NOT
> > add
> > > > the
> > > > > > > types
> > > > > > > > > from the new schema.
> > > > > > > > >
> > > > > > > > > I suppose I have to register each seperately on its
own
> > > > > > typehelper?
> > > > > > > > >
> > > > > > > > > Is there a way to see if a namespace is already
defined?
> > > > > > > > >
> > > > > > > > > /Chr
> > > > > > > > >
> > > > > > > > > -----Original Message-----
> > > > > > > > > From: Yang ZHONG [mailto:[EMAIL PROTECTED]
> > > > > > > > > Sent: 27. januar 2007 20:15
> > > > > > > > > To: tuscany-user@ws.apache.org
> > > > > > > > > Subject: Re: SDO (Types) Registry
> > > > > > > > >
> > > > > > > > > SDO spec seems not addressing the issues yet, here's
> what
> > I
> > > > know
> > > > > > for
> > > > > > > > > Tuscany
> > > > > > > > > implementation.
> > > > > > > > >
> > > > > > > > > 1. connection between XSDHelper#define and
> XMLHelper#load
> > > > > > > > >   The assumption is right: XSDHelper#define stores
Types
> > > into
> > > > > > > > > (Package/Types) Registry and XMLHelper#load uses the
> Types
> > > > from
> > > > > > > > > the (Package/Types) Registry
> > > > > > > > >
> > > > > > > > > 2. How XMLHelper#load uses Types
> > > > > > > > >   Assuming a XML:
> > > > > > > > >   <root:stock xmlns:root="NS" ...
> > > > > > > > >   XMLHelper#load looks for the Type of the global
> Property
> > > > with
> > > > > > > > > NameSpace
> > > > > > > > > "NS" and name "stock", and uses the Type to create
> > > DataObject
> > > > > > > instance
> > > > > > > > > then
> > > > > > > > > loads the rest of the XML.
> > > > > > > > >   The Type can be dynamic from XSDHelper#define, where
> the
> > > > > > > DataObject is
> > > > > > > > > an
> > > > > > > > > instance of DataObjectImpl.
> > > > > > > > >   The Type can also be static from code generation,
> where
> > > the
> > > > > > > DataObject
> > > > > > > > > is
> > > > > > > > > an instance of generated class such as MyStock.
> > > > > > > > >   If no Type available, XMLHelper#load creates an
> instance
> > > of
> > > > > > > > > AnyTypeDataObject and loads data without any metadata.
> > > > > > > > >
> > > > > > > > > 3. (Package/Types) Registry Garbage Collection
> > > > > > > > >   Types are weakly referenced by ClassLoader. If a
> (J2EE)
> > > > > > > application
> > > > > > > > > stops,
> > > > > > > > > Types can be Garbage Collected unless a system library
> > (live
> > > > > > > > > ClassLoader)
> > > > > > > > > holds a strong reference.
> > > > > > > > >
> > > > > > > > > 4. (Package/Types) Registry Thread Safety
> > > > > > > > >   No Thread Safety for the moment. However it could be
> > done;
> > > > the
> > > > > > > > > previous
> > > > > > > > > SDO implementation I worked on supports Thread Safety
> for
> > > > > example.
> > > > > > > > >
> > > > > > > > > 5. Two XSDHelper#define for same XSD(s)
> > > > > > > > >   The later one overwrites the earlier one if same
> > > > > > > > > scope/application/ClassLoader. If concurrent, slower
> > thread
> > > > > "wins"
> > > > > > > :-)
> > > > > > > > >   If different scope/application/ClassLoader, multiple
> > > copies
> > > > > for
> > > > > > > the
> > > > > > > > > moment. However it could be optimized to save both
> storage
> > > and
> > > > > > > > > defining/loading time; the previous SDO implementation
I
> > > > worked
> > > > > on
> > > > > > > > > defines/loads same XSD(s) only once if no modification
> and
> > > > makes
> > > > > > > Types
> > > > > > > > > available to multiple
scopes/applications/ClassLoaders,
> > for
> > > > > > example.
> > > > > > > > >
> > > > > > > > > On 1/27/07, Christian Landbo Frederiksen <
> > > > > > > > > [EMAIL PROTECTED]> wrote:
> > > > > > > > > >
> > > > > > > > > > I was wondering what goes on in the background,
since
> > SDO
> > > > can
> > > > > be
> > > > > > > used
> > > > > > > > > > the way is is used.
> > > > > > > > > >
> > > > > > > > > > In the example:
> > > > > > > > > >
> > > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> >
>
org.apache.tuscany.samples.sdo.specCodeSnippets.CreateDataObjectFromXsdA
> > > > > > > > > > ndXmlFiles
> > > > > > > > > >
> > > > > > > > > > types are defined in one static method like this:
> > > > > > > > > > XSDHelper.INSTANCE.define(is, null);
> > > > > > > > > >
> > > > > > > > > > and then in another static method xml is loaded:
> > > XMLDocument
> > > > > > > xmlDoc =
> > > > > > > > > > XMLHelper.INSTANCE.load(is);
> > > > > > > > > >
> > > > > > > > > > What is the connection between these two separate
> method
> > > > > > > invocations?
> > > > > > > > > > How does the loading of xml use the types defined
> above?
> > I
> > > > > > assume
> > > > > > > > > > something is stored somewhere but how does this
relate
> > to
> > > > > > garbage
> > > > > > > > > > collection and thread safety? I meas somebody could
> call
> > > > > > > > > > XSDHelper.INSTANCE.define(is, null); with another
xsd
> > > > > somewhere
> > > > > > > else
> > > > > > > > > in
> > > > > > > > > > the same VM?
> > > > > > > > > >
> > > > > > > > > > /Chr
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > --
> > > > > > > > >
> > > > > > > > > Yang ZHONG
> > > > > > > > >
> > > > > > > > >
> > > > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail:
> > > [EMAIL PROTECTED]
> > > > > > > > > For additional commands, e-mail:
> > > > [EMAIL PROTECTED]
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail:
> > > [EMAIL PROTECTED]
> > > > > > > > > For additional commands, e-mail:
> > > > [EMAIL PROTECTED]
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > > > > > To unsubscribe, e-mail:
> > > [EMAIL PROTECTED]
> > > > > > > > > For additional commands, e-mail:
> > > > [EMAIL PROTECTED]
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> >
---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail:
> > [EMAIL PROTECTED]
> > > > > > > > For additional commands, e-mail:
> > > [EMAIL PROTECTED]
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > >
> > > >
> >
---------------------------------------------------------------------
> > > > > > > > To unsubscribe, e-mail:
> > [EMAIL PROTECTED]
> > > > > > > > For additional commands, e-mail:
> > > [EMAIL PROTECTED]
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > > > To unsubscribe, e-mail:
> [EMAIL PROTECTED]
> > > > > > > For additional commands, e-mail:
> > [EMAIL PROTECTED]
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > >
> >
---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail:
[EMAIL PROTECTED]
> > > > > > For additional commands, e-mail:
> [EMAIL PROTECTED]
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > >
> >
---------------------------------------------------------------------
> > > > > > To unsubscribe, e-mail:
[EMAIL PROTECTED]
> > > > > > For additional commands, e-mail:
> [EMAIL PROTECTED]
> > > > > >
> > > > >
> > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail:
[EMAIL PROTECTED]
> > > > >
> > > > >
> > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail:
[EMAIL PROTECTED]
> > > > >
> > > > >
> > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail:
[EMAIL PROTECTED]
> > > > >
> > > > >
> > > > >
> > > > >
> > >
> ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail:
[EMAIL PROTECTED]
> > > > >
> > > > >
> > > >
> > > >
> > > > --
> > > >
> > > > Yang ZHONG
> > > >
> > > >
> >
---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > >
> > >
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> > >
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> > >
> > >
> > >
> > > -----------------------------------------
> > > CONFIDENTIALITY STATEMENT:
> > > This e-mail transmission contains information that is intended to
> > > be confidential.  It is intended only for the addressee named
> > > above.  If you receive this e-mail in error, please do not read,
> > > copy, or disseminate it.  If you are not the intended recipient,
> > > any disclosure, copying, distribution or use of the contents of
> > > this information is prohibited.   Please reply to the message
> > > immediately by informing the sender that the message was
> > > misdirected.  After replying, please erase it from your computer
> > > system.  Your assistance in correcting this error is appreciated.
> > >
> > >
> ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> >
> >
---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>


-- 

Yang ZHONG

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to