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

Difference between revisions of "EclipseLink/DesignDocs/293925/MOXyExtensions/XMLDirectMapping"

(The following information must be configurable via XML metadata)
Line 35: Line 35:
 
</source>
 
</source>
  
== Example: Attribute mapping ==
+
== Example ==
The following example will demonstrate how to configure an XML direct mapping for an attribute via XML metadata.
+
The following example will demonstrate how to configure XML direct mappings via XML metadata.
 +
 
  
 
=== org.example.Employee.java  ===
 
=== org.example.Employee.java  ===
Line 44: Line 45:
 
public class Employee {
 
public class Employee {
 
     public int empId;
 
     public int empId;
 +
    public String firstName;
 +
    public String lastName;
 +
    public String projectName;
 
}
 
}
 
</source>  
 
</source>  
Line 50: Line 54:
 
<source lang="xml">
 
<source lang="xml">
 
<class-mapping-descriptor xsi:type="xml-class-mapping-descriptor">
 
<class-mapping-descriptor xsi:type="xml-class-mapping-descriptor">
    <class>org.example.Employee</class>
 
 
     <alias>Employee</alias>
 
     <alias>Employee</alias>
 
     <attribute-mappings>
 
     <attribute-mappings>
 
         <attribute-mapping xsi:type="xml-direct-mapping">
 
         <attribute-mapping xsi:type="xml-direct-mapping">
            <attribute-name>empId</attribute-name>
+
          <attribute-name>empId</attribute-name>
            <field name="@id" xsi:type="node"/>
+
          <field name="@id" xsi:type="node"/>
 
         </attribute-mapping>
 
         </attribute-mapping>
    </attribute-mappings>
+
        <attribute-mapping xsi:type="xml-direct-mapping">
 +
          <attribute-name>firstName</attribute-name>
 +
          <field name="name/first-name/text()" xsi:type="node"/>
 +
        </attribute-mapping>
 +
        <attribute-mapping xsi:type="xml-direct-mapping">
 +
          <attribute-name>lastName</attribute-name>
 +
          <field name="name/last-name/text()" xsi:type="node"/>
 +
        </attribute-mapping>
 +
        <attribute-mapping xsi:type="xml-direct-mapping">
 +
          <attribute-name>projectName</attribute-name>
 +
          <field name="projects/prj:project/text()" xsi:type="node"/>
 +
        </attribute-mapping>
 +
    <attribute-mappings>
 
     <descriptor-type>aggregate</descriptor-type>
 
     <descriptor-type>aggregate</descriptor-type>
 
     <default-root-element>employee</default-root-element>
 
     <default-root-element>employee</default-root-element>
 
     <default-root-element-field name="employee" xsi:type="node"/>
 
     <default-root-element-field name="employee" xsi:type="node"/>
 +
    <namespace-resolver>
 +
        <namespaces>
 +
            <namespace>
 +
                <prefix>prj</prefix>
 +
                <namespace-uri>http://www.example.com/projects</namespace-uri>
 +
            </namespace>
 +
        </namespaces>
 +
        <default-namespace-uri>http://www.example.com/employees</default-namespace-uri>
 +
    </namespace-resolver>
 
</class-mapping-descriptor>
 
</class-mapping-descriptor>
 
</source>  
 
</source>  
 +
 +
=== XML Instance Document  ===
 +
<source lang="xml">
 +
<?xml version="1.0" encoding="UTF-8"?>
 +
<employee id="66" xmlns="http://www.example.com/employees" xmlns:prj="http://www.example.com/projects">
 +
    <first-name>Joe</first-name>
 +
    <last-name>Black</last-name>
 +
    <prj:project>XML External Metadata Support</prj:project>
 +
</employee>
 +
</source>
  
 
=== XML Metadata ===
 
=== XML Metadata ===
Line 71: Line 105:
 
<?xml version="1.0" encoding="US-ASCII"?>
 
<?xml version="1.0" encoding="US-ASCII"?>
 
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
 
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
 +
    <xml-schema namespace="http://www.example.com/employees">
 +
        <xml-ns namespace-uri="http://www.example.com/projects" prefix="prj"/>
 +
    </xml-schema>
 
     <java-types>
 
     <java-types>
 
         <java-type name="org.example.Employee">
 
         <java-type name="org.example.Employee">
Line 76: Line 113:
 
             <java-attributes>
 
             <java-attributes>
 
                 <xml-attribute java-attribute="empId" name="id" />
 
                 <xml-attribute java-attribute="empId" name="id" />
 +
                <xml-element java-attribute="firstName" name="first-name" />
 +
                <xml-element java-attribute="lastName" name="last-name" />
 +
                <xml-element java-attribute="projectName" name="prj:project" />
 
             </java-attributes>
 
             </java-attributes>
 
         </java-type>
 
         </java-type>

Revision as of 13:09, 5 February 2010

XMLDirectMapping (page under construction)

Requirements

Provide support for XML direct mappings. The following structures are to be extended to support XML direct mapping configuration:

  • xml-attribute
  • xml-element

The following information must be configurable via XML metadata

<xml-direct-mapping xmlns="http://www.eclipse.org/eclipselink/xsds/persistence">
	<attribute-name>String</attribute-name>
	<read-only>false</read-only>
	<get-method>String</get-method>
	<set-method>String</set-method>
	<properties>
		<property name="String">
			<value>Text</value>
		</property>
		<property name="String">
			<value>Text</value>
		</property>
	</properties>
	<field name="String"/>
	<null-value>String</null-value>
	<converter/>
	<attribute-classification>String</attribute-classification>
	<is-cdata>1</is-cdata>
	<null-policy>
		<xsi-nil-represents-null>false</xsi-nil-represents-null>
		<empty-node-represents-null>false</empty-node-represents-null>
		<null-representation-for-xml>XSI_NIL</null-representation-for-xml>
	</null-policy>
</xml-direct-mapping>

Example

The following example will demonstrate how to configure XML direct mappings via XML metadata.


org.example.Employee.java

package org.example;
 
public class Employee {
    public int empId;
    public String firstName;
    public String lastName;
    public String projectName;
}

Deployment XML

<class-mapping-descriptor xsi:type="xml-class-mapping-descriptor">
    <alias>Employee</alias>
    <attribute-mappings>
        <attribute-mapping xsi:type="xml-direct-mapping">
           <attribute-name>empId</attribute-name>
           <field name="@id" xsi:type="node"/>
        </attribute-mapping>
        <attribute-mapping xsi:type="xml-direct-mapping">
           <attribute-name>firstName</attribute-name>
           <field name="name/first-name/text()" xsi:type="node"/>
        </attribute-mapping>
        <attribute-mapping xsi:type="xml-direct-mapping">
           <attribute-name>lastName</attribute-name>
           <field name="name/last-name/text()" xsi:type="node"/>
        </attribute-mapping>
        <attribute-mapping xsi:type="xml-direct-mapping">
           <attribute-name>projectName</attribute-name>
           <field name="projects/prj:project/text()" xsi:type="node"/>
        </attribute-mapping>
    <attribute-mappings>
    <descriptor-type>aggregate</descriptor-type>
    <default-root-element>employee</default-root-element>
    <default-root-element-field name="employee" xsi:type="node"/>
    <namespace-resolver>
        <namespaces>
            <namespace>
                <prefix>prj</prefix>
                <namespace-uri>http://www.example.com/projects</namespace-uri>
            </namespace>
        </namespaces>
        <default-namespace-uri>http://www.example.com/employees</default-namespace-uri>
    </namespace-resolver>
</class-mapping-descriptor>

XML Instance Document

<?xml version="1.0" encoding="UTF-8"?>
<employee id="66" xmlns="http://www.example.com/employees" xmlns:prj="http://www.example.com/projects">
    <first-name>Joe</first-name>
    <last-name>Black</last-name>
    <prj:project>XML External Metadata Support</prj:project>
</employee>

XML Metadata

org/example/eclipselink-oxm.xml

This XML file represents metadata overrides for the "org.example.Employee" class.

<?xml version="1.0" encoding="US-ASCII"?>
<xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm">
    <xml-schema namespace="http://www.example.com/employees">
        <xml-ns namespace-uri="http://www.example.com/projects" prefix="prj"/>
    </xml-schema>
    <java-types>
        <java-type name="org.example.Employee">
            <xml-root-element name="employee" />
            <java-attributes>
                <xml-attribute java-attribute="empId" name="id" />
                <xml-element java-attribute="firstName" name="first-name" />
                <xml-element java-attribute="lastName" name="last-name" />
                <xml-element java-attribute="projectName" name="prj:project" />
            </java-attributes>
        </java-type>
    </java-types>
</xml-bindings>

Back to the top