Clean up XML interactions
[netconf.git] / restconf / restconf-nb / src / main / java / org / opendaylight / restconf / nb / rfc8040 / streams / listeners / XMLDataTreeCandidateFormatter.java
index 1ca5a941ea3a5886816fb262f1abee71b183ae97..b660c12333386e5145c127690f82a162b947d94e 100644 (file)
@@ -8,17 +8,13 @@
 package org.opendaylight.restconf.nb.rfc8040.streams.listeners;
 
 import static org.opendaylight.restconf.nb.rfc8040.streams.listeners.NotificationFormatter.DATA_CHANGED_NOTIFICATION_ELEMENT;
-import static org.opendaylight.restconf.nb.rfc8040.streams.listeners.NotificationFormatter.NOTIFICATION_ELEMENT;
-import static org.opendaylight.restconf.nb.rfc8040.streams.listeners.NotificationFormatter.NOTIFICATION_NAMESPACE;
 import static org.opendaylight.restconf.nb.rfc8040.streams.listeners.NotificationFormatter.SAL_REMOTE_NAMESPACE;
-import static org.opendaylight.restconf.nb.rfc8040.streams.listeners.NotificationFormatter.XML_OUTPUT_FACTORY;
 
 import java.io.IOException;
 import java.io.StringWriter;
 import java.time.Instant;
 import java.util.Collection;
 import javax.xml.stream.XMLStreamException;
-import javax.xml.stream.XMLStreamWriter;
 import javax.xml.xpath.XPathExpressionException;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
@@ -51,27 +47,16 @@ public final class XMLDataTreeCandidateFormatter extends DataTreeCandidateFormat
     @Override
     String createText(final EffectiveModelContext schemaContext, final Collection<DataTreeCandidate> input,
                       final Instant now, final boolean leafNodesOnly, final boolean skipData) throws Exception {
-        StringWriter writer = new StringWriter();
+        final var writer = new StringWriter();
 
-        final XMLStreamWriter xmlStreamWriter;
         try {
-            xmlStreamWriter = XML_OUTPUT_FACTORY.createXMLStreamWriter(writer);
-            xmlStreamWriter.setDefaultNamespace(NOTIFICATION_NAMESPACE);
-
-            xmlStreamWriter.writeStartElement(NOTIFICATION_NAMESPACE, NOTIFICATION_ELEMENT);
-            xmlStreamWriter.writeDefaultNamespace(NOTIFICATION_NAMESPACE);
-
-            xmlStreamWriter.writeStartElement("eventTime");
-            xmlStreamWriter.writeCharacters(toRFC3339(now));
-            xmlStreamWriter.writeEndElement();
+            final var xmlStreamWriter = NotificationFormatter.createStreamWriterWithNotification(writer, now);
 
             xmlStreamWriter.setDefaultNamespace(SAL_REMOTE_NAMESPACE);
             xmlStreamWriter.writeStartElement(SAL_REMOTE_NAMESPACE, DATA_CHANGED_NOTIFICATION_ELEMENT);
 
-            final XmlDataTreeCandidateSerializer serializer =
-                    new XmlDataTreeCandidateSerializer(schemaContext, xmlStreamWriter);
-
-            for (final DataTreeCandidate candidate : input) {
+            final var serializer = new XmlDataTreeCandidateSerializer(schemaContext, xmlStreamWriter);
+            for (var candidate : input) {
                 serializer.serialize(candidate, leafNodesOnly, skipData);
             }
 
@@ -85,7 +70,6 @@ public final class XMLDataTreeCandidateFormatter extends DataTreeCandidateFormat
             throw new IOException("Failed to write notification content", e);
         }
 
-
         return writer.toString();
     }
 }