Community
Participate
Working Groups
An error is occurring during the marshal operation when a DOMHandler is used with a non-DOM field/property: import javax.xml.bind.annotation.XmlAccessType; import javax.xml.bind.annotation.XmlAccessorType; import javax.xml.bind.annotation.XmlAnyElement; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement(name="main") @XmlAccessorType(XmlAccessType.FIELD) public class Main { private String name; private Integer maxInstances; @XmlAnyElement(value=ParameterHandler.class) private String parameters; } and import java.io.StringReader; import java.io.StringWriter; import javax.xml.bind.ValidationEventHandler; import javax.xml.bind.annotation.DomHandler; import javax.xml.transform.Source; import javax.xml.transform.stream.StreamResult; import javax.xml.transform.stream.StreamSource; public class ParameterHandler implements DomHandler<String, StreamResult> { private static final String PARAMETERS_START_TAG = "<parameters>"; private static final String PARAMETERS_END_TAG = "</parameters>"; private StringWriter xmlWriter = new StringWriter(); public StreamResult createUnmarshaller(ValidationEventHandler errorHandler) { return new StreamResult(xmlWriter); } public String getElement(StreamResult rt) { String xml = rt.getWriter().toString(); int beginIndex = xml.indexOf(PARAMETERS_START_TAG) + PARAMETERS_START_TAG.length(); int endIndex = xml.indexOf(PARAMETERS_END_TAG); return xml.substring(beginIndex, endIndex); } public Source marshal(String n, ValidationEventHandler errorHandler) { String xml = PARAMETERS_START_TAG + n.trim() + PARAMETERS_END_TAG; StringReader xmlReader = new StringReader(xml); return new StreamSource(xmlReader); } } With XML: <main> <name>JET</name> <maxInstances>5</maxInstances> <parameters> <a>1</a> <b> <b1>test1</b1> <b2>test2</b2> </b> </parameters> </main>
Created attachment 192488 [details] MOXy - Test Cases
Created attachment 192489 [details] MOXy - Fix
Created attachment 192562 [details] MOXy - Fix
Fix checked into trunk at rev: 9206 Code reviewed by: Matt MacIvor Fix Description: The DOMHandler is now leveraged during the marshal operation when necessary.
The Eclipselink project has moved to Github: https://github.com/eclipse-ee4j/eclipselink