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/Release/2.4.0/JAXB RI Extensions"
(18 intermediate revisions by the same user not shown) | |||
Line 1: | Line 1: | ||
<div style="margin:5px;float:right;border:1px solid #000000;padding:5px">__TOC__</div> | <div style="margin:5px;float:right;border:1px solid #000000;padding:5px">__TOC__</div> | ||
− | + | =JAXB RI Extensions Support= | |
+ | In the current JAXB RI, developed by Sun, there is a series of "proprietary" JAXB extensions which provide advanced functionality outside of the JAXB specification (these extension classes and properties reside in the '''com.sun.xml.bind''' and '''com.sun.internal.xml.bind''' packages). This document outlines the new EclipseLink MOXy support for these extensions. | ||
=General Features= | =General Features= | ||
Line 10: | Line 11: | ||
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="text"> | <source lang="text"> | ||
- Implement com.sun.xml.bind.AccessorFactory interface | - Implement com.sun.xml.bind.AccessorFactory interface | ||
Line 18: | Line 19: | ||
</div> | </div> | ||
− | See: | + | See: [[EclipseLink/Release/2.4.0/JAXB_RI_Extensions/XML_Accessor_Factory | @XmlAccessorFactory]] |
− | + | ||
=Marshaller Features= | =Marshaller Features= | ||
+ | |||
+ | ==Namespace Prefix Mapper== | ||
+ | Allows the user to customize the way namespace prefixes are assigned to namespaces by extending the NamespacePrefixMapper class. | ||
+ | |||
+ | Usage: | ||
+ | <div style="width:850px"> | ||
+ | <source lang="java"> | ||
+ | marshaller.setProperty(MarshallerProperties.NAMESPACE_PREFIX_MAPPER, new MyPrefixMapper()); | ||
+ | marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new MyPrefixMapper()); | ||
+ | </source> | ||
+ | </div> | ||
+ | |||
+ | See: [[EclipseLink/Release/2.4.0/JAXB_RI_Extensions/Namespace_Prefix_Mapper | Namespace Prefix Mapper]] | ||
+ | |||
==Cycle Recoverable== | ==Cycle Recoverable== | ||
Line 27: | Line 41: | ||
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="text"> | <source lang="text"> | ||
Implement the com.sun.xml.bind.CycleRecoverable interface on JAXB domain class | Implement the com.sun.xml.bind.CycleRecoverable interface on JAXB domain class | ||
Line 33: | Line 47: | ||
</div> | </div> | ||
− | See: | + | See: [[EclipseLink/Release/2.4.0/JAXB_RI_Extensions/Cycle_Recoverable | Cycle Recoverable]] |
Line 40: | Line 54: | ||
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="java"> | <source lang="java"> | ||
marshaller.setProperty("com.sun.xml.bind.objectIdentitityCycleDetection", false); | marshaller.setProperty("com.sun.xml.bind.objectIdentitityCycleDetection", false); | ||
Line 48: | Line 62: | ||
==XML Declaration== | ==XML Declaration== | ||
− | Allows the user to omit the XML processing instruction from marshalled | + | Allows the user to omit the XML processing instruction from marshalled documents. This property is the opposite of Marshaller.JAXB_FRAGMENT, and is included for backwards compatibility only. |
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="java"> | <source lang="java"> | ||
marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", true); | marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", true); | ||
Line 62: | Line 76: | ||
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="java"> | <source lang="java"> | ||
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", headerString); | marshaller.setProperty("com.sun.xml.bind.xmlHeaders", headerString); | ||
Line 73: | Line 87: | ||
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="java"> | <source lang="java"> | ||
marshaller.setProperty("com.sun.xml.bind.indentString", indentString); | marshaller.setProperty("com.sun.xml.bind.indentString", indentString); | ||
− | marshaller.setProperty( | + | marshaller.setProperty(MarshallerProperties.INDENT_STRING, indentString); |
</source> | </source> | ||
</div> | </div> | ||
Line 85: | Line 99: | ||
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="java"> | <source lang="java"> | ||
marshaller.setProperty("com.sun.xml.bind.marshaller.CharacterEscapeHandler", new MyCharHandler()); | marshaller.setProperty("com.sun.xml.bind.marshaller.CharacterEscapeHandler", new MyCharHandler()); | ||
Line 92: | Line 106: | ||
</div> | </div> | ||
− | See: | + | See: [[EclipseLink/Release/2.4.0/JAXB_RI_Extensions/Character_Escape_Handler | Character Escape Handler]] |
Line 102: | Line 116: | ||
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="java"> | <source lang="java"> | ||
unmarshaller.setProperty("com.sun.xml.bind.IDResolver", new MyIdResolver()); | unmarshaller.setProperty("com.sun.xml.bind.IDResolver", new MyIdResolver()); | ||
Line 109: | Line 123: | ||
</div> | </div> | ||
− | See: | + | See: [[EclipseLink/Release/2.4.0/JAXB_RI_Extensions/ID_Resolver | ID Resolver]] |
Line 116: | Line 130: | ||
Usage: | Usage: | ||
− | <div style="width: | + | <div style="width:850px"> |
<source lang="java"> | <source lang="java"> | ||
Annotate a property with @XmlLocation | Annotate a property with @XmlLocation | ||
Line 122: | Line 136: | ||
</div> | </div> | ||
− | See: | + | See: [[EclipseLink/Release/2.4.0/JAXB_RI_Extensions/XML_Location | XML Location]] |
Latest revision as of 10:36, 19 June 2012
JAXB RI Extensions Support
In the current JAXB RI, developed by Sun, there is a series of "proprietary" JAXB extensions which provide advanced functionality outside of the JAXB specification (these extension classes and properties reside in the com.sun.xml.bind and com.sun.internal.xml.bind packages). This document outlines the new EclipseLink MOXy support for these extensions.
General Features
XML Accessor Factory
Allows the user to write their own logic to be used when setting and getting property values.
Usage:
- Implement com.sun.xml.bind.AccessorFactory interface - Implement com.sun.xml.bind.v2.runtime.reflect.Accessors for field/property access - Add com.sun.xml.bind.XmlAccessorFactory annotation at Class or Package level
See: @XmlAccessorFactory
Marshaller Features
Namespace Prefix Mapper
Allows the user to customize the way namespace prefixes are assigned to namespaces by extending the NamespacePrefixMapper class.
Usage:
marshaller.setProperty(MarshallerProperties.NAMESPACE_PREFIX_MAPPER, new MyPrefixMapper()); marshaller.setProperty("com.sun.xml.bind.namespacePrefixMapper", new MyPrefixMapper());
Cycle Recoverable
Allows the user to write their own logic to be used when object cycles are detected during marshal operations.
Usage:
Implement the com.sun.xml.bind.CycleRecoverable interface on JAXB domain class
See: Cycle Recoverable
Object Identitity Cycle Detection
Used to configure the strategy EclipseLink will use to detect an Object cycle. By default, EclipseLink will use Object identity to determine if a cycle exists; setting this property to false will tell EclipseLink to use the equals() method instead.
Usage:
marshaller.setProperty("com.sun.xml.bind.objectIdentitityCycleDetection", false);
XML Declaration
Allows the user to omit the XML processing instruction from marshalled documents. This property is the opposite of Marshaller.JAXB_FRAGMENT, and is included for backwards compatibility only.
Usage:
marshaller.setProperty("com.sun.xml.bind.xmlDeclaration", true);
XML Headers
Allows the user to supply a header string, which will appear after the XML processing instruction (<?xml ...>), but before the start of the document's data.
Usage:
marshaller.setProperty("com.sun.xml.bind.xmlHeaders", headerString);
Indent String
Allows the user to override the indent string that is used when marshalling objects.
Usage:
marshaller.setProperty("com.sun.xml.bind.indentString", indentString); marshaller.setProperty(MarshallerProperties.INDENT_STRING, indentString);
Character Escape Handler
Allows the user to provide their own character-escaping logic by supplying their own implementation of the CharacterEscapeHandler interface.
Usage:
marshaller.setProperty("com.sun.xml.bind.marshaller.CharacterEscapeHandler", new MyCharHandler()); marshaller.setProperty(MarshallerProperties.CHARACTER_ESCAPE_HANDLER, new MyCharHandler());
Unmarshaller Features
ID Resolver
Allows the user to provide their own logic for resolving XML IDs/IDREFs by supplying their own implementation of the IDResolver interface.
Usage:
unmarshaller.setProperty("com.sun.xml.bind.IDResolver", new MyIdResolver()); unmarshaller.setProperty(UnmarshallerProperties.ID_RESOLVER, new MyIdResolver());
See: ID Resolver
XML Location
Allows the user to specify a property on the JAXB object that will be updated (upon unmarshalling) with that object's XML location information (i.e. the line number, column number, and system ID that points to this object's location in the XML input).
Usage:
Annotate a property with @XmlLocation
See: XML Location