[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: [sca-j] ISSUE-179: Need type support for @Property when usedwith SDO
On Friday's call I took an action to see whether JAXB annotations can be
used to override the default JAXB mapping from a Java property type
to a schema type.
The answer is that this can be done with the @XmlJavaTypeAdapter annotation.
If there is a property whose Java type is the interface DataObject and it
needs to be mapped to a specific schema type such as "address", the following
steps are needed:
1. Create an xsd file for the "address" schema type.
2. Generate a Java class Address from this xsd file using JAXB.
3. Create a JAXB adapter class to specify the property mapping, for example:
public class AddressAdapter extends XmlAdapter<Address, DataObject> {
public DataObject unmarshal(Address value) {
// If the SCA runtime will use the JAXB unmarshaller to convert
// the property value to a Java object, this method needs to
// contain code to create an instance of DataObject from an Address
// object passed in by the JAXB unmarshaller. If the property
// conversion will be done in some other way (e.g., by SDO), this
// method can just return null.
}
public Address marshal(DataObject value) {
return null; // SCA properties are never converted from Java to XML
}
}
4. Annotate the property whose Java type is DataObject with the
annotation @XmlJavaTypeAdapter(AddressAdapter.class)
A separate adapter class is required for every schema type that is a possible
mapping target for the property.
If the property needs to be mapped to a specific schema element instead of
a schema type, the steps are the same except that an "address" schema element
is used in step 1, and an additional annotation @XmlElement(name="address")
is used on the property in step 4.
If the property needs to be mapped to a schema <any> element, steps 1, 2 and
3 are not needed. In step 4, the annotation @XmlAnyElement is used on the
property instead of @XmlJavaTypeAdapter.
I have verified all of the above with some simple test code.
Simon
David Booz wrote:
> http://www.osoa.org/jira/browse/JAVA-179
>
> Dave Booz
> STSM, BPM and SCA Architecture
> Co-Chair OASIS SCA-Policy TC and SCA-J TC
> "Distributed objects first, then world hunger"
> Poughkeepsie, NY (845)-435-6093 or 8-295-6093
> e-mail:booz@us.ibm.com
>
> Inactive hide details for David Booz---08/24/2009 04:16:58 PM---TARGET:
> Java CAA CD03 and Java POJO CD01 DESCRIPTION:David Booz---08/24/2009
> 04:16:58 PM---TARGET: Java CAA CD03 and Java POJO CD01 DESCRIPTION:
>
>
> From:
> David Booz/Poughkeepsie/IBM@IBMUS
>
> To:
> sca-j@lists.oasis-open.org
>
> Date:
> 08/24/2009 04:16 PM
>
> Subject:
> [sca-j] NEW ISSUE: Need type support for @Property when used with SDO
>
> ------------------------------------------------------------------------
>
>
>
> TARGET: Java CAA CD03 and Java POJO CD01
>
> DESCRIPTION:
> SDO DataObject can be mapped to any XML schema type, and therefore
> literally <any> as well. There is no way to specify the concrete XML
> type of a Java property who's Java type is SDO DataObject.
>
> PROPOSAL:
> Will be attached to JIRA once the issue is logged.
> Basically, the proposal will introduce two new attributes on @Property,
> xmlType (for specifying the XML schema type) and xmlElement (for
> specifying an XML global element that denotes the type). The new
> attributes are mutually exclusive.
>
>
> Dave Booz
> STSM, BPM and SCA Architecture
> Co-Chair OASIS SCA-Policy TC and SCA-J TC
> "Distributed objects first, then world hunger"
> Poughkeepsie, NY (845)-435-6093 or 8-295-6093
> e-mail:booz@us.ibm.com
>
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]