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: AW: AW: [sdo] Proposal for Static SDOs

Hi Ron,

What role do you see facets playing? 
  1. Fail fast validation (i.e. set a string that is too long or add beyond the max size of a list, then immediately throw an exception)?
  2. On demand validation (create a validator class that you can use to confirm the object is valid)?
  3. More metadata for better schema generation?
In JAXB we found more often than not the XML schemas users were using was more of a rough guideline of how the XML should look as opposed to the exact specifications.  Where validation could occur in JAXB the spec group added plenty of validation event handlers where users could programmatically choose to ignore them.   If we supported fail fast validation in SDO, we would also need the mechanisms to allow users to override this behaviour.

JAXB had support for on demand validation, but it was deprecated in JAXB 2.0, ultimately all the participants agreed that nobody was using this feature.  In the almost 3 years since the release of JAXB 2, I haven't had a customer ask for this functionality back.

In terms of schema generation (from a JAXB perspective), Java users have different expectations of XML schema than XML users do.  JAXB Java users want an XML schema they can use with Web Services, they rely on Java typing to constrain there model.  They choose int/long/float to constrain their numeric types instead of relying on maxInclusive/minInclusive.


Barack, Ron wrote:
7C3EF93EEBC6EB4A8B4470853DE86566706F9D@dewdfe18.wdf.sap.corp" type="cite">
Hi Blaise,
From Section 1.3
I agree, interfaces are the standard java construct for static SDOs, and I think any clients that care about portability have to use them only.  The mapping from SDO non-datatype Type to interface is established at least since SDO 2, and I did not intentionally weaken this.  In this paragraph, I wanted to say that we are not standardizing that java interfaces/DynamicProxy always be used, eg, clients should not rely on there being a client proxy implemention.  This allows implementation to chose other means of implementing the interface (eg, a generated implementation class), and opens the doors to other types of static SDOs, eg, POJOs or the generated class itself.
Section 1.7.4 - @SdoProperty
My intention was that @SdoProperty would only be necessary if the default mapping needed to be modified (eg, to set the containment behavior).  We want unannotated interface to be usable, after all.  On the other hand, I think @SdoTransient would only make sense if we were dealing with an annotated (POJO) class.  On a Java interface (that is being implemented using a DynamicProxy, say), it wouldn't make any sense.  And since interfaces are our only standard for static SDOs, having something like @SdoTransient seems like something that should be left to be a vendor extension.  On the other hand, if we standardize bytecode weaving as something that must be supported, then you are right, we need @SdoTransient.
Section 1.7.6 - @SdoFacets
Using JSR-303 is a great idea, and I will try to update the proposal accordingly.  I cases where the JSR does not provide an annotation that maps 100% to an XSD restriction, how do you see proceeding?  Should we define our own annotatins, eg, commonj.sdo.validation.Pattern, commonj.sdo.validation.MinExclusive?  What about annotations by the JST that do not match XSD restrictions, like @NotNull. 
Really, the fundamental problem here is that we don't have any standard SDO model for restrictions/facets.  I our implementation we have a bunch of open content properties used for this purpose.   Do you agree we should standardize this?
Best Regards,

Von: Blaise Doughan [mailto:blaise.doughan@oracle.com]
Gesendet: Freitag, 13. Februar 2009 21:16
An: Barack, Ron
Cc: sdo@lists.oasis-open.org
Betreff: Re: AW: [sdo] Proposal for Static SDOs

Hi Ron,

Below are some initial comments, more to follow.

From Section 1.3

"The implementation of the returned DataObject MAY be a dynamic proxy, the result of byte code enhancement or weaving of a POJO JavaBean or a class that was generated during the application’s build process."

Thinking ahead to when the HelperContext creation issue is solved, and users can freely switch between SDO implementations won't the only portable approaches be to use only interfaces and dynamic proxy objects, or produce impl classes using only byte codes?  I'm not saying this is bad, only that this appears to be what needs to happen.

Section 1.7.3 - @SchemaInfo
Still working on comments for this one.

Section 1.7.4 - @SdoProperty
Does an accessor need an @SdoProperty annotation to be included as a property?  If not can we provide an annotation like @SdoTransient to prevent some accessors from being converted to properties?

Section 1.7.6 - @SdoFacets
Do we need to define our own annotations or can we leverage JSR-303 Bean Validation?


Barack, Ron wrote:
7C3EF93EEBC6EB4A8B4470853DE865666C77F9@dewdfe18.wdf.sap.corp" type="cite">
Hi Frank,

Thanks for bringing this up, since I somehow left it up of my "main points" presentation.

There may need to be wording changes in the proposal, but my intention was:

SDO URI -> Java Package:  Use JAX-B name-mangling.
Java Package -> SDO URI:  uri = package.getName().

The disadvantage of the first rule is that when generating POJOs using JAXB and static SDOs from the same XSD, the default behavior will be to overwrite the classes.  On the other hand, it save us from having to come up with a new algorithm.  

I looked through the JAXB spec and I didn't find any behavior at all for describing the other direction.  I don't like the idea of using the "" namespace.  An important use case for us is going from unannotated classes to a reasonable SDO model.  Using the "" package would mean that the class names have to be unique (over all packages), which I think is an unreasonable restriction.

The problem with the rule in my proposal is that the URI is not a legal URI in XML.  This didn't really bother me, since it's still a legal SDO URI.  The WebBeans approach sounds like a reasonable improvement on the proposal I sent out.


-----Ursprüngliche Nachricht-----
Von: Frank Budinsky [mailto:frankb@ca.ibm.com] 
Gesendet: Dienstag, 10. Februar 2009 21:02
An: sdo@lists.oasis-open.org
Betreff: Re: [sdo] Proposal for Static SDOs

Hi Ron,

Regarding the package name to/from URI mapping, your document says they're 
the same value, but that won't work. For example: "http://a/b/c" is not a 
valid package name. I thought we were thinking about using the JAX-B 
mapping rule for URI -> package name. In the other direction (package name 
-> URI) JAX-B just uses "" for the URI by default (if there is no 
annotation). Is that what we want to do as well? I heard that the WebBeans 
spec is proposing a Java to XML namespace mapping of the following form: "
urn:java:<package qualified Java Class>". Seems kind of strange, but maybe 
it's a good idea to make SDO3 and WebBeans behave in the same way.


"Barack, Ron" <ron.barack@sap.com> 
02/09/2009 06:52 AM


[sdo] Proposal for Static SDOs

<<Proposal for Static SDOs.doc>> <<Static SDO.ppt>> 
Hi Everyone, 
Here is the proposed wording for Chapter 3 of the Java Spec, and a PPT 
describing what I think are the highlights and main discussion points of 
the proposal.  Comments of course welcome.  Hopefully, everyone will have 
time to review this before next weeks virtual F2F.

Ron [attachment "Proposal for Static SDOs.doc" deleted by Frank 
Budinsky/Toronto/IBM] [attachment "Static SDO.ppt" deleted by Frank 
To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail.  Follow this link to all your TCs in OASIS at:

To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail.  Follow this link to all your TCs in OASIS at:

To unsubscribe from this mail list, you must leave the OASIS TC that
generates this mail.  Follow this link to all your TCs in OASIS at:


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