OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

sdo message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [sdo] XML Fidelity issue: xsi:nil with attributes


Hi Radu,

  I would expect that any Copy helper would copy all state, technical properties are.  If the Copy Helper was implemented for a specific type of data it would be up to the implementation on how it wanted to treat technical properties as it is already up to the implementation how they would want to copy anything.  They could even add their own "isCopy" technical property, whatever they wanted.

  In terms of equality there are two concepts here, the equality of the "meaningful" data and the equality of all state information.  When I speak of technical properties I am speaking of data that has no meaning except to mechanism which added it.  I would expect a general Equality Helper to only compare "meaningful" data to it and since I am proposing that technical properties would only be specific to the mechanism that placed it and not sdo specific.  A general SDO equality could ignore them or not, if there is a general equality helper the committee defines than the committee should decide if technical properties are meaningful for a general SDO DO equality.  An XML equality helper could use any technical properties it knows about, such as xsi:nil, because that technical property has meaning to it because the XMLHelper (or DAS, or View, etc) has placed that technical property, but it may not want to use a technical property it doesn't recognize or has no meaning to XML state in the comparison.  The point here is that the equality and if technical properties are meaningful is again up to the implementation and the use case, but there is no need to define what equality means to these implementations by the SDO spec. 

  In terms of serialization, again the technical properties are only meaningful to an outside identity that needs additional information that is not part of the normal SDO state.  Therefore it would be up to the DAS if technical properties are meaningful to it.  If you have some kind of BinaryDAS which must be able to store SDO objects and types exactly than it would be up to the implementation of that DAS to store all state including technical properties.  If the DAS was an XMLDas it maybe required that the XMLDas serialized to a document that matched a certain schema and this technical information to make that happen is stored in the Types as technical properties and certain things such as xsi:nil is stored on the data object.  Therefore the XMLDas would not serialize all this information but uses it to influence how it does serialize the information.  The point I am trying to make here is that again the behavior of the technical properties is determined by the mechanism using it and does not have any complicated predefined requirements or usage spelled out by the SDO.

  I don't think there is really much added complexity at all.  There is as little or as much complexity added by whoever wants to use technical properties, but in terms of SDO I think it is a very simple concept and there are only a few basic things we need to say about them.

~James


-----Original Message-----
From: Radu Preotiuc-Pietro [mailto:radu.preotiuc-pietro@oracle.com] 
Sent: Monday, June 23, 2008 5:46 PM
To: sdo@lists.oasis-open.org
Subject: RE: [sdo] XML Fidelity issue: xsi:nil with attributes

James, you said: "They should be ignored in the normal flow of things". So if I run CopyHelper.copy() on a DataObject that has an xs:nil attribute on it, you would expect that the copy will not have the xsi:nil on it? Same goes for EqualityHelper, it would seem that xsi:nil needs to participate in these operations.

But if we want to generalize this to implementation-defined "system properties", then it is not at all clear what operation should they participate/not participate in. CopyHelper/EqualityHelper are examples, but also XML serialization: should they be serialized or not? I think we may be adding a lot of unjustified complexity here.

Radu

> -----Original Message-----
> From: James Hart [mailto:James.Hart@roguewave.com] 
> Sent: Monday, June 23, 2008 3:07 PM
> To: Frank Budinsky; sdo@lists.oasis-open.org
> Subject: RE: [sdo] XML Fidelity issue: xsi:nil with attributes
> 
> Could we add a new signature for getInstanceProperties such 
> as getInstanceProperties(bool getTechnical) instead?
> 
> Thanks,
>   James
> 
> 
> -----Original Message-----
> From: Frank Budinsky [mailto:frankb@ca.ibm.com]
> Sent: Monday, June 23, 2008 4:04 PM
> To: sdo@lists.oasis-open.org
> Subject: RE: [sdo] XML Fidelity issue: xsi:nil with attributes
> 
> Hi James,
> 
> To me, "meta" implies a change in the description level - 
> that is, meta-data describes data, meta-meta-data, describes 
> meta-data, and so on. 
> So the name
> "meta property" would imply that it is describing a property, 
> as opposed to being a special "hidden" property.
> 
> Technical property, on the other hand, is not a terrible 
> name, but IMO not really very obvious what it is. I'm not 
> sure if "system" is really much better, but I think it may be 
> a little better.
> 
> I'd rather not add a new method to DataObject (it has more 
> than enough already), if we can avoid it.
> 
> Thanks,
> Frank.
> 
> 
> "James Hart" <James.Hart@roguewave.com> wrote on 06/23/2008 
> 05:15:29 PM:
> 
> > I am not sure why "meta properties" didn't catch on.  I 
> don't really 
> > care what it is called and I don't think this should ever 
> be confused 
> > with anything XMLcentric, it is and SDO thing that 
> XML/XSDDas/Helper 
> > would simply be utilizing.
> > 
> > getTechnical(Meta|System)Properties would be on the same objects as 
> > getInstanceProperties is, so DataObject and Type, is 
> > getInstanceProperties on anything else?  The proposal is that these 
> > Meta Properties are simply instance properties where
> > is(Meta|Technical|Whatever) property of the instance 
> property is true 
> > and these type of instance properties can be added at 
> anytime even on 
> > closed types and data objects.  They should be ignored in 
> the normal 
> > flow of things that is why they wouldn't be part of the 
> > getInstanceProperties list.
> > 
> > I wouldn't want to tie these to anything xmlcentric such as the xml 
> > attribute solution.  Simply making them special kinds of instance 
> > properties makes it very robust and general for any 
> mechanism to take 
> > advantage of.  If it is decided to make xmlcentric than 
> going back to 
> > a isNill/setNill api would be as desirable to me (as in not very 
> > desirable).
> > 
> > 
> > Thanks,
> >   James
> > 
> > -----Original Message-----
> > From: Frank Budinsky [mailto:frankb@ca.ibm.com]
> > Sent: Monday, June 23, 2008 2:54 PM
> > To: sdo@lists.oasis-open.org
> > Subject: RE: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > Hi Guys,
> > 
> > I think something like "system properties" might be a 
> better name than 
> > "technical properties". XML has 4 intrinsic system/technical 
> > properties,
> 
> > namely the 4 attributes in the xsi namespace: xsi:type, xsi:nil, 
> > xsi:schemaLocation, and xsi:noNamespaceSchemaLocation. These 4 are 
> > built-in attributes that all XML processors allow. I think 
> we need to
> say 
> > that those 4 are system properties by default. If users 
> want to define 
> > additional ones, they can do it with Ron's proposed sdo annotation 
> > (but note that they can result in invalid XML serializations).
> > 
> > I'm not really crazy about adding a new API for this to SDO. Where 
> > would
> 
> > getTechnicalProperties() go? DataObject, DataHelper, or 
> somewhere else? 
> I 
> > wonder if we could require technical/system properties to 
> map to XML 
> > attributes? If so, maybe we could access them using a solution we 
> > might come up with for SDO-132?
> > 
> > Frank
> > 
> > 
> > 
> > 
> > "James Hart" <James.Hart@roguewave.com>
> > 06/19/2008 09:23 AM
> > 
> > To
> > "Barack, Ron" <ron.barack@sap.com>, Frank 
> Budinsky/Toronto/IBM@IBMCA, 
> > <sdo@lists.oasis-open.org> cc
> > 
> > Subject
> > RE: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > 
> > 
> > 
> > 
> > 
> > I really like this more generalized approach with "Option 2".
> > 
> > It would also be nice if there was an additional API similar to
> > getInstanceProperties() that would be PropertyList 
> > getTechnicalProperties().  In the long run it would even be nicer if
> there 
> > becomes a getTechnicalProperties(Namespace) api.  That way 
> a user of 
> > the
> 
> > technical properties wouldn't have to getProperty(TProp) on 
> everything
> it 
> > may know about, but instead get a list, loop through them 
> and see if 
> > it recognizes any of them.
> > 
> >   One benefit comes if there is a larger overhead in 
> multiple calls to
> > getProperty() than a single getTechnicalProperties() call. Another
> benefit 
> > is if a DAS may recognize 100 technical properties but likely there 
> > will
> 
> > only be one or two ever set on any type or data object it 
> will save a 
> > large amount of time to get a list and check if it recognizes those.
> > 
> > Thanks,
> >   James
> > 
> > -----Original Message-----
> > From: Barack, Ron [mailto:ron.barack@sap.com]
> > Sent: Thursday, June 19, 2008 4:25 AM
> > To: Frank Budinsky; sdo@lists.oasis-open.org
> > Subject: AW: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > Hi,
> > 
> > I would like to propose generalizing Option 2 below as follows.  We
> define 
> > an open content property
> > {commonj.sdo}technicalProperty with type "boolean".
> > 
> > When an open content property is annotated with
> technicalProperty="true", 
> > then the property may be set on any object, regardless of 
> whether the 
> > object's type is open or not.  This is the behavior described under 
> > "Option 2", except now it is not based on a pre-defined set of
> properties 
> > hardcoded into SDO, but rather on the "technicalProperty" mechanism.
> > 
> > Technical properties DO NOT appear in an object's instance 
> properties. 
> > Instance properties are typically business relevant, technical
> properties 
> > are not.  Technical properties can only be retrieved or set through 
> > the
> > DataObject.get(Property) or the DataObject.set(Property, 
> Object) APIs.
> > 
> > We must further define the open content property 
> > {http://www.w3.org/2001/XMLSchema-instance}nil"; and declare 
> it to have 
> > technicalProperty="true".
> > 
> > Best Regards,
> > Ron
> > 
> > -----Ursprüngliche Nachricht-----
> > Von: Frank Budinsky [mailto:frankb@ca.ibm.com]
> > Gesendet: Montag, 16. Juni 2008 21:02
> > An: sdo@lists.oasis-open.org
> > Betreff: RE: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > Hi James,
> > 
> > If I understand you, you're suggesting 1) a generic mechanism for 
> > adding
> 
> > meta information to meta information, and 2) a separate API for
> accessing 
> > instances of this meta information.
> > 
> > For 1), I think the instanceProperty support we added to Type and
> Property 
> > 
> > is mostly what we need (except, I suppose, it's missing a 
> set() API if
> the 
> > 
> > types are defined with XSD).
> > 
> > For 2), I'm not sure I see the value of adding the complexity of a 
> > separate API for this. Simply using DataObject.get/set() 
> seems like a
> very 
> > 
> > clean and simple approach to me.
> > 
> > Frank.
> > 
> > 
> > 
> > 
> > "James Hart" <James.Hart@roguewave.com>
> > 06/11/2008 10:15 AM
> > 
> > To
> > "Barack, Ron" <ron.barack@sap.com>, <sdo@lists.oasis-open.org> cc
> > 
> > Subject
> > RE: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > 
> > 
> > 
> > 
> > 
> > I like option two, but can we make it more generic?  Could we just 
> > have
> a 
> > method on Type and Property such as
> > set/getMetaProperty<val_type>(property, xmlnamespace, name, value). 
> > This
> 
> > would be an instance property but only accessable through 
> this API and 
> > only should be used for auxiliary information that is 
> critical to the
> data 
> > 
> > itself.
> > 
> > In this way we could say something like any meta property 
> can be added
> to 
> > any kind of property.  By best practice it would only store meta 
> > information that would only be important to a DAS or a user that 
> > expects
> 
> > auxiliary information from a DAS. We could even expand that and say 
> > that
> 
> > certain projects would use these meta data to hold their own custom
> states 
> > 
> > and this is also how the projections can "share" information with 
> > other projections.
> > 
> > So in terms of the nil property now when the XSDHelper 
> reads in an xsd
> it 
> > could do:
> >  Type<bool>.addMetaProperty(nillableElementProperty, xsdnamespace, 
> > "nillable", true);
> > 
> > And when the XSDHelper reads in a file where something is 
> set, when it
> is 
> > creating the DataObject it could do something like:
> > DataObject.<bool>setMetaProperty("thiselementwasnill", 
> xsdnamespace, 
> > "nill", true);
> > 
> > So now if the user wants to tell the XMLDas to marshall out 
> something 
> > as
> 
> > nill they would:
> > DataObject.<bool>setMetaProperty("thiselementwasnill", 
> xsdnamespace, 
> > "nill", true);
> > 
> > And then the XMLHelper on read just simply would check to 
> see if the 
> > "nillable" meta information is on the type and if it is 
> check to see 
> > if the xsd:nill meta information is set to true on the 
> actual property
> where 
> > the elements dataObjectType is located.
> > 
> > Now the user can use introspection on the meta properties 
> to get meta 
> > information that was XML or any other medium specific meta 
> information.
> > But I think the really cool thing about this is that any 
> kind of DAS 
> > can
> 
> > add any kind of information and now interop with compatible meta 
> > information from other DAS's.
> > 
> > So I guess the solution I am proposing is a more robust system that
> allows 
> > 
> > for meta information that isn't XML centric but generic 
> enough to hold
> any 
> > 
> > kind of meta information.  One might argue since you can 
> put instance 
> > properties on types that this already a way to provide meta 
> information.
> 
> > However, there is no real way currently to provide instanced meta 
> > information on properties on a DataObject that has no 
> relation to the 
> > stored information.
> > 
> > Of course this is all just very preliminary in of an idea and maybe
> there 
> > are still use cases it doesn't cover well, but if this system was in
> place 
> > 
> > for 2.1 I think I could of implemented an XSDHelper in such a way it
> would 
> > 
> > of provided all the meta information needed so XMLHelper could of 
> > inspected a type created by the XSDHelper and generated a valid XML 
> > instance document, which is valuable because we have ran 
> into a couple
> of 
> > customer use cases for that.
> > 
> > Thanks,
> >   James
> > 
> > 
> > 
> > -----Original Message-----
> > From: Barack, Ron [mailto:ron.barack@sap.com]
> > Sent: Wednesday, June 11, 2008 6:47 AM
> > To: sdo@lists.oasis-open.org
> > Subject: AW: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > Hi SDO-ers,
> > 
> > I want to bring up some additional options for dealing with 
> xsi:nil. 
> > 
> > OPTION 1:
> > 
> > This is more or less motivated by how JAXB deals with 
> xsi:nil.  JAXB 
> > defines JAXBElement, which more or less corresponds to the 
> elements in
> our 
> > 
> > own beloved Sequence.  JAXBElement has a property "isNil", by 
> > extension,
> 
> > we could add an "isNil(int index)" to Sequence, plus a 
> corresponding 
> > setter.
> > 
> > The implication would be that types that have elements with 
> > xsi:nillable="true" would be sequenced.  Since there are costs
> associated 
> > with sequenced types, we might make to make this rule more 
> precise.  
> > We could say, that nillable implies sequenced only if the element's 
> > type
> does 
> > 
> > not extend a simple type.
> > 
> > OPTION 2:
> > 
> > We define a set of global properties that can be set on objects 
> > whether
> or 
> > 
> > not object.getType().isOpen() is true.  Among these global 
> properties 
> > would be "xsi:nil" and maybe others, like "xml:lang".  So, 
> to set an 
> > object to nill, you'd have to look up the global property (using 
> > TypeHelper or XSDHelper):
> > 
> >                  Property nilProperty = 
> > XSDHelper.INSTANCE.getGlobalProperty(
> >                                             "
> > http://www.w3.org/2001/XMLSchema-instance","nil",false);
> >       dataObject.set(nilProperty,true);
> > 
> > It's not easy, but doesn't have to be easy, since I consider this 
> > pretty
> 
> > much a corner case.  The next question is whether or not such 
> > properties
> 
> > should appear in the instance properties of an object.  My first 
> > impression is that they should not, they are not business 
> properties 
> > but
> 
> > only relevant to XML serialization.  But maybe someone can 
> convince me 
> > that they are business relevant.
> > 
> > It would be the user's responsibility to set this only where the 
> > object
> is 
> > 
> > used as the value of a nillable property.
> > 
> > I like the second proposal, I think we are introducing 
> something that
> can 
> > also be used to solve other problems.  My reservation is 
> that we are 
> > effectively making everything "half-open"... But isn't that the way 
> > XML is?
> > 
> > 
> > Ron
> > -----Ursprüngliche Nachricht-----
> > Von: Frank Budinsky [mailto:frankb@ca.ibm.com]
> > Gesendet: Montag, 9. Juni 2008 22:56
> > An: sdo@lists.oasis-open.org
> > Betreff: Re: WG: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > Hi Guys,
> > 
> > There are no restrictions on xsd:nillable. Any element 
> declaration can 
> > have "nillable=true". It can have simple or complex type. So Ron is
> right 
> > that Blaise's option 2 is ruled out.
> > 
> > My feeling is the getValue()/setValue() approach that Ron is 
> > suggesting
> is 
> > 
> > 
> > a very XML-specific concept, since it's still only used for XML
> purposes: 
> > 1) complexTypes with simpleContent and 2) for xsi:nil. If 
> that's true, 
> > then it really doesn't seem right to add it to the 
> DataObject interface.
> > 
> > Yes, the project(Node.class) I'm suggesting would be 
> providing a "live" 
> > Node-view of the DataObject. I don't really think it's that 
> hard. It's 
> > very similar to the Sequence-view - just a slightly 
> different "standard"
> 
> > API. I'd like to discuss it in this weeks call, if we can spend a 
> > little
> 
> > bit of time on it.
> > 
> > Thanks,
> > Frank.
> > 
> > 
> > 
> > 
> > "Barack, Ron" <ron.barack@sap.com>
> > 06/09/2008 08:48 AM
> > 
> > To
> > <sdo@lists.oasis-open.org>
> > cc
> > 
> > Subject
> > WG: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > 
> > 
> > 
> > 
> > 
> > Hi Blaise, Everyone
> > 
> > Looking at the example in section 2.7, we see IntegerRange 
> is simply a 
> > complex type, not a complex type that extends a simple type.  
> > Therefore,
> 
> > AFAICS, it has no value property. 
> > 
> > We couldn't find any limitations on which elements can be marked 
> > "nillable".  But we are not the XSD experts, perhaps someone in the
> group 
> > can identify what (if any) restrictions exist.  In any 
> case, I assume 
> > Frank's example to be valid.  In this case, option 2 falls 
> out, and we 
> > have no way to express both that the "min" is set and that 
> the value 
> > of the property is nil.  I think we need some API changes.
> > 
> > My gut feeling, however, is that Blaise is on the right track, in 
> > considering nillable and simple content together.  The 
> current way of 
> > handling complex types that extend simple context, through the 
> > introduction of an artificial "value" property, is 
> problematic because
> it 
> > leads to name conflicts.  We already have this on our list 
> of issues 
> > to
> be 
> > 
> > 
> > addressed in 3.0.  Perhaps we can address these issues 
> together.  One
> idea 
> > 
> > 
> > would be to create a DataObject.getValue() and a 
> > DataObject.setValue(Object x).   We could define this value 
> as follows
> >    a) if DataObject.getType() extends simple content, the 
> value is the 
> > value of the simple context.
> >    b) if the DataObject.getType() does not extend simple 
> content, then 
> > unless the user does something, the DataObject.getValue() 
> returns the 
> > DataObject.
> >    c) the user may call DataObject.setValue(null):  this 
> sets xsi:nil 
> > to
> 
> > true when serialized to XML.
> >    d) unless the type extends simple context, it is an error to set 
> > the "value" of a data object to anything other value (eg, 
> to another 
> > data object).
> > 
> > If we want to seperate the issues, then it seems odd to have 
> > XMLHelper.isNil take a DataObject as a parameter.  Whether 
> something 
> > is nil seems not to be a character of the DataObject, but rather of 
> > the the
> 
> > property where the data object is set.  That is, we can 
> take an object 
> > that is used as the value of a non-nillable property, and set it as 
> > the value of a property that is nillable.  Or the other way 
> around.  
> > This
> sort 
> > 
> > 
> > of leads to the XMLHelper.isNil(DataObject, Property) 
> approach, with 
> > corresponding setter and getter. I don't see the use case 
> as being so 
> > important that we need to add the additional convenience methods.
> > 
> > The suggesting to "project" to a DOM tree is interesting.  I'm 
> > wondering
> 
> > how it differs from simply XMLHelper.save'ing to a 
> DOMResult.  Frank,
> are 
> > you imagining that the resulting DOM tree will be "live", that is, 
> > that changes to the DOM tree will be tracked, and 
> immediately visible 
> > in the original SDO object?  This seems very ambitious!
> > 
> > Best Regards,
> > Ron
> > 
> > 
> > Von: Blaise Doughan [mailto:blaise.doughan@oracle.com]
> > Gesendet: Freitag, 6. Juni 2008 22:25
> > An: Frank Budinsky
> > Cc: James Hart; sdo@lists.oasis-open.org
> > Betreff: Re: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > Hi Frank,
> > 
> > For the following example from your doc (section 2.7), I 
> think there 
> > are
> 
> > two options: 
> > 
> > <query>
> >   <intRange min="1" xsi:nil="true"/>
> > </query>
> > 
> > Option #1 - The property called "intRange" of type 
> "IntegerRange" is 
> > set
> 
> > and null. This option will not round trip, since the "min" 
> property is 
> > lost.
> > Option #2 - The property called "intRange" is set to an instance of 
> > "IntegerRange" and the "min" property is set to "1" and the "value"
> > property is set to null.  This option will round trip.
> > 
> > Then the problem is with the following use case?  Both of 
> the options 
> > below would marshal to the same XML document, but we would need to
> choose 
> > one for the unmarshal operation.
> > 
> > <query>
> >   <intRange xsi:nil="true"/>
> > </query>
> > 
> > Option #1 - The property called "intRange" of type 
> "IntegerRange" is 
> > set
> 
> > and null.
> > Option #2 - The property called "intRange" is set to an instance of 
> > "IntegerRange" and the "min" property is unset, and value 
> property is
> set 
> > to null.  This option will round trip.
> > 
> > ---
> > 
> > I do not believe there is a need for the get/setNil operations.
> > 
> > ---
> > 
> > I see where you are going with the project to Node.class 
> concept.  Our 
> > EclipseLink implementation is built on top of our object-to-XML 
> > mapping
> > (MOXy) technology (which also supports JAXB).  We would offer the 
> > corresponding functionality to our users through our 
> implementation of
> the 
> > 
> > 
> > JAXB Binder (which was designed for just this purpose).  
> The advantage
> of 
> > the JAXB Binder approach is that it provides a specific 
> scope in which
> the 
> > 
> > 
> > objects and the DOM are linked.  If I use marshaller a new DOM is
> produced 
> > 
> > 
> > for each marshal operation, but binder will return the one 
> linked to 
> > my object.
> > 
> > -Blaise
> > 
> > 
> > Frank Budinsky wrote: 
> > Hi James,
> > 
> > Thanks for the quick response. I'm not sure I understand this part:
> > 
> > 
> > When we marshal out then it is a simple matter of checking if the 
> > property isSet() and isNullable() to know if we need to print out 
> > xsi:nil="true".
> > 
> > 
> > In addition to knowing that the property isSet and isNullable, you 
> > need
> to 
> > 
> > 
> > 
> > know if the value is nil ... right? The case where the value is 
> > acutally
> 
> > set to null is easy, but the case that I'm looking for a 
> solution to 
> > is that the value is an object where only attribute properties are 
> > set,
> while 
> > 
> > 
> > 
> > the element content should be xsi:nil. I think this may be 
> an XML-only 
> > concept.
> > 
> > The more I think about this, I'm starting to wonder if this is too 
> > XML-specific to add to SDO? If we introduce an isNil method, like I 
> > suggested, that only covers the read case. We would then 
> want to start 
> > thinking about adding some kind of setNil() method as well, e.g., 
> > xmlHelper.setNil(myDO, "someProperty", true);
> > 
> > So, I'm starting to wonder if an Option 4 that allows XML users to 
> > fall back to something like DOM and then just use it to 
> look for the 
> > xsi:nil attribute, would be a better approach.
> > 
> > For other reasons, I have been thinking about suggesting we 
> add a new 
> > method to DataObject that allows one to project a 
> DataObject to other
> > interfaces:
> > 
> >     <T> T project(Class<T> targetClass);
> > 
> > I had been thinking that such a method could be used to 
> project to a 
> > Sequence "view" of the DataObject (and we could deprecate the
> getSequence 
> > method):
> > 
> >     Sequence sequence = myDO.project(Sequence.class);
> > 
> > or it could be used to project to a static interface 
> (instead of just 
> > casting - this would allow implementation to use a 
> different instance
> for 
> > the static object):
> > 
> >     Company company = myDO.project(Company.class);
> > 
> > and now, I think this could be the way we allow XML users 
> to work with 
> > advanced XML features:
> > 
> >     Node node = myDO.project(Node.class);
> > 
> > What do others think about this suggestion and this issue 
> in general?
> > 
> > Thanks,
> > Frank.
> > 
> > 
> > 
> > 
> > 
> > "James Hart" <James.Hart@Roguewave.Com>
> > 06/04/2008 10:57 AM
> > 
> > To
> > Frank Budinsky/Toronto/IBM@IBMCA, <sdo@lists.oasis-open.org> cc
> > 
> > Subject
> > RE: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > 
> > 
> > 
> > 
> > 
> > Our implementation has custom support for this already.  
> I'll describe 
> > what we do that seems to work well.
> > 
> > In our SDO implementation on our PropertyImpl we support a 
> isNullable 
> > state which defaults to false. It also contains a 
> isNullable() method 
> > that returns this state.  The state can only be set during 
> > construction, but it defaults to false.  On our Impl's for 
> DataFactory 
> > and TypeManager all of our addProperty* methods have an additional 
> > method which includes a isNullable parameter so it can be 
> told to create a nullable property.
> > 
> > Our XSDHelper when constructing types simply creates the property 
> > using the TypeImpl API for addProperty that also exposes the 
> > isNullable parameter.
> > 
> > When we marshal out then it is a simple matter of checking if the 
> > property isSet() and isNullable() to know if we need to print out 
> > xsi:nil="true".  Otherwise we can print out whatever the 
> default value 
> > is.
> > 
> > I'd like to point out it doesn't matter in this case if the 
> Property 
> > is has a type of DataObject or DataObjectType so it is more generic 
> > than the concept of xml's attributes, we just needed this 
> concept to 
> > support these kind of xml documents.
> > 
> > Saying that I don't think we need a special isNil() method, 
> that would 
> > just be icing ;)
> > 
> > I do think that the concept of data being "nill" or 
> nullable for other 
> > data sets than xml is viable.  For example, a DB has 
> nullable columns 
> > and have defaults vs. columns that have defaults and are 
> not nullable 
> > much in the same fashion of nillable attributes in schema.  
> So I would 
> > prefer the benefits of making the concept nillable part of SDO's 
> > properties and not something that is only DAS dependant.
> > 
> >  I can also say option #2 works well because that is 
> essentially what 
> > we do and it allows us to support these concepts in both 
> our XSDHelper 
> > XMLHelper XMLDas and DBDas.  The biggest drawback is that 
> it increases 
> > the size of the in memory for every single property which 
> is a concern 
> > when having to support very large data sets, but I think that 
> > currently is an issue with all of the state information and 
> could be 
> > trivialized and a responsibility  to solve as an 
> implementation issue 
> > and not something that the spec has to solve.
> > 
> >  Thanks,
> >    James
> > 
> > 
> > 
> > -----Original Message-----
> > From: Frank Budinsky [mailto:frankb@ca.ibm.com]
> > Sent: Tuesday, June 03, 2008 7:18 PM
> > To: sdo@lists.oasis-open.org
> > Subject: [sdo] XML Fidelity issue: xsi:nil with attributes
> > 
> > Hi Guys,
> > 
> > I'd like to start discussing some of the XML fidelity issues. The 
> > first one, hopefully easy, is to come up with a way to 
> handle nillable 
> > elements with attributes. The problem is described in 
> section 2.7 in 
> > this doc:
> > 
> > 
> http://www.oasis-open.org/apps/org/workgroup/sdo/download.php/26722/SD
> > O_
> > XML_Issues.doc
> > 
> > Here is my first thoughts on possible solutions:
> > 
> > Option 1: Add a helper method (to XMLHelper or maybe 
> DataHelper if we 
> > think this may not be an XML-only issue) to determine if a 
> value is nil:
> > 
> > boolean isNil(Object value);
> > 
> > This method would return true if value == null or if value is a 
> > DataObject with an xsi:nil tag. Users could use it something like 
> > this:
> > 
> > if (xmlHelper.isNil(myDO.get("someValue"))) {
> >     // someValue is nil
> > }
> > 
> > Option 2: We could have a method that takes a DataObject and a 
> > property path as arguments to determine if a property is 
> nil without 
> > actually getting the value:
> > 
> > boolean isNil(DataObject object, String path);
> > 
> > if (xmlHelper.isNil(myDO, "someValue")) {
> >     // someValue is nil
> > }
> > 
> > If we go with this approach we would probably want 3 methods:
> > 
> > boolean isNil(DataObject object, String path); boolean 
> > isNil(DataObject object, Property property); boolean 
> isNil(DataObject 
> > object, int index);
> > 
> > Option 3: Add the methods to DataObject:
> > 
> > boolean isNil(String path);
> > boolean isNil(Property property);
> > boolean isNil(int index);
> > 
> > if (myDO.isNil("someValue")) {
> >     // someValue is nil
> > }
> > 
> > This is nice and clean but would only make sense if we can think of 
> > other data domains (other than XML) where the concept of nil 
> > (different from
> > null) applies.
> > 
> > Please let me know what you guys think about these 
> suggestions, or if 
> > you have any other ideas.
> > 
> > Thanks,
> > Frank.
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in 
> > OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in 
> > OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in 
> > OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in 
> > OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in 
> > OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in 
> > OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in 
> > OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in 
> > OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> > 
> > 
> > 
> > 
> ---------------------------------------------------------------------
> > To unsubscribe from this mail list, you must leave the 
> OASIS TC that 
> > generates this mail.  You may a link to this group and all 
> your TCs in
> OASIS
> > at:
> > 
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail.  You may a link to this group and all 
> your TCs in OASIS
> at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgr
> oups.php 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe from this mail list, you must leave the OASIS TC that
> generates this mail.  You may a link to this group and all 
> your TCs in OASIS
> at:
> https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
> 
> 
> 


---------------------------------------------------------------------
To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail.  You may a link to this group and all your TCs in OASIS
at:
https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php 



[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]