Skip to main content

Notice: this Wiki will be going read only early in 2024 and edits will no longer be possible. Please see: https://gitlab.eclipse.org/eclipsefdn/helpdesk/-/wikis/Wiki-shutdown-plan for the plan.

Jump to: navigation, search

Difference between revisions of "EclipseLink/DesignDocs/277920/Phase2"

m (org.example.customer.Address)
Line 92: Line 92:
  
 
If this is present in the XML then it completely replaces the corresponding annotation.
 
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.
 +
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<xml-bindings
 +
    xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"
 +
    accessor-order="ALPHABETICAL"
 +
    accessor-type="PROPERTY">
 +
    <java-types>
 +
        <java-type
 +
            name="Address"
 +
            accessor-order="UNDEFINED"
 +
            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>
 +
</source>

Revision as of 10:17, 6 July 2009

Phase 2

Provide support for high level metadata.

Annotations

The following annotations will be targetted in this phase:

Annotation Package Type Field Method
XmlAccessorOrder X X    
XmlAccessorType X X    
XmlRootElement   X    
XmlType   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"
    accessor-order="ALPHABETICAL"
    accessor-type="PROPERTY">
    <java-types>
        <java-type 
            name="Address"
            accessor-order="UNDEFINED"
            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>

Back to the top