Backport of bug 363593 to 2.2 stream
diff --git a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/internal/jaxb/DomHandlerConverter.java b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/internal/jaxb/DomHandlerConverter.java
index beacb4d..b515e11 100644
--- a/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/internal/jaxb/DomHandlerConverter.java
+++ b/moxy/org.eclipse.persistence.moxy/src/org/eclipse/persistence/internal/jaxb/DomHandlerConverter.java
@@ -28,6 +28,7 @@
import org.eclipse.persistence.oxm.mappings.converters.XMLConverter;
import org.eclipse.persistence.oxm.XMLMarshaller;
import org.eclipse.persistence.oxm.XMLUnmarshaller;
+import org.eclipse.persistence.platform.xml.XMLPlatform;
import org.eclipse.persistence.platform.xml.XMLPlatformFactory;
import org.eclipse.persistence.platform.xml.XMLTransformer;
import org.eclipse.persistence.sessions.Session;
@@ -47,7 +48,7 @@
*/
public class DomHandlerConverter implements XMLConverter {
private DomHandler domHandler;
- private XMLTransformer xmlTransformer;
+ private XMLPlatform xmlPlatform;
private String domHandlerClassName;
private Class elementClass;
private Class resultType;
@@ -69,8 +70,7 @@
Method getElementMethod = PrivilegedAccessHelper.getDeclaredMethod(domHandlerClass, "getElement", new Class[]{resultType});
elementClass = PrivilegedAccessHelper.getMethodReturnType(getElementMethod);
- xmlTransformer = XMLPlatformFactory.getInstance().getXMLPlatform().newXMLTransformer();
- xmlTransformer.setFormattedOutput(true);
+ xmlPlatform = XMLPlatformFactory.getInstance().getXMLPlatform();
} catch(Exception ex) {
throw JAXBException.couldNotInitializeDomHandlerConverter(ex, domHandlerClassName, mapping.getAttributeName());
}
@@ -85,9 +85,8 @@
} else {
result = domHandler.createUnmarshaller(null);
}
- xmlTransformer.transform((org.w3c.dom.Element)dataValue, result);
- Object value = domHandler.getElement(result);
- return value;
+ xmlPlatform.newXMLTransformer().transform((org.w3c.dom.Element)dataValue, result);
+ return domHandler.getElement(result);
}
return dataValue;
}
@@ -96,6 +95,8 @@
if (objectValue != null && elementClass.isAssignableFrom(objectValue.getClass())) {
Source source = domHandler.marshal(objectValue, null);
DOMResult result = new DOMResult();
+ XMLTransformer xmlTransformer = xmlPlatform.newXMLTransformer();
+ xmlTransformer.setFormattedOutput(marshaller.isFormattedOutput());
xmlTransformer.transform(source, result);
return result.getNode();
}