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.
Dali/Indigo/MOXy 2.1
Contents
Functional Specification: Support for MOXy 2.1
[enter bug location here]
Document History
Date | Author | Version Description & Notes |
---|---|---|
10-13-2010 | Paul Fullbright | Draft |
Feature overview
This feature is about supporting MOXy 2.1 features in Dali
Goals:
- Add MOXy 2.1 platform
- Add support for oxm.xml file
- Support oxm.xml content type
- Associate oxm.xml files with package/namespaces
- Support MOXy 2.1 oxm.xml features
Concepts
EclipseLink MOXy 2.0 introduced support for oxm.xml files, which act similarly to orm.xml files. They provide standalone support for mapping java classes to XML document data sources and they work in conjunction with JAXB (and soon MOXy) annotations to add and override metadata.
Users associate each file with a package when creating a JAXBContext as such:
InputStream employeeExternalizedMetadata = aClassLoader.getResourceAsStream("org/example/employee/metadata.xml"; InputStream customerExternalizedMetadata = aClassLoader.getResourceAsStream("org/example/customer/metadata.xml"; HashMap<String, Source> metadataSourceMap = new HashMap<String, Source>(); metadataSourceMap.put("org.example.employee", new StreamSource(employeeExternalizedMetadata)); metadataSourceMap.put("org.example.customer", new StreamSource(customerExternalizedMetadata)); Map<String, Map<String, Source>> properties = new HashMap<String, Map<String, Source>>(); properties.put("eclipselink-oxm-xml", metadataSourceMap); JAXBContext.newInstance("org.example.customer:org.example.employee", aClassLoader, properties);
It therefore seems to place the requirement on Dali to associate each file with a package in order to accurately support them.
There are no additional annotations in MOXy 2.1, so the added functionality is almost entirely oxm.xml.
References
Requirements / Functionality
oxm.xml content type
oxm.xml content type will need to be created similar to orm.xml content type. A resource model will need to be created.
file to package association
In order to correctly associate the files with the packages they represent, we will likely need additional project metadata.
MOXy 2.1 oxm.xml features
MOXy provides support to parallel most/all JAXB 2.x annotations in the 2.1 oxm.xml, but there are additional features specific to MOXy.
xml-customizer
xml-customizer appears on java-type elements. An xml-customizer names a class that implements DescriptorCustomizer, which is a catch-all option for users that can't configure their mapping information with metadata alone.