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"
Line 2: | Line 2: | ||
In the JAXB RI, developed by Sun, there are a series of "proprietary" extensions that are available to provide advanced JAXB functionality outside of the JAXB spec (these extension classes 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. | In the JAXB RI, developed by Sun, there are a series of "proprietary" extensions that are available to provide advanced JAXB functionality outside of the JAXB spec (these extension classes 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: <code>Implement the com.sun.xml.bind.AccessorFactory interface, use com.sun.xml.bind.XmlAccessorFactory annotation</code> | ||
+ | |||
+ | See: http://wiki.eclipse.org/EclipseLink/Development/372403 | ||
Revision as of 15:25, 4 June 2012
In the JAXB RI, developed by Sun, there are a series of "proprietary" extensions that are available to provide advanced JAXB functionality outside of the JAXB spec (these extension classes 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 the com.sun.xml.bind.AccessorFactory interface, use com.sun.xml.bind.XmlAccessorFactory annotation
See: http://wiki.eclipse.org/EclipseLink/Development/372403
Marshaller Features
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
See: http://wiki.eclipse.org/EclipseLink/Development/372404
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 documens. 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(org.eclipse.persistence.jaxb.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 MyCharacterEscapeHandler());
marshaller.setProperty(org.eclipse.persistence.jaxb.MarshallerProperties.CHARACTER_ESCAPE_HANDLER, new MyCharacterEscapeHandler());
See: http://wiki.eclipse.org/EclipseLink/Development/370589
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: http://wiki.eclipse.org/EclipseLink/Development/360249
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