Jump to: navigation, search

EclipseLink/DesignDocs/277920/Phase2

Phase 2 - High Level Metadata

Provide support for high level metadata.

Annotations

The following annotations will be targetted in this phase:

Annotation XML Metadata Tag Package Type Field Method
XmlAccessorOrder xml-accessor-order X X    
XmlAccessorType xml-accessor-type X X    
XmlRootElement xml-root-element   X    
XmlType xml-type   X    

Java Metadata

The following example will demonstrate how these annotations can be applied to Java classes:

org.example.customer.package-info.java

@XmlAccessorOrder(XmlAccessOrder.ALPHABETICAL)
@XmlAccessorType(XmlAccessType.PROPERTY)
package org.example.customer;
 
import javax.xml.bind.annotation.XmlAccessOrder;
import javax.xml.bind.annotation.XmlAccessorOrder;
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;

org.example.customer.Address

package org.example.customer;
 
@XmlAccessorOrder(XmlAccessOrder.UNDEFINED)
@XmlAccessorType(XmlAccessType.FIELD) 
@XmlType(
    factoryClass=Factory.class, 
    factoryMethod="createAddress", 
    name="address-type", 
    namespace="urn:customer", 
    propOrder={"street", "city"})
@XmlRootElement(name="address", namespace="urn:customer")
public class Address {
 
    private String street;
    private String city;
 
    public String getStreet() {
        return street;
    }
 
    public void setStreet(String street) {
        this.street = street;
    }
 
    public String getCity() {
        return city;
    }
 
    public void setCity(String city) {
        this.city = city;
    }
 
}

XML Metadata

xml-accessor-order

If this is present in the XML then it completely replaces the corresponding annotation.

xml-accessor-type

If this is present in the XML then it completely replaces the corresponding annotation.

xml-root-element

If this is present in the XML then it completely replaces the corresponding annotation.

xml-type

If this is present in the XML then it completely replaces the corresponding annotation.

org/example/customer/eclipselink-oxm.xml

This XML file represents metadata overrides for classes in the "org.example.customer" package.

<?xml version="1.0" encoding="UTF-8"?>
<xml-bindings 
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
    xml-accessor-order="ALPHABETICAL"
    xml-accessor-type="PROPERTY">
    <java-types>
        <java-type 
            name="Address"
            xml-accessor-order="UNDEFINED"
            xml-accessor-type="FIELD">
            <xml-type
                factoryClass="Factory.class"
                factoryMethod="createAddress"
                name="address-type"
                namespace="urn:customer" 
                propOrder="street city"/>
            <xml-root-element 
                name="address"
                namespace="urn:customer"/>
        </java-type>
    </java-types>
</xml-bindings>