Next in thread → Next in month →

RE: AW: AW: [sdo] ISSUE 133: New proposal

From
"Qadu Oreotiuc-Oietro"
Date
2008-08-27T02:52:38+00:00
ID
20080826195138453.00000003536@RADUP02
Thread
RE: AW: AW: [sdo] ISSUE 133: New proposal
Hi Ron,

 

I think that under this form, point 1 doesn't make any 
sense and should be removed. Point 4 has good wording on the other hand but it 
comes into contradiction with the SDO Java spec that doesn't require inner 
classes, and the sdoj:nestedInterfaces annotation. So the SDO Java spec needs to 
be modified if we agreed to go with inner classes for Schema anonymous types 
(which is fine with me, by the way).

 

Radu

  

  
  From: Bryan Aupperle 
  [mailto:] 
Sent: Tuesday, August 26, 2008 1:13 
  PM
To: 
Subject: Re: AW: AW: [sdo] 
  ISSUE 133: New proposal

  

If we wanted to be a bit more 
  language inclusive, we could say something like: 
When generating a static SDO in an implementation language that 
  supports a concept of locally scoped types, such as Java's inner classes 
  or C++'s nested 
  classes, then the anonymous type is scoped to 
  the smallest available enclosing structure. 

Bryan Aupperle, Ph.D.
STSM, WebSphere Enterprise 
  Platform Software Solution Architect

Research Triangle Park, 
   NC 
+1 919-254-7508 (T/L 444-7508)
Internet Address: 
   

  
    
    

      "Barack, Ron" 
        <> 
        
08/26/2008 01:25 PM 

      
        
          
          

            
              
To

            <> 
          

            
              
cc

            
          

            
              
Subject

            AW: AW: [sdo] ISSUE 133: New 
              proposal

        
          
          

            
            

Hi Everyone,

Based on today's discussion, here is my wording for 
  these 5 points.  As I said, it's hard to describe the inner class 
  behavior in a language neutral way, although I certainly support the idea 
  here.  Any help clarifying the wording would be much 
  appreciated.

Ron
____________________________________________

These 
  principles apply when generating static SDOs from an XSD: 

1.   
                The identifiers used in the 
  source code representation of SDO Types and their properties must be unique 
  and non-null.
2.                 
  SDO does not specify name any mangling but enables and sometimes requires name 
  overrides though annotations.
3.             
      If the normal generation of source code from an XSD would result 
  in conflicting names, the XSD declaration must contain annotations to override 
  the default name.
4.               
    XSD allows for anonymous types to be defined within an enclosing 
  definition. When generating a static SDO in an implementation languagethat 
  supports a concept of locally scoped types, such as Java's inner classes, then 
  the anonymous type is scoped to the smallest available enclosing structure. 
   For instance, in Java, the anonymous type is by default an inner class 
  within the class that represents the containing type (see the SDO@Java 
  specification for details).  To achieve global visibility or cross 
  language consistency when generating static SDOs from an anonymous types, 
  annotations must be used to specify the name of the static SDO.
5.   
                Implementations may provide 
  behavior (in a product-specific fashion)  equivalent to annotations to 
  automatically solve such problems as duplicate names.  This is logically 
  equivalent to the implementation creating an Annotated Schema (AS) and then 
  creating SDO metadata from the Annotated Schema. An implementation that 
  provides this behavior should also provide a means to generate the AS. The 
  generated AS should be annotated so that another implementation can define SDO 
  Types and Properties from the generated schema without further name mangling. 
  Having such an annotated schema ensures portability of Types and Properties 
  (and generated code) across all implementations. 
  
____________________________________________________

-----Ursprüngliche 
  Nachricht-----
Von: Barack, Ron 
Gesendet: Freitag, 22. August 2008 
  09:47
An: Barack, Ron; Frank Budinsky; 
Betreff: 
  AW: AW: [sdo] ISSUE 133: New proposal

Hi,

Actually, regarding 
  point 4, we probably want a solution that is consistant with what has been 
  decided in the JSR 235 group.  That would mean something like:

4. 
    XSD allows for anonymous types to be defined within an enclosing 
  definition.  When generatic static SDO from an anonymous type, 
  annotations must be used to specify the name of the static SDO.

And 
  then point 5 allows the implementation to determine the behavior if the user 
  does not specify the 
  annotation.

Ron

 

-----Ursprüngliche 
  Nachricht-----
Von: Barack, Ron [mailto:] 
  
Gesendet: Freitag, 22. August 2008 02:20
An: Frank Budinsky; 
  
Betreff: AW: AW: [sdo] ISSUE 133: New 
  proposal

Hi Frank,

I only brought up sdoj:javaName to motivate 
  the change I made to the text: rather than calling out sdoName by name, I 
  refer simply to the need to annotate the XSD, not to any specific annotation. 
   For the record, the default javaName is the sdoName, so that if the user 
  only uses the javaName annotation if he does not want expect to be confused by 
  having different names, otherwise, he gets the sdoName, as you say.  I 
  think, in general though, Java users expect camelCase.  Java programmers 
  (and automated style checkers!!) expect getCustomerAddress not 
  get_customer_address or the like, and in such cases getting the Java names to 
  be the SDO name would be a breaking change.  

I'm not so happy to 
  be using aliasName to solve these renaming issues.  This metaproperty was 
  thought of as something that the user sets (and expect to see exactly the 
  values he put there).  It wasn't really intended as something that the 
  SDO implementation fills up to solve problems in SDOPath.  I think we can 
  get away with mis-using aliasName in some special cases, because I think very 
  few users are actually using it, anyway, but we shoulding be saying that 
  anything with a "." or a "_" in it automatically gets aliasNames.

In 
  any case, this text should be generic enough that we can avoid such detailed 
  discussions for now, and return to the java name issue once we get the CD 
  out.

I've been thinking about Radu's comment, that there should be only 
  one XSD mapping and I realized that the restrictions in the text do not come 
  from reading in the XSD, the come from the need to generate Java classes from 
  the Types.  In out implementation, which does not attempt to mangle away 
  name conflicts, the XSD is read and exactly the same types are defined in both 
  cases.  If there are name conflicts, you cannot generate Java from the 
  types, but the behavior of XSDHelper.define is always the same.  One 
  problem I have with your text is that it really does require a different type 
  be generated depending on your use case.  This is also a reason why I 
  don't think these "principles", which basically define the limits when 
  generating source code, should be in the chapter that says how 
  XSDHelper.define works.

Regarding point 4...what behavior would you 
  suggest?  The only possible alternative is to say that annonymous types 
  must always be annotated.  I could live with this, but I would also like 
  to point out that, in fact, you never know when a duplicate name might occur, 
  and you never really reliable know when to annotate.  For instance, you 
  could have a type with an <element ref="tns:bar"> property, but no name 
  conflict.  Only latter, in a different XSD, you could have a type that 
  extends this type, with an <element name="bar"> property.

Good 
  night.
Ron

________________________________

Von: Frank 
  Budinsky [mailto:]
Gesendet: 
  Do 21.08.2008 20:35
An: 
Betreff: Re: AW: [sdo] 
  ISSUE 133: New proposal

Hi Ron,

We've also thought that 
  something like sdoj:javaName would be useful. It
makes the most sense if 
  you're defining types that are to be used with
multiple language bindings. 
  Without the ability to customize the names for
a specific static language, 
  the SDO name needs to be something that will
work for all languages. That 
  said, we also think that things are
definitely simpler for the user if we 
  say that the language names are the
same as the SDO names. Users then only 
  need to keep track of 2 potentially
different names, instead of 3. I think 
  the approach we've been leaning
towards is to keep the XML name as an 
  aliasName and say that the
langauge-compatible name is the SDO name. If you 
  think of it from a Java
programmers point of view, it would be nice if the 
  name passed into
DataObject.get() and the static method names (based on the 
  standard
JavaBean patterns) were the same. The aliasName solves the XML 
  Fidelity
issue.

To summarize, what I'm saying is that I have mixed 
  feelings about the
sdoj:name approach but I think you should open a 
  separate issue if you
want to propose it.

Regarding item #4 
  below,

> 4.               If an 
  XSD type definition has no name, its name is the
> same as the next 
  named enclosing declaration. If that is a duplicate
then
> sdo:name 
  must be used.

The problem with this is that we never know if there may 
  be a duplicate
(it may come later), so we can never give it the name of the 
  enclosing
decl. Do you disagree?

Frank.

"Barack, Ron" 
  <> wrote on 08/21/2008 11:09:55 AM:

> Hi 
  Frank, everyone,
>
> One of the extensions in our implementation 
  is that we have
> introduced an sdoj:JavaName as a way for the user to 
  specify a Java
> name that is different from the SDO name.   We 
  also apply the JaxB
> algorithm to construct the Java names 
  automatically, which handles
> problems like the "." character, and also 
  puts things nicely in
> camelCase, which is what Java users expect, but 
  logically this is
> equivalent to specifying sdoj:JavaName.  I 
  think such behavior will
> be less surprising than to be changing the 
  SDO name in such cases,
> especially if there is more than one 
  implementation language
> involved (each could have ist own rules wrt 
  identifiers).  In any
> case, having sdoj:javaName just seems 
  symmetrical with having sdox:
> xmlName.  It is also consistent 
  with sdoj:JavaClass... I mean, why
> do we allow renaming of Types/ 
  Classes and not allow renaming of
Properties?
>
> But we are 
  currently discussing the Core SDO Spec, the Java-Specific
> algorithms 
  and annotations should be described in the corresponding
> chapters of 
  the SDO@Java Spec.  And really the issue is what we are
> going to 
  say about name mangling.  The point is, I don't want to be
> 
  specific that sdo:name is what is used to resolve conflicts and make
> 
  things complient with the language's requirements.  It's only 
  clear
> that the XSD should be annotated.
>
> For the 
  reasons I gave above, I don't think name mangling (of the
> SdoName) is 
  warrented because of implementation language
> requirements.  The 
  only real reasons for mangling are dealing with
> conflicting names in 
  the generated SDO type.
>
> I would really very much prefer that 
  the spec remain silent on the
> subject of name mangling.  It's an 
  allowed way for an implementation
> to deal with conflicting local 
  names, but that's an implementation
> detail.  But in the spec, we 
  don't have to concern ourselves with
> such details, but rather with the 
  behavior that an implementation
> must provide.  And I think there 
  is agreement that in case of such
> conflicts, there is no portable way 
  to address such properties using
> the SdoName alone...either because 
  the name is not unique or because
> the spec's not going to tell the 
  user what name is.
>
> Let me make a pass at Radu's 
  points:
>
> 
  _______________________________________________
> These principles apply 
  when generating static SDOs from an XSD:
>
> 1.   The 
  identifiers used in the source code representation of SDO
> Types and 
  their properties must be unique and non-null.
> 2.   SDO does not 
  specify name any mangling but enables and
> sometimes requires name 
  overrides though annotations.
> 3.   If the normal generation of 
  source code from an XSD would
> result in conflicting names, the XSD 
  declaration must contain
> annotations to override the default 
  name.
> 4.   If an XSD type definition has no name, its name is the 
  same as
> the next named enclosing declaration. If that results in a 
  conflict,
> then annotations must be used to override the name.
> 
  5.   Implementations may provide behavior (in a product-specific
> 
  fashion)  equivalent to annotations to automatically solve such
> 
  problems as duplicate names.  This is logically equivalent to the
> 
  implementation creating an Annotated Schema (AS) and then creating
> SDO 
  metadata from the Annotated Schema. An implementation that
> provides 
  this behavior should also provide a means to generate the
> AS. The 
  generated AS should be annotated so that another
> implementation can 
  define SDO Types and Properties from the
> generated schema without 
  further name mangling. Having such an
> annotated schema ensures 
  portability of Types and Properties (and
> generated code) across all 
  implementations.
> 
  _________________________________________________
>
> Editorially, 
  I don't think these fit very well in Chapter 9: this is
> the only place 
  where we would talk about static SDOs and generating
> static SDOs in 
  chapter 9... If we really want to include this text,
> we should bring 
  back chapter 4, per my earlier proposal.
>
>
> 
  Ron
>
>
>
> -----Ursprüngliche Nachricht-----
> 
  Von: Frank Budinsky [mailto:]
> 
  Gesendet: Mittwoch, 20. August 2008 18:23
> An: 
  
> Betreff: Re: [sdo] ISSUE 133: New 
  proposal
>
> As we discussed in yesterday's TC call, SAP and IBM 
  (at least, but maybe

> others) would like to relax the duplicate 
  names requirement somewhat.
> Here's a modified version of Radu's 
  proposed section 7.2.2 that
hopefully
> will be acceptable to 
  everybody.
>
> Frank.
>
> 7.2.2 XSD, SDO, and Source 
  Code Names
>
> In most cases, the names in XSD, SDO, and the 
  source code are identical.

> Some XSD constructs, however, produce 
  conflicting names (duplicates) in
> SDO or names which are not legal 
  identifiers in some implementation
> languages (for example, names with 
  "." characters). If static SDO is
> required, all SDO Type names in a 
  URI and all Property names in
> Type.getProperties() must be unique and 
  must be valid identifiers in the

> desired implementation 
  language(s). Annotations (sdo:name) in the XSD
can
> be used to 
  change names when necessary.
>
> If a Type or Property is renamed, 
  it may in some cases be desirable to
> also provide access to the 
  original name using an aliasName. For
example,
> to support a static 
  Java implementation class, a name such as "a.b" must

> be changed to 
  a legal Java identifier (for example, "a_b"). To provide
> good XML 
  fidelity, the original name may still be provided as an
aliasName
> 
  so that calls to DataObject.get("a.b") would also be supported. If 
  there

> are duplicates within a set of names and aliasNames (for 
  example,
> Properties of a Type), the first one will take 
  precedence.
>
> In situations such as duplicate names where 
  annotations are not provided

> by the user, implementations may 
  provide behavior (in a product-specific

> fashion) equivalent to 
  annotations to automatically change names if
> necessary. SDO does not 
  specify any specific name mangling algorithm. If

> predictable, 
  implementation independent, names are desired, an annotated

> schema 
  (AS) must be used. Implementations which provide automatic
> mangling, 
  may optionally also provide a means to generate an AS which
> could be 
  used to ensure portability of its Types and Properties (and
> generated 
  code) to other 
  implementations.
>
>
>
>
>
> "Radu 
  Preotiuc-Pietro" <>
> 08/18/2008 
  10:24 PM
> Please respond to
> "" 
  <>
>
>
> To
> 
  "" <>
> 
  cc
>
> Subject
> [sdo] ISSUE 133: New 
  proposal
>
>
>
>
>
>
> Hello 
  everyone,
>
> As discussed in last week's call, I put together a 
  simple proposal
> regarding moving some of the text from the SDO 2.1.1's 
  chapter 4 to
> chapter 9.
>
> Proposal:
> Insert a new 
  section in chapter 9, 9.2.2 (7.2.2 in the SDO 3 draft):
>
> 7.2.2 
  XSD, SDO, and Source Code Names
> In most cases, the names in XSD, SDO, 
  and the source code are identical.

>
> When they are not 
  identical, an annotated XSD declares the SDO names.
The
> names in 
  SDO and the implementation language are identical. The
following
> 
  are the naming rules.
> 1.             
    All SDO Type names in a URI and all Property names in
> 
  Type.getProperties() must be unique and non-null.
> 2.     
            SDO does not specify name any mangling but 
  enables and
> sometimes requires name overrides with sdo:name
> 3. 
                If an XSD declaration would 
  result in a duplicate name,

> sdo:name must be specified in the XSD 
  file.
> 4.               If an XSD 
  type definition has no name, its name is the
> same as the next named 
  enclosing declaration. If that is a duplicate
then
> sdo:name must be 
  used.
> 5.    Implementations may provide behavior (in a 
  product-specific
fashion)
> equivalent to annotations to 
  automatically solve such problems as
> duplicate names.  This is 
  logically equivalent to the implementation
> creating an Annotated 
  Schema (AS) and then creating SDO metadata from
the
> Annotated 
  Schema. An implementation that provides this behavior should
> also 
  provide a means to generate the AS. The generated AS should be
> 
  annotated so that another implementation can define SDO Types and
> 
  Properties from the generated schema without further name 
  mangling.
Having
> such an annotated schema ensures portability of 
  Types and Properties
(and
> generated code) across all 
  implementations.
>
> Thanks,
> Radu
>
>
> 
  ---------------------------------------------------------------------
> 
  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:
> 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.  Follow this link to 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.  Follow this link to 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.  Follow this link to 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.  Follow this link to 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.  Follow this link to all your TCs in OASIS 
  at:
https://www.oasis-open.org/apps/org/workgroup/portal/my_workgroups.php
Next in thread → Next in month →