From c428fcf626e499334cde793529ecb0e97a522942 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Sat, 11 Mar 2017 23:49:39 +0100 Subject: [PATCH] Simplify data encoding in AbstractNotificationsData Rather than performing a two-step conversion via a writer, output stream directly into bytes and then convert the result into a String via StandardCharsets.UTF_8. Change-Id: I010c1f46d2a2f78b619cf7af03c565ec68b6b457 Signed-off-by: Robert Varga --- .../listeners/AbstractNotificationsData.java | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/restconf/sal-rest-connector/src/main/java/org/opendaylight/netconf/sal/streams/listeners/AbstractNotificationsData.java b/restconf/sal-rest-connector/src/main/java/org/opendaylight/netconf/sal/streams/listeners/AbstractNotificationsData.java index f9cefcd0de..3b60f67790 100644 --- a/restconf/sal-rest-connector/src/main/java/org/opendaylight/netconf/sal/streams/listeners/AbstractNotificationsData.java +++ b/restconf/sal-rest-connector/src/main/java/org/opendaylight/netconf/sal/streams/listeners/AbstractNotificationsData.java @@ -9,8 +9,6 @@ package org.opendaylight.netconf.sal.streams.listeners; import java.io.ByteArrayOutputStream; import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.UnsupportedEncodingException; import java.nio.charset.StandardCharsets; import java.util.Date; import javax.xml.stream.XMLOutputFactory; @@ -181,22 +179,23 @@ abstract class AbstractNotificationsData { * @return - string from {@link Document} */ protected String transformDoc(final Document doc) { + final ByteArrayOutputStream out = new ByteArrayOutputStream(); + try { - final ByteArrayOutputStream out = new ByteArrayOutputStream(); final Transformer transformer = ListenersConstants.FACTORY.newTransformer(); transformer.setOutputProperty(OutputKeys.OMIT_XML_DECLARATION, "no"); transformer.setOutputProperty(OutputKeys.METHOD, "xml"); transformer.setOutputProperty(OutputKeys.INDENT, "yes"); transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8"); transformer.setOutputProperty("{http://xml.apache.org/xslt}indent-amount", "4"); - transformer.transform(new DOMSource(doc), - new StreamResult(new OutputStreamWriter(out, StandardCharsets.UTF_8))); - final byte[] charData = out.toByteArray(); - return new String(charData, "UTF-8"); - } catch (TransformerException | UnsupportedEncodingException e) { + transformer.transform(new DOMSource(doc), new StreamResult(out)); + } catch (TransformerException e) { + // FIXME: this should raise an exception final String msg = "Error during transformation of Document into String"; LOG.error(msg, e); return msg; } + + return new String(out.toByteArray(), StandardCharsets.UTF_8); } } -- 2.36.6