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;
@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);
}
throw new IOException("Failed to write notification content", e);
}
-
return writer.toString();
}
}