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.
Difference between revisions of "EclipseLink/DesignDocs/293925/MOXyExtensions/XMLDirectMapping"
< EclipseLink | DesignDocs | 293925 | MOXyExtensions
(→The following information must be configurable via XML metadata) |
|||
Line 35: | Line 35: | ||
</source> | </source> | ||
− | == Example | + | == Example == |
− | The following example will demonstrate how to configure | + | 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"> | ||
− | |||
<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> | |
− | + | <field name="@id" xsi:type="node"/> | |
</attribute-mapping> | </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> | <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>