Notice: This Wiki is now read only and edits are no longer possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.
EclipseLink/DesignDocs/317962/Phase3
Contents
Phase 3 - MOXy Equavilents of JPA Annotations
This phase of development involves providing additional MOXy annotations and XML metadata support equivalent to that of JPA.
Annotations/XML Metadata
The following MOXy annotations/XML metadata will be targeted in this phase:
MOXy Annotation | XML Metadata Tag | Package | Type | Field | Method |
---|---|---|---|---|---|
XmlDiscriminatorNode | xml-discriminator-node | X | |||
XmlDiscriminatorValue | xml-discriminator-value | X |
XmlDiscriminatorNode
Purpose
Provide a means to set the class indicator field name when using inheritance.
Java Metadata
package org.eclipse.persistence.oxm.annotations; @Target({TYPE}) @Retention(RUNTIME) public @interface XmlDiscriminatorNode { String value(); }
XML Metadata
xml-discriminator-node
The xml-discriminator-node
metadata tag will be used to set the class indicator field name when using inheritance. The value will be in the form of an XPath to an attribute, i.e. @xsi:type
.
XML Schema
Following is the proposed XSD change necessary to provide this support:
<xs:element name="java-type"> <xs:complexType> <xs:all> <xs:element ref="xml-type" minOccurs="0"/> <xs:element ref="xml-root-element" minOccurs="0"/> <xs:element ref="xml-see-also" minOccurs="0"/> <xs:element ref="xml-java-type-adapter" minOccurs="0"/> <xs:element ref="xml-class-extractor" minOccurs="0"/> <xs:element ref="xml-properties" minOccurs="0" /> <xs:element name="java-attributes" minOccurs="0"> <xs:complexType> <xs:sequence> <xs:element ref="java-attribute" minOccurs="0" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:all> <xs:attribute name="name" type="xs:string" /> <xs:attribute name="xml-accessor-order" type="xml-access-order" default="UNDEFINED" /> <xs:attribute name="xml-accessor-type" type="xml-access-type" default="PUBLIC_MEMBER" /> <xs:attribute name="xml-customizer" type="xs:string" /> <xs:attribute name="xml-discriminator-node" type="xs:string" /> <xs:attribute name="xml-inline-binary-data" type="xs:boolean" default="false" /> <xs:attribute name="xml-transient" type="xs:boolean" default="false" /> </xs:complexType> </xs:element>
Example:
The following example will demonstrate how a the class indicator field can be set.
Using the xml-discriminator-node
EclipseLink XML metadata tag to set the class indicator field can be accomplished as follows:
<java-type name="org.example.Vehicle" xml-discriminator-node="@vtype"> <xml-root-element name="vehicle-data" /> </java-type>
Setting the class indicator field via Annotations would be accomplished as follows: org.example.Vehicle.java
package org.example; @XmlRootElement("vehicle-data") @XmlDiscriminatorNode("@vtype") class Vehicle { public String model; public String manufacturer; public int topSpeed; }
Testing
This section identifies the test package(s) for each feature outlined on this page.
XML Metadata
XML Metadata | Package |
---|---|
|
Annotations
Annotation | Package |
---|---|
|
Open Issues
This section lists open issues.
Issue# | Description/Notes |
---|---|
1 |
Decisions
This section lists decisions made. These are intended to document the resolution of open issues or constraints added to the project that are important.
Decision# | Description/Notes | Decision |
---|---|---|
1 |