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"
(→Schema file) |
|||
Line 1,129: | Line 1,129: | ||
<xs:attribute name="xml-attachment-ref" type="xs:boolean" default="false" /> | <xs:attribute name="xml-attachment-ref" type="xs:boolean" default="false" /> | ||
<xs:attribute name="xml-mime-type" type="xs:string" /> | <xs:attribute name="xml-mime-type" type="xs:string" /> | ||
+ | </xs:extension> | ||
+ | </xs:complexContent> | ||
+ | </xs:complexType> | ||
+ | </xs:element> | ||
+ | <xs:element name="xml-elements" substitutionGroup="java-attribute"> | ||
+ | <xs:complexType> | ||
+ | <xs:complexContent> | ||
+ | <xs:extension base="java-attribute"> | ||
+ | <xs:sequence> | ||
+ | <xs:element ref="xml-element" maxOccurs="unbounded" /> | ||
+ | <xs:element ref="xml-element-wrapper" minOccurs="0" /> | ||
+ | </xs:sequence> | ||
+ | <xs:attribute name="xml-idref" type="xs:boolean" default="false" /> | ||
+ | <xs:attribute name="xml-list" type="xs:boolean" default="false" /> | ||
+ | </xs:extension> | ||
+ | </xs:complexContent> | ||
+ | </xs:complexType> | ||
+ | </xs:element> | ||
+ | <xs:element name="xml-element-ref" substitutionGroup="java-attribute"> | ||
+ | <xs:complexType> | ||
+ | <xs:complexContent> | ||
+ | <xs:extension base="java-attribute"> | ||
+ | <xs:all> | ||
+ | <xs:element ref="xml-element-wrapper" /> | ||
+ | </xs:all> | ||
+ | <xs:attribute name="name" type="xs:string" default="##default" /> | ||
+ | <xs:attribute name="namespace" type="xs:string" /> | ||
+ | <xs:attribute name="type" type="xs:string" default="javax.xml.bind.annotation.XmlElementRef.DEFAULT" /> | ||
+ | </xs:extension> | ||
+ | </xs:complexContent> | ||
+ | </xs:complexType> | ||
+ | </xs:element> | ||
+ | <xs:element name="xml-element-refs" substitutionGroup="java-attribute"> | ||
+ | <xs:complexType> | ||
+ | <xs:complexContent> | ||
+ | <xs:extension base="java-attribute"> | ||
+ | <xs:sequence> | ||
+ | <xs:element ref="xml-element-ref" maxOccurs="unbounded" /> | ||
+ | <xs:element ref="xml-element-wrapper" minOccurs="0" /> | ||
+ | </xs:sequence> | ||
</xs:extension> | </xs:extension> | ||
</xs:complexContent> | </xs:complexContent> | ||
Line 1,155: | Line 1,195: | ||
</xs:element> | </xs:element> | ||
</xs:schema> | </xs:schema> | ||
− | </source> | + | </source> |
==== XML Bindings ==== | ==== XML Bindings ==== |
Revision as of 12:39, 8 December 2009
Contents
- 1 Design Specification: MOXy - OXM XSD
- 1.1 Document History
- 1.2 Project overview
- 1.3 Concepts
- 1.4 Requirements
- 1.5 Design Constraints
- 1.6 High Level Design
- 1.6.1 JAXB 2.1 annotation support via XML external metadata
- 1.6.2 XML external metadata support for WebServices
- 1.6.3 OXM mapping support via XML external metadata
- 1.6.3.1 XML Direct Mapping
- 1.6.3.2 XML Composite Direct Collection Mapping
- 1.6.3.3 XML Composite Object Mapping
- 1.6.3.4 XML Composite Collection Mapping
- 1.6.3.5 XML Object Reference Mapping
- 1.6.3.6 XML Collection Reference Mapping
- 1.6.3.7 XML Binary Data Mapping
- 1.6.3.8 XML Binary Data Collection Mapping
- 1.6.3.9 XML Any Object Mapping
- 1.6.3.10 XML Any Collection Mapping
- 1.6.3.11 XML Fragment Mapping
- 1.6.3.12 XML Fragment Collection
- 1.6.3.13 XML Choice Object Mapping
- 1.6.3.14 XML Choice Collection Mapping
- 1.6.3.15 XML Transformation Mapping
- 1.6.3.16 XML Any Attribute Mapping
- 1.7 Design / Functionality
- 1.8 Testing
- 1.9 API
- 1.10 GUI
- 1.11 Config files
- 1.12 Documentation
- 1.13 Open Issues
- 1.14 Decisions
- 1.15 Future Considerations
Design Specification: MOXy - OXM XSD
Document History
Date | Author | Version Description & Notes |
---|---|---|
2009/11/09 | David McCann | Initial Contribution. The work outlined in this design document is a continuation of the work done for ER 277920 |
Project overview
Goals:
- Support JAXB 2.1 annotations via XML external metadata.
- Support MOXy metadata (used to extend JAXB) via external metadata.
- Support the use of the XML metadata as a means to override metadata specified by annotations.
Concepts
- Although JAXB annotations can be applied independently they are logically linked. For example @XmlList can only be used with XmlElement, XmlAttribute, XmlValue, XmlIDREF. These rules will be enforced through the XML metadata.
- Overriding will be handled at the property level.
Requirements
The following sections will expand the goals of this project into more concrete requirements.
Design Constraints
JAXB Annotations
The XML should have the same feel as the JAXB annotations.
javax.xml.bind.annotation Javadoc
EclipseLink JPA Metadata
The XML should have the same feel as the equivalent XML for EclipseLink JPA
EclipseLink MOXy Metadata
At a minimum the metadata available in EclipseLink 2.1 must be available in the new format (see below).
High Level Design
JAXB 2.1 annotation support via XML external metadata
This support will be added as outlined in the following phases:
- Phase #6 – Substitution Groups
- Provide support for substitution groups. The the following MOXy mappings will be utilized:
- Choice
- Choice Collection
- Provide support for substitution groups. The the following MOXy mappings will be utilized:
- Phase #7 – Schema Customization
- Allow customized mapping to an XML Schema built in type
- Phase #8 – Enums
- Provide support for Java Enums
- Phase #9 – Attachments
- Provide support for WebService attachments
- Phase #10 – XML Registry
- Provide support for ObjectFactory methods
XML external metadata support for WebServices
TBD.
OXM mapping support via XML external metadata
The following OXM mappings will be supported via XML external metadata:
- XML Direct
- XML Composite Direct Collection
- XML Composite Object
- XML Composite Collection
- XML Object Reference
- XML Collection Reference
- XML Binary Data
- XML Binary Data Collection
- XML Any Object
- XML Any Collection
- XML Fragment
- XML Fragment Collection
- XML Choice Object
- XML Choice Collection
- XML Transformation
- XML Any Attribute
XML Direct Mapping
<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>
XML Composite Direct Collection Mapping
<xml-composite-direct-collection-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"/> <value-converter/> <value-converter-class>String</value-converter-class> <container> <collection-type>String</collection-type> </container> <is-cdata>1</is-cdata> </xml-composite-direct-collection-mapping>
XML Composite Object Mapping
<xml-composite-object-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> <reference-class>String</reference-class> <field name="String"/> <container-attribute>Text</container-attribute> <container-get-method>Text</container-get-method> <container-set-method>Text</container-set-method> <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> <keep-as-element-policy>String</keep-as-element-policy> </xml-composite-object-mapping>
XML Composite Collection Mapping
<xml-composite-collection-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> <reference-class>String</reference-class> <field name="String"/> <container> <collection-type>String</collection-type> </container> <container-attribute>Text</container-attribute> <container-get-method>Text</container-get-method> <container-set-method>Text</container-set-method> <keep-as-element-policy>String</keep-as-element-policy> </xml-composite-collection-mapping>
XML Object Reference Mapping
<xml-object-reference-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> <reference-class>String</reference-class> <allow-null>true</allow-null> <field-translations> <field-translation> <source-field name="String"/> <target-field name="String"/> </field-translation> <field-translation> <source-field name="String"/> <target-field name="String"/> </field-translation> </field-translations> <source-to-target-key-field-association> <field-reference> <source-field name="String"/> <target-field name="String"/> </field-reference> <field-reference> <source-field name="String"/> <target-field name="String"/> </field-reference> </source-to-target-key-field-association> <source-to-target-key-fields> <field name="String"/> <field name="String"/> </source-to-target-key-fields> </xml-object-reference-mapping>
XML Collection Reference Mapping
<xml-collection-reference-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> <reference-class>String</reference-class> <allow-null>true</allow-null> <field-translations> <field-translation> <source-field name="String"/> <target-field name="String"/> </field-translation> <field-translation> <source-field name="String"/> <target-field name="String"/> </field-translation> </field-translations> <source-to-target-key-field-association> <field-reference> <source-field name="String"/> <target-field name="String"/> </field-reference> <field-reference> <source-field name="String"/> <target-field name="String"/> </field-reference> </source-to-target-key-field-association> <source-to-target-key-fields> <field name="String"/> <field name="String"/> </source-to-target-key-fields> <containerpolicy> <collection-type>String</collection-type> </containerpolicy> <uses-single-node>1</uses-single-node> </xml-collection-reference-mapping>
XML Binary Data Mapping
<xml-binary-data-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> <is-swa-ref>1</is-swa-ref> <mime-type>String</mime-type> <should-inline-data>1</should-inline-data> </xml-binary-data-mapping>
XML Binary Data Collection Mapping
XML Any Object Mapping
<xml-any-object-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"/> <use-xml-root>false</use-xml-root> <keep-as-element-policy>String</keep-as-element-policy> </xml-any-object-mapping>
XML Any Collection Mapping
<xml-any-collection-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"/> <container> <collection-type>String</collection-type> </container> <use-xml-root>false</use-xml-root> <keep-as-element-policy>String</keep-as-element-policy> </xml-any-collection-mapping>
XML Fragment Mapping
<xml-fragment-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-fragment-mapping>
XML Fragment Collection
<xml-fragment-collection-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> <reference-class>String</reference-class> <field name="String"/> <container> <collection-type>String</collection-type> </container> </xml-fragment-collection-mapping>
XML Choice Object Mapping
<xml-choice-object-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-to-class-association> <xml-field name="String"> <position>0</position> <typed-text-field>1</typed-text-field> <single-node>1</single-node> <schema-type>String</schema-type> <schema-type>String</schema-type> <xml-to-java-conversion-pair> <qname>String</qname> <class-name>String</class-name> </xml-to-java-conversion-pair> <xml-to-java-conversion-pair> <qname>String</qname> <class-name>String</class-name> </xml-to-java-conversion-pair> <java-to-xml-conversion-pair> <qname>String</qname> <class-name>String</class-name> </java-to-xml-conversion-pair> <java-to-xml-conversion-pair> <qname>String</qname> <class-name>String</class-name> </java-to-xml-conversion-pair> <leaf-element-type>String</leaf-element-type> </xml-field> <class-name>String</class-name> </field-to-class-association> <field-to-class-association> <xml-field name="String"> <position>0</position> <typed-text-field>1</typed-text-field> <single-node>1</single-node> <schema-type>String</schema-type> <schema-type>String</schema-type> <xml-to-java-conversion-pair> <qname>String</qname> <class-name>String</class-name> </xml-to-java-conversion-pair> <xml-to-java-conversion-pair> <qname>String</qname> <class-name>String</class-name> </xml-to-java-conversion-pair> <java-to-xml-conversion-pair> <qname>String</qname> <class-name>String</class-name> </java-to-xml-conversion-pair> <java-to-xml-conversion-pair> <qname>String</qname> <class-name>String</class-name> </java-to-xml-conversion-pair> <leaf-element-type>String</leaf-element-type> </xml-field> <class-name>String</class-name> </field-to-class-association> </xml-choice-object-mapping>
XML Choice Collection Mapping
<xml-choice-collection-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> <container-policy> <collection-type>String</collection-type> </container-policy> <field-to-class-association> <xml-field name="String"> <position>0</position> <typed-text-field>1</typed-text-field> <single-node>1</single-node> <schema-type>String</schema-type> <schema-type>String</schema-type> <xml-to-java-conversion-pair> <qname>String</qname> <class-name>String</class-name> </xml-to-java-conversion-pair> <xml-to-java-conversion-pair> <qname>String</qname> <class-name>String</class-name> </xml-to-java-conversion-pair> <java-to-xml-conversion-pair> <qname>String</qname> <class-name>String</class-name> </java-to-xml-conversion-pair> <java-to-xml-conversion-pair> <qname>String</qname> <class-name>String</class-name> </java-to-xml-conversion-pair> <leaf-element-type>String</leaf-element-type> </xml-field> <class-name>String</class-name> </field-to-class-association> <field-to-class-association> <xml-field name="String"> <position>0</position> <typed-text-field>1</typed-text-field> <single-node>1</single-node> <schema-type>String</schema-type> <schema-type>String</schema-type> <xml-to-java-conversion-pair> <qname>String</qname> <class-name>String</class-name> </xml-to-java-conversion-pair> <xml-to-java-conversion-pair> <qname>String</qname> <class-name>String</class-name> </xml-to-java-conversion-pair> <java-to-xml-conversion-pair> <qname>String</qname> <class-name>String</class-name> </java-to-xml-conversion-pair> <java-to-xml-conversion-pair> <qname>String</qname> <class-name>String</class-name> </java-to-xml-conversion-pair> <leaf-element-type>String</leaf-element-type> </xml-field> <class-name>String</class-name> </field-to-class-association> </xml-choice-collection-mapping>
XML Transformation Mapping
<xml-transformation-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> <attribute-method>String</attribute-method> <attribute-transformer>String</attribute-transformer> <mutable>true</mutable> <indirection/> <field-transformations> <field-transformation> <field name="String"/> </field-transformation> <field-transformation> <field name="String"/> </field-transformation> </field-transformations> </xml-transformation-mapping>
XML Any Attribute Mapping
<xml-any-attribute-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"/> <container> <collection-type>String</collection-type> </container> <include-namespace-declaration>1</include-namespace-declaration> <include-schema-instance>1</include-schema-instance> </xml-any-attribute-mapping>
Design / Functionality
XML Schema
Design Notes
Design notes for 2.0
Annotations to XML
The following table outlines how annotations relate to schema components:
Annotation | XML | Global Element | Global Attribute | Local Element | Local Attribute | Enum |
---|---|---|---|---|---|---|
XmlAccessOrder | xml-access-order | X | ||||
XmlAccessorOrder | xml-accessor-order | X | ||||
XmlAccessorType | xml-accessor-type | X | ||||
XmlAccessType | xml-access-type | X | ||||
XmlAnyAttribute | xml-any-attribute | X | ||||
XmlAnyElement | xml-any-element | X | ||||
XmlAttribute | xml-attribute | X | ||||
XmlAttributeRef | xml-attribute-ref | X | ||||
XmlCustomizer (MOXy) | xml-customizer | X | ||||
XmlElement | xml-element | X | ||||
XmlElements | xml-elements | X | ||||
XmlElementRef | xml-element-ref | X | ||||
XmlElementRefs | xml-element-refs | X | ||||
XmlElementWrapper | xml-element-wrapper | X | ||||
XmlID | xml-id | X | ||||
XmlIDREF | xml-idref | X | ||||
XmlJavaTypeAdapter | xml-java-type-adapter | X | ||||
XmlJavaTypeAdapters | xml-java-type-adapters | X | ||||
XmlList | xml-List | X | ||||
N/A | xml-map | X | ||||
XmlMimeType | xml-mime-type | X | ||||
XmlMixed | xml-mixed | X | ||||
XmlNs | xml-ns | X | ||||
XmlNsForm | xml-ns-form | X | ||||
XmlRootElement | xml-root-element | X | ||||
XmlSchema | xml-schema | X | ||||
XmlSeeAlso | xml-see-also | X | ||||
XmlTransient | xml-transient | X | ||||
XmlType | xml-type | X | ||||
XmlValue | xml-value | X |
Schema file
The XML schema that will be supported in EclipseLink 2.0 follows:
<?xml version="1.0" encoding="UTF-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" targetNamespace="http://www.eclipse.org/eclipselink/xsds/persistence/oxm" elementFormDefault="qualified" attributeFormDefault="unqualified" version="2.0"> <xs:element name="xml-bindings"> <xs:complexType> <xs:all> <xs:element ref="xml-schema" /> <xs:element ref="xml-java-type-adapters" /> <xs:element name="java-types"> <xs:complexType> <xs:sequence> <xs:element ref="java-type" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:all> <xs:attribute name="xml-accessor-type" type="xml-access-type" default="PUBLIC_MEMBER" /> <xs:attribute name="xml-accessor-order" type="xml-access-order" default="UNDEFINED" /> </xs:complexType> </xs:element> <xs:element name="java-type"> <xs:complexType> <xs:all> <xs:element ref="xml-type" /> <xs:element ref="xml-root-element" /> <xs:element ref="xml-see-also" /> <xs:element ref="xml-java-type-adapter" /> <xs:element name="java-attributes"> <xs:complexType> <xs:sequence> <xs:element ref="java-attribute" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> </xs:all> <xs:attribute name="name" type="xs:string" /> <xs:attribute name="xml-transient" type="xs:boolean" default="false" /> <xs:attribute name="xml-customizer" type="xs:string" /> <xs:attribute name="xml-accessor-type" type="xml-access-type" default="PUBLIC_MEMBER" /> <xs:attribute name="xml-accessor-order" type="xml-access-order" default="UNDEFINED" /> </xs:complexType> </xs:element> <xs:element name="java-attribute" type="java-attribute" /> <xs:complexType name="java-attribute" abstract="true"> <xs:attribute name="java-attribute" type="xs:string" /> </xs:complexType> <!-- Enums --> <xs:simpleType name="xml-access-order"> <xs:restriction base="xs:string"> <xs:enumeration value="ALPHABETICAL" /> <xs:enumeration value="UNDEFINED" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="xml-access-type"> <xs:restriction base="xs:string"> <xs:enumeration value="FIELD" /> <xs:enumeration value="NONE" /> <xs:enumeration value="PROPERTY" /> <xs:enumeration value="PUBLIC_MEMBER" /> </xs:restriction> </xs:simpleType> <xs:simpleType name="xml-ns-form"> <xs:restriction base="xs:string"> <xs:enumeration value="UNQUALIFIED" /> <xs:enumeration value="QUALIFIED" /> <xs:enumeration value="UNSET" /> </xs:restriction> </xs:simpleType> <!-- @Target(value=PACKAGE) --> <xs:element name="xml-schema"> <xs:complexType> <xs:sequence> <xs:element name="xml-ns" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="namespace-uri" type="xs:string" /> <xs:attribute name="prefix" type="xs:string" /> </xs:complexType> </xs:element> </xs:sequence> <xs:attribute name="attribute-form-default" type="xml-ns-form" default="UNSET" /> <xs:attribute name="element-form-default" type="xml-ns-form" default="UNSET" /> <xs:attribute name="location" type="xs:string" /> <xs:attribute name="namespace" type="xs:string" /> </xs:complexType> </xs:element> <xs:element name="xml-java-type-adapters"> <xs:complexType> <xs:sequence> <xs:element ref="xml-java-type-adapter" maxOccurs="unbounded" /> </xs:sequence> </xs:complexType> </xs:element> <!-- @Target(value={FIELD,METHOD,PACKAGE}) --> <!-- @Target(value={PACKAGE,FIELD,METHOD,TYPE,PARAMETER}) --> <xs:element name="xml-java-type-adapter" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:attribute name="value" type="xs:string" /> <xs:attribute name="type" type="xs:string" default="javax.xml.bind.annotation.adapters.XmlJavaTypeAdapter.DEFAULT" /> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <!-- @Target(value={FIELD,METHOD,TYPE}) --> <xs:element name="xml-transient" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute" /> </xs:complexContent> </xs:complexType> </xs:element> <!-- @Target(value=TYPE) --> <xs:element name="xml-type"> <xs:complexType> <xs:attribute name="name" type="xs:string" default="##default" /> <xs:attribute name="namespace" type="xs:string" default="##default" /> <xs:attribute name="prop-order"> <xs:simpleType> <xs:list itemType="xs:string" /> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element> <xs:element name="xml-root-element"> <xs:complexType> <xs:attribute name="name" type="xs:string" default="##default" /> <xs:attribute name="namespace" type="xs:string" default="##default" /> </xs:complexType> </xs:element> <xs:element name="xml-see-also"> <xs:simpleType> <xs:list itemType="xs:string" /> </xs:simpleType> </xs:element> <!-- @Target(value={FIELD}) --> <!-- @Target(value={FIELD,METHOD}) --> <xs:element name="xml-any-attribute" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute" /> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="xml-attribute" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:all> <xs:element ref="xml-java-type-adapter" /> </xs:all> <xs:attribute name="name" type="xs:string" default="##default" /> <xs:attribute name="namespace" type="xs:string" default="##default" /> <xs:attribute name="required" type="xs:boolean" default="false" /> <xs:attribute name="xml-id" type="xs:boolean" default="false" /> <xs:attribute name="xml-idref" type="xs:boolean" default="false" /> <xs:attribute name="xml-list" type="xs:boolean" default="false" /> <xs:attribute name="xml-attachment-ref" type="xs:boolean" default="false" /> <xs:attribute name="xml-mime-type" type="xs:string" /> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="xml-any-element" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:all> <xs:element ref="xml-java-type-adapter" /> </xs:all> <xs:attribute name="xml-mixed" type="xs:boolean" default="false" /> <xs:attribute name="lax" type="xs:boolean" default="false" /> <xs:attribute name="dom-handler" type="xs:string" default="javax.xml.bind.annotation.W3CDomHandler" /> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="xml-element" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:all> <xs:element ref="xml-element-wrapper" /> <xs:element ref="xml-java-type-adapter" /> <xs:element ref="xml-map" /> </xs:all> <xs:attribute name="name" type="xs:string" default="##default" /> <xs:attribute name="namespace" type="xs:string" default="##default" /> <xs:attribute name="default-value" type="xs:string" /> <xs:attribute name="nillable" type="xs:boolean" default="false" /> <xs:attribute name="required" type="xs:boolean" default="false" /> <xs:attribute name="type" type="xs:string" default="javax.xml.bind.annotation.XmlElement.DEFAULT" /> <xs:attribute name="xml-id" type="xs:boolean" default="false" /> <xs:attribute name="xml-idref" type="xs:boolean" default="false" /> <xs:attribute name="xml-list" type="xs:boolean" default="false" /> <xs:attribute name="xml-attachment-ref" type="xs:boolean" default="false" /> <xs:attribute name="xml-mime-type" type="xs:string" /> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="xml-elements" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:sequence> <xs:element ref="xml-element" maxOccurs="unbounded" /> <xs:element ref="xml-element-wrapper" minOccurs="0" /> </xs:sequence> <xs:attribute name="xml-idref" type="xs:boolean" default="false" /> <xs:attribute name="xml-list" type="xs:boolean" default="false" /> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="xml-element-ref" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:all> <xs:element ref="xml-element-wrapper" /> </xs:all> <xs:attribute name="name" type="xs:string" default="##default" /> <xs:attribute name="namespace" type="xs:string" /> <xs:attribute name="type" type="xs:string" default="javax.xml.bind.annotation.XmlElementRef.DEFAULT" /> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="xml-element-refs" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:sequence> <xs:element ref="xml-element-ref" maxOccurs="unbounded" /> <xs:element ref="xml-element-wrapper" minOccurs="0" /> </xs:sequence> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="xml-element-wrapper"> <xs:complexType> <xs:attribute name="name" type="xs:string" default="##default" /> <xs:attribute name="namespace" type="xs:string" default="##default" /> <xs:attribute name="nillable" type="xs:boolean" default="false" /> <xs:attribute name="required" type="xs:boolean" default="false" /> </xs:complexType> </xs:element> <xs:element name="xml-value" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute" /> </xs:complexContent> </xs:complexType> </xs:element> <xs:element name="xml-map"> <xs:complexType> <xs:attribute name="key-type" type="xs:string"/> <xs:attribute name="value-type" type="xs:string"/> </xs:complexType> </xs:element> </xs:schema>
XML Bindings
Bindings info/example from 2.0
Boot Strapping
Specifying the Externalized Metadata File
Common Mapping Metadata
XML Schema
<xs:complexType name="java-attribute"> <xs:all> <xs:element ref="properties"/> </xs:all> <xs:attribute name="attribute-name" type="xs:string"/> <xs:attribute name="get-method" type="xs:string"/> <xs:attribute name="set-method" type="xs:string"/> <xs:attribute name="read-only" type="xs:boolean" default="false"/> </xs:complexType> <xs:element name="properties"> <xs:complexType> <xs:sequence> <xs:element name="property" minOccurs="0" maxOccurs="unbounded"> <xs:complexType> <xs:attribute name="name" type="xs:string"/> <xs:attribute name="value" type="xs:string"/> </xs:complexType> </xs:element> </xs:sequence> </xs:complexType> </xs:element>
XML
<xml-mapping attribute-name="String" read-only="false" get-method="String" set-method="String"> <properties> <property name="String" value="String"/> <property name="String" value="String"/> </properties> </xml-mapping>
Null Policy
XML Schema
<xs:element name="null-policy"> <xs:complexType> <xs:attribute name="set-performed-for-absent-node" type="xs:boolean" default="true"/> <xs:attribute name="null-represented-by-empty-node" type="xs:boolean" default="false"/> <xs:attribute name="null-represented-by-xsi-nil" type="xs:boolean" default="false"/> <xs:attribute name="marshal-null-representation"> <xs:simpleType> <xs:restriction base="xs:string"> <xs:enumeration value="XSI_NIL"/> <xs:enumeration value="ABSENT_NODE"/> <xs:enumeration value="EMPTY_NODE"/> </xs:restriction> </xs:simpleType> </xs:attribute> </xs:complexType> </xs:element>
XML
<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 Any Attribute Mapping
XML Schema
<xs:element name="xml-any-attribute-mapping"> <xs:complexType> <xs:complexContent> <xs:extension base="xml-mapping"> <xs:attribute name="include-namespace-declaration" type="xs:boolean"/> <xs:attribute name="include-schema-instance" type="xs:boolean"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element>
XML
<xml-any-attribute-mapping attribute-name="String" read-only="false" get-method="String" set-method="String" include-namespace-declaration="true" include-schema-instance="true"> <properties> <property name="String" value="String"/> </properties> </xml-any-attribute-mapping>
XML Attribute
<xs:element name="xml-attribute" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:all> <xs:element ref="xml-schema-type"/> <xs:element ref="xml-java-type-adapter"/> <xs:element ref="null-policy"/> </xs:all> <xs:attribute ref="xml-inline-binary-data"/> <xs:attribute ref="xml-id"/> <xs:attribute ref="xml-idref"/> <xs:attribute ref="xml-attachment-ref"/> <xs:attribute ref="xml-list"/> <xs:attribute ref="xml-mime-type"/> <xs:attribute name="name" type="xs:string" default="##default"/> <xs:attribute name="namespace" type="xs:string" default="##default"/> <xs:attribute name="required" type="xs:boolean" default="false"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element>
XML Element
<xs:element name="xml-element" substitutionGroup="java-attribute"> <xs:complexType> <xs:complexContent> <xs:extension base="java-attribute"> <xs:all> <xs:element ref="xml-schema-type"/> <xs:element ref="xml-element-wrapper"/> <xs:element ref="xml-java-type-adapter"/> <xs:element ref="null-policy"/> </xs:all> <xs:attribute ref="xml-inline-binary-data"/> <xs:attribute ref="xml-id"/> <xs:attribute ref="xml-idref"/> <xs:attribute ref="xml-attachment-ref"/> <xs:attribute ref="xml-list"/> <xs:attribute ref="xml-mime-type"/> <xs:attribute name="name" type="xs:string" default="##default"/> <xs:attribute name="namespace" type="xs:string" default="##default"/> <xs:attribute name="default-value" type="xs:string"/> <xs:attribute name="nillable" type="xs:boolean" default="false"/> <xs:attribute name="required" type="xs:boolean" default="false"/> <xs:attribute name="type" type="xs:string" default="javax.xml.bind.annotation.XmlElement.DEFAULT"/> </xs:extension> </xs:complexContent> </xs:complexType> </xs:element>
Testing
API
GUI
Config files
Documentation
Open Issues
This section lists the open issues that are still pending that must be decided prior to fully implementing this project's requirements.
Issue # | Owner | Description / Notes |
---|---|---|
Decisions
This section lists decisions made. These are intended to document the resolution of open issues or constraints added to the project that are important.
Issue # | Description / Notes | Decision |
---|---|---|
Future Considerations
During the research for this project the following items were identified as out of scope but are captured here as potential future enhancements. If agreed upon during the review process these should be logged in the bug system.