summaryrefslogtreecommitdiffstats
path: root/sdo-java/branches/sdo-java-M2/sdo/distribution/RELEASE_NOTES.txt
blob: 25ae065c9ff8a905e0efc296b003839d0e15c845 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
What's New in SDO Java M2

  1. `java.io.Serializable` support for `DataObject`s including objects not in a `DataGraph` (TUSCANY-22)
  2. Java code generator improvements
  3. XML Schema generation (TUSCANY-535)
  4. StAX-based Load load and save support (TUSCANY-118)
  5. new SDOUtil methods
  6. CrossScopeCopyHelper (TUSCANY-627)
  7. open content creation API (SDO 2.1 enhancement early implementation - see draft 2.1 spec)
  8. sample programs 
  9. More than 12 new bugfixes 

Details are described below.

SDO Java M2 is a superset of previous SDO Java M1 release.
Anything in M1 is also in M2, but M2 contains features and bugfixes not present in M1 release.

Downloading
  http://incubator.apache.org/tuscany/downloads.html#Apache%20Tuscany%20Java%20Downloads

Compatibility Concerns
  M2 is still on SDO Java specification 2.01 same as M1.
  SDO Java M2 maintains API/SPI compatibility with M1 release, by only adding new functions.
  A program written to the M1 API/SPI can both compile and run using M2 libraries.
  However, a program written for M2 cannot necessarily compile or run against M1 libraries.

Command Line Output Changes
  Although the SDO Java developers try hard to keep output from the command line programs compatible between releases,
  new information sometimes has to be added. This might break scripts that rely on the exact format of the output.
  In M2, for example, SDO static code generator help information is updated as new options available.

New Features

  1. `java.io.Serializable` support for `DataObject`s including objects not in a `DataGraph` (TUSCANY-22)
    DataObject used to be required to put into DataGraph before being Java serialized;
    from M2 on, DataObject can be Java serialized standalone.
    And the data object serialization format conforms to SDO Java specification 2.01.
    At the same time, DataGraph serialization is also working now although whose format is still not compliant yet.

  2. Java code generator improvements
    A new option (-interfaceDataObject) is available to generate interfaces that extend commonj.sdo.DataObject (TUSCANY-254).
    The existed option (-noEMF) pattern has been improved, e.g.,
    inheritance and bidirectional references are now working (sca-core.xsd can be generated).
    On the other hand, generated interfaces now extend java.io.Serializable by default convenient to remote invocation.
 
  3. XML Schema generation (TUSCANY-535)
    XSDHelper used to go only one way that #define methods import models from XML Schema,
    SDO Java M2 has implemented `XSDHelper.generate()` methods to export models as XML Schema.

  4. StAX-based Load load and save support (TUSCANY-118)
    A new helper XMLStreamHelper has been added,
    it's based on Stream API for XML which makes SDO convenient to use in StAX environment.
    On the other hand, StAX load/save is a better-performance alternative sometimes.

  5. new SDOUtil methods

    * SDOUtil.getSubstitutionValues()
     SDO user used to assume the SDO implementation is based on EMF
     and use EMF API/SPI to access substitutable Property since no such API/SPI available in SDO Java M1.
     M2 has provided such non-EMF way to get the Sequence corresponding to a substitutable Property (TUSCANY-502/503)

    * SDOUtil.isRequired()
     Determine if a property is required, that is, minOccurs > 0 (TUSCANY-504)

    * SDOUtil.setRootObject()
     SDO user used to be only able to get the root object of a DataGraph in SDO Java M1,
     M2 has enabled setting the root object of a DataGraph (TUSCANY-512)

    * SDOUtil.getTypes()
     Gets all of the types associated with a uri (TUSCANY-583)

    * SDOUtil.registerDataGraphTypes
     DataObject/DataGraph serialization used to be instances only;
     models are expected on the other endpoint otherwise either anyType will be used to deserialize DataObject/DataGraph
     or ClassNotFoundException will be thrown.
     Even if no ClassNotFoundException, anyType isn't always satisfying.
     SDO Java M2 has enabled models seriallization by registering Types to be serialized along with a DataGraph (TUSCANY-670)

  6. CrossScopeCopyHelper (TUSCANY-627)
    Types are registered within certain scopes (TypeHelpers).
    Two Types from different scopes (TypeHelper) are two different types even if imported from very same source such as XML Schema.
    Some scenario such as local invocation prefers copying to serialization
    which requires copying to use Types from (invocation) destination endpoint instead of the source/original one.
    SDO Java M2 has enabled copying DataObject instances from one TypeHelper to another scope.

  7. open content creation API (SDO 2.1 enhancement early implementation - see draft 2.1 spec)
    * TypeHelper.createOpenContentProperty()
    * TypeHelper.getOpenContentProperty()

  8. sample programs
    * There are currently three groups of samples
     8.1. Simple code snippets located throughout the specifiction with comparative methods for acheiving the same results
         # Create DataObject from XML String
         # Create DataObject from XSD and XML files
         # Access DataObject Properties by name
         # Dynamic "Customer" Type sample
         # Print Properties of DataObject
         # Using XPath
         # Obtaining DataGraph from XML
     8.2. Full examples located within Examples section of specification
         # Access DataObjects using XPath
         # Accessing DataObjects via Property index
         # Accessing the contents of a Sequence
         # Creating DataObject trees from XMLDocuments
         # Creating XML from DataObjects
         # Serializing desearializing a DataObject
         # Using Type and Property with DataObjects
     8.3. Other sample sources such as white papers and online articles
         # Create PurchaseOrder
         # Read PurchaseOrder
         # PurchaseOrder command line

  9. bug fixes
    * DataObject string accessors were not working for XPath segements with @ prefix, e.g. "@property" (TUSCANY-425)
    * string accessors fixed to throw IndexOutOfBounds exception for "property[0]" since index starts with 1 (TUSCANY-475)
    * fixed Date-Type properties (including Day, Date, DateTime, Duration, etc.) that were not working/roundtripping properly (TUSCANY-579/582)
    * dynamically-created global (open content) properties were not serializing properly (TUSCANY-530/531)
    * properties created from XSD attributes now appear, in the Type, in the same order as the attributes in the XSD complexType
    * fixed test harness to allow comments in XML test files (TUSCANY-427)
    * loading XSDs with nillable elements, of built-in types, caused NPE (TUSCANY-676)
    * fixed NPE when loading XSD without targetNamespace (TUSCANY-645)
    * made Type.getProperty(String) implementaion thread safe (TUSCANY-682)
    * support base64Binary and hexBinary XSD types correctly (TUSCANY-685)
    * fixed generation of invalid prefixes in XML serialization (TUSCANY-711)
    * sometimes SDOXMLResourceImpl (instead of XSDResourceImp) was incorrectly used when loading .xsd files (TUSCANY-714)
    * roundtripping an xsd:anyType via XML using XMLStreamHelper gave wrong kind of DataObject (TUSCANY-755)
    * cardinality of global elements should be adaptive according to usage context (TUSCANY-115)