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/Release/2.4.0/JAXB RI Extensions/Character Escape Handler"
Line 32: | Line 32: | ||
JAXBContext ctx = ... | JAXBContext ctx = ... | ||
Marshaller m = ctx.createMarshaller(); | Marshaller m = ctx.createMarshaller(); | ||
− | m.setProperty(org.eclipse.persistence.jaxb.JAXBMarshaller.CHARACTER_ESCAPE_HANDLER, new | + | m.setProperty(org.eclipse.persistence.jaxb.JAXBMarshaller.CHARACTER_ESCAPE_HANDLER, new MyHandler()); |
... | ... | ||
</source> | </source> | ||
</div> | </div> | ||
− | '''Note:''' EclipseLink also supports Sun's | + | '''Note:''' EclipseLink also supports Sun's CharacterEscapeHandler property names: |
<div style="width:850px"> | <div style="width:850px"> | ||
<source lang="java"> | <source lang="java"> | ||
− | m.setProperty("com.sun.xml.bind.marshaller.CharacterEscapeHandler", new | + | m.setProperty("com.sun.xml.bind.marshaller.CharacterEscapeHandler", new MyHandler()); |
− | m.setProperty("com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler", new | + | m.setProperty("com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler", new MyHandler()); |
</source> | </source> | ||
</div> | </div> |
Revision as of 12:19, 22 February 2012
Design Documentation: CharacterEscapeHandler
In the current JAXB RI, developed by Sun, there are a series of "proprietary" JAXB extensions that are available to provide advanced JAXB functionality outside of the JAXB spec (these extension classes reside in the com.sun.xml.bind package).
The CharacterEscapeHandler interface provided in the Sun JAXB implementation allows users to write their own character escaping code, to be used when marshalling.
This document will outline the design for an EclipseLink equivalent to this extension.
Requirements
- Provide an interface that the user can implement, and use this implementation when escaping characters during marshal.
- Provide drop-in-replacement support, so that users already using the Sun implementation will not need to change their code when switching to EclipseLink.
Behaviour
If a custom CharacterEscapeHandler is set, then that class will be responsible for all character escaping during marshal operations.
Configuration
A custom CharacterEscapeHandler can be specified on a Marshaller using the addProperty() method:
... JAXBContext ctx = ... Marshaller m = ctx.createMarshaller(); m.setProperty(org.eclipse.persistence.jaxb.JAXBMarshaller.CHARACTER_ESCAPE_HANDLER, new MyHandler()); ...
Note: EclipseLink also supports Sun's CharacterEscapeHandler property names:
m.setProperty("com.sun.xml.bind.marshaller.CharacterEscapeHandler", new MyHandler()); m.setProperty("com.sun.xml.internal.bind.marshaller.CharacterEscapeHandler", new MyHandler());