package org.camunda.bpm.extension.mockito.function;
import java.io.StringWriter;
import java.util.function.Function;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.dom.DOMSource;
import javax.xml.transform.stream.StreamResult;
import org.w3c.dom.Node;
/**
* Returns String representation of given DOM node.
*
* @author Jan Galinski, Holisticon AG
*/
class NodeToString implements Function<Node, String> {
public static final NodeToString INSTANCE = new NodeToString();
private final Transformer transformer;
private NodeToString() {
try {
transformer = TransformerFactory.newInstance().newTransformer();
transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "yes");
} catch (TransformerConfigurationException e) {
throw new RuntimeException(e);
}
}
@Override
public String apply(final Node document) {
final StringWriter writer = new StringWriter();
try {
transformer.transform(new DOMSource(document), new StreamResult(writer));
return writer.toString();
} catch (TransformerException e) {
throw new RuntimeException(e);
}
}
}