Skip to main content

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.

Jump to: navigation, search

EclipseLink/DesignDocs/317962/Phase2.1

< EclipseLink‎ | DesignDocs‎ | 317962
Revision as of 10:30, 27 July 2010 by Unnamed Poltroon (Talk) (xml-property)

Phase 2.1 - Additional MOXy external metadata support

This phase of development involves providing additional MOXy external metadata support that will allow configuration similar to that of deployment XML

Xml Metadata Tags

The following Xml metadata tags will be targeted in this phase:

XML Metadata Tag MOXy Annotation Package Type Field Method
xml-class-extractor XmlClassExtractor   X    
xml-property XmlProperty   X X X
xml-transformation XmlTransformation     X X
xml-read-transformer XmlReadTransformer     X X
xml-write-transformer XmlWriteTransformer     X X

xml-class-extractor

Example

The following example will demonstrate how the xml-class-extractor can be applied.

Setting xml-class-extractor via EclipseLink XML metadata can be accomplished as follows:

<java-type name="org.example.Employee">
    <xml-class-extractor class="org.example.MyClassExtractor" />
</java-type>

xml-property

Purpose

The xml-property element provides a means to set a property on a mapping or descriptor.

XML Schema

Following are the proposed schema structures for xml-property:

<xs:element name="xml-property" type="xml-property" />
<xs:complexType name="xml-property">
    <xs:attribute name="name" type="xs:string" use="required" />
    <xs:attribute name="value" type="xs:string" use="required" />
    <xs:attribute name="value-type" type="xs:string" />
</xs:complexType>

An element ref to the new global xml-property element will be added to:

  • java-type
  • xml-any-attribute
  • xml-attribute
  • xml-any-element
  • xml-element
  • xml-elements
  • xml-element-ref
  • xml-element-refs
  • xml-inverse-reference
  • xml-value
  • xml-transformation

Example: type-level xml-property

The following example will demonstrate how a type-level xml-property can be applied.

Setting xml-property on a type via EclipseLink XML metadata can be accomplished as follows:

<java-type name="org.example.Employee">
    <xml-property name="identifier" value="101" value-type="Integer.class" />
    <xml-property name="isTrue" value="false" value-type="Boolean.class" />
</java-type>

Example: property-level xml-property

The following example will demonstrate how a property-level xml-property can be applied.

Setting xml-property on a property via EclipseLink XML metadata can be accomplished as follows:

<java-type name="org.example.Employee">
    <java-attributes>
        <xml-element java-attribute="myelement">
            <xml-property name="isAttribute" value="false" value-type="Boolean.class" />
            <xml-property name="comment" value="this is an element" value-type="String.class" />
        </xml-element>
    </java-attributes>
</java-type>

xml-transformation

Following is the proposed schema structure for xml-transformation:

<xs:element name="xml-transformation" substitutionGroup="java-attribute">
  <xs:complexType>
    <xs:complexContent>
      <xs:extension base="java-attribute">
        <xs:all>
          <xs:element name="xml-read-transformer" type="xml-read-transformer"/>
          <xs:element name="xml-write-transformer" type="xml-write-transformer" minOccurs="0" maxOccurs="unbounded"/>
          <!-- xs:element name="xml-accessor-type" type="xml-access-type" minOccurs="0"/ -->
          <xs:element name="xml-property" type="xml-property" minOccurs="0" maxOccurs="unbounded"/>
          <xs:element name="xml-access-methods" type="xml-access-methods" minOccurs="0"/>
        </xs:all>
        <xs:attribute name="name" type="xs:string" use="required"/>
        <!-- xs:attribute name="fetch" type="orm:fetch-type"/ -->
        <xs:attribute name="optional" type="xs:boolean" default="false"/>
        <xs:attribute name="xml-accessor-type" type="xml-access-type" minOccurs="0" default="PUBLIC_MEMBER"/>
        <xs:attribute name="mutable" type="xs:boolean" default="false"/>
        <xs:attribute name="attribute-type" type="xs:string" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:element>

xml-read-transformer

Following is the proposed schema structure for xml-read-transformer:

<xs:complexType name="xml-read-transformer">
  <xs:attribute name="transformer-class" type="xs:string"/>
  <xs:attribute name="method" type="xs:string"/>
</xs:complexType>

xml-write-transformer

Following is the proposed schema structure for xml-write-transformer:

<xs:complexType name="xml-write-transformer">
  <xs:attribute name="xml-path" type="xml-path"/>
  <xs:attribute name="transformer-class" type="xs:string"/>
  <xs:attribute name="method" type="xs:string"/>
</xs:complexType>

Example

The following example will demonstrate how xml-transformation can be applied.

Setting xml-transformation via EclipseLink XML metadata can be accomplished as follows:

<java-type name="org.example.Employee">
    <java-attributes>
        <xml-transformation java-attribute="hours" optional="true">
            <xml-read-transformer transformer-class="org.example.NormalHoursTransformer" />
            <xml-write-transformer xml-path="normal-hours/start-time/text()" transformer-class="org.example.StartTimeTransformer"/>
            <xml-write-transformer xml-path="normal-hours/end-time/text()" transformer-class="org.example.EndTimeTransformer"/>
            <xml-access-methods get-method="getNormalHours" set-method="setNormalHours" />
        </xml-transformation>
    </java-attributes>
</java-type>

Back to the top