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.
Difference between revisions of "EclipseLink/DesignDocs/293925/Phase6"
(→Phase 6 - Substitution Groups (page under construction)) |
(→Example: XmlElements annotation) |
||
Line 44: | Line 44: | ||
The following example will demonstrate how the [http://java.sun.com/javase/6/docs/api/javax/xml/bind/annotation/XmlElements.html XmlElements] annotation can be applied: | The following example will demonstrate how the [http://java.sun.com/javase/6/docs/api/javax/xml/bind/annotation/XmlElements.html XmlElements] annotation can be applied: | ||
+ | |||
+ | ==== org.example.Foo.java ==== | ||
+ | |||
+ | <source lang="java"> | ||
+ | package org.example; | ||
+ | |||
+ | @javax.xml.bind.annotation.XmlRootElement | ||
+ | public class Foo { | ||
+ | @javax.xml.bind.annotation.XmlElementWrapper(name="items") | ||
+ | @javax.xml.bind.annotation.XmlElements({ | ||
+ | @javax.xml.bind.annotation.XmlElement(name="A", type=Integer.class), | ||
+ | @javax.xml.bind.annotation.XmlElement(name="B", type=Float.class) | ||
+ | }) | ||
+ | public java.util.List items; | ||
+ | } | ||
+ | </source> | ||
+ | |||
+ | === XML Metadata === | ||
+ | |||
+ | ==== xml-elements ==== | ||
+ | |||
+ | If this is present in the XML then it completely replaces the corresponding annotation. | ||
+ | |||
+ | ==== org/example/eclipselink-oxm.xml ==== | ||
+ | |||
+ | This XML file represents metadata overrides for the <code>org.example.Foo</code> class. | ||
+ | |||
+ | <source lang="xml"> | ||
+ | <?xml version="1.0" encoding="US-ASCII"?> | ||
+ | <xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"> | ||
+ | <java-types> | ||
+ | <java-type name="org.example.Foo"> | ||
+ | <xml-root-element name="foo"/> | ||
+ | <java-attributes> | ||
+ | <xml-elements java-attribute="items"> | ||
+ | <xml-element java-attribute="A" type="java.lang.Integer" /> | ||
+ | <xml-element java-attribute="B" type="java.lang.Float" /> | ||
+ | </xml-elements> | ||
+ | </java-attributes> | ||
+ | </java-type> | ||
+ | </java-types> | ||
+ | </xml-bindings> | ||
+ | </source> | ||
+ | |||
+ | == Example: XmlElements annotation with XmlJoinNodes annotation == | ||
+ | |||
+ | === Java Metadata === | ||
+ | |||
+ | The following example will demonstrate how the [http://java.sun.com/javase/6/docs/api/javax/xml/bind/annotation/XmlElements.html XmlElements] annotation can be used with the [http://java.sun.com/javase/6/docs/api/javax/xml/bind/annotation/XmlJoinNodes.html XmlJoinNodes] annotation: | ||
==== org.example.Foo.java ==== | ==== org.example.Foo.java ==== |
Revision as of 13:13, 2 December 2010
Phase 6 - Substitution Groups
Provide support for substitution groups.
Annotations
The following annotations will be targeted in this phase:
Annotation | XML Metadata Tag | Package | Type | Field | Method |
---|---|---|---|---|---|
XmlElements | xml-elements | X | X | ||
XmlElementRef | xml-element-ref | X | X | ||
XmlElementRefs | xml-element-refs | X |
X |
Example: XmlElements annotation
Java Metadata
The following example will demonstrate how the XmlElements annotation can be applied:
org.example.Foo.java
package org.example; @javax.xml.bind.annotation.XmlRootElement public class Foo { @javax.xml.bind.annotation.XmlElementWrapper(name="items") @javax.xml.bind.annotation.XmlElements({ @javax.xml.bind.annotation.XmlElement(name="A", type=Integer.class), @javax.xml.bind.annotation.XmlElement(name="B", type=Float.class) }) public java.util.List items; }
XML Metadata
xml-elements
If this is present in the XML then it completely replaces the corresponding annotation.
org/example/eclipselink-oxm.xml
This XML file represents metadata overrides for the org.example.Foo
class.
<?xml version="1.0" encoding="US-ASCII"?> <xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"> <java-types> <java-type name="org.example.Foo"> <xml-root-element name="foo"/> <java-attributes> <xml-elements java-attribute="items"> <xml-element java-attribute="A" type="java.lang.Integer" /> <xml-element java-attribute="B" type="java.lang.Float" /> </xml-elements> </java-attributes> </java-type> </java-types> </xml-bindings>
Example: XmlElements annotation with XmlJoinNodes annotation
Java Metadata
The following example will demonstrate how the XmlElements annotation can be used with the XmlJoinNodes annotation:
org.example.Foo.java
package org.example; @javax.xml.bind.annotation.XmlRootElement public class Foo { @javax.xml.bind.annotation.XmlElementWrapper(name="items") @javax.xml.bind.annotation.XmlElements({ @javax.xml.bind.annotation.XmlElement(name="A", type=Integer.class), @javax.xml.bind.annotation.XmlElement(name="B", type=Float.class) }) public java.util.List items; }
XML Metadata
xml-elements
If this is present in the XML then it completely replaces the corresponding annotation.
org/example/eclipselink-oxm.xml
This XML file represents metadata overrides for the org.example.Foo
class.
<?xml version="1.0" encoding="US-ASCII"?> <xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"> <java-types> <java-type name="org.example.Foo"> <xml-root-element name="foo"/> <java-attributes> <xml-elements java-attribute="items"> <xml-element java-attribute="A" type="java.lang.Integer" /> <xml-element java-attribute="B" type="java.lang.Float" /> </xml-elements> </java-attributes> </java-type> </java-types> </xml-bindings>
Example: XmlElementRef annotation
Java Metadata
The following example will demonstrate how the XmlElementRef annotation can be applied:
org.example.Foos.java
package org.example; @javax.xml.bind.annotation.XmlRootElement public class Foos { @javax.xml.bind.annotation.XmlElementWrapper(name="items") @javax.xml.bind.annotation.XmlElementRef(type=Bar.class) public java.util.List<Bar> items; }
org.example.Bar.java
package org.example; @javax.xml.bind.annotation.XmlRootElement(name="foobar") public class Bar { public int id; }
XML Metadata
xml-element-ref
If this is present in the XML then it completely replaces the corresponding annotation.
org/example/eclipselink-oxm.xml
This XML file represents metadata overrides for the org.example.Foos
and org.example.Bar
classes.
<?xml version="1.0" encoding="US-ASCII"?> <xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"> <java-types> <java-type name="org.eclipse.persistence.testing.jaxb.externalizedmetadata.xmlelementref.Foos"> <xml-root-element name="foos" /> <java-attributes> <xml-element-ref java-attribute="items" type="org.eclipse.persistence.testing.jaxb.externalizedmetadata.xmlelementref.Bar" > <xml-element-wrapper name="items" /> </xml-element-ref> </java-attributes> </java-type> <java-type name="org.eclipse.persistence.testing.jaxb.externalizedmetadata.xmlelementref.Bar"> <xml-root-element name="foobar" /> </java-type> </java-types> </xml-bindings>
Example: XmlElementRefs annotation
Java Metadata
The following example will demonstrate how the XmlElementRefs annotation can be applied:
org.example.Foos.java
package org.example; import java.util.List; import javax.xml.bind.JAXBElement; import javax.xml.bind.annotation.XmlElementRef; import javax.xml.bind.annotation.XmlElementRefs; import javax.xml.bind.annotation.XmlElementWrapper; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name="my-foos") public class Foos { @XmlElementWrapper(name="items") @XmlElementRefs({ @XmlElementRef(name="integer-root", namespace="myns"), @XmlElementRef(name="root") }) public List<JAXBElement> items; }
org.example.ObjectFactory.java
package org.example; import javax.xml.bind.JAXBElement; import javax.xml.namespace.QName; @javax.xml.bind.annotation.XmlRegistry public class ObjectFactory { @javax.xml.bind.annotation.XmlElementDecl(name="root") public JAXBElement<String> createRoot() { return new JAXBElement<String>(new QName("root"), String.class, ""); } @javax.xml.bind.annotation.XmlElementDecl(namespace="myns", name="integer-root") public JAXBElement<Integer> createIntegerRoot() { return new JAXBElement<Integer>(new QName("myns", "integer-root"), Integer.class, new Integer(0)); } }
XML Metadata
xml-element-refs
If this is present in the XML then it completely replaces the corresponding annotation.
org/example/eclipselink-oxm.xml
This XML file represents metadata overrides for the org.example.Foos
class.
<?xml version="1.0" encoding="US-ASCII"?> <xml-bindings xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm"> <java-types> <java-type name="org.eclipse.persistence.testing.jaxb.externalizedmetadata.xmlelementrefs.Foos"> <xml-root-element name="my-foos" /> <java-attributes> <xml-element-refs java-attribute="items" > <xml-element-wrapper name="items" /> <xml-element-ref name="integer-root" namespace="myns" /> <xml-element-ref name="root" /> </xml-element-refs> </java-attributes> </java-type> </java-types> </xml-bindings>