Eliminate SubscribeToStreamUtil
[netconf.git] / restconf / restconf-nb / src / main / java / org / opendaylight / restconf / nb / rfc8040 / streams / listeners / XMLDataTreeCandidateFormatter.java
index 1d16ce3d72f96e8ae6ffb1f25e970887a16a7c5e..57ea6f7392b1dbf57748f3fe47d8d418e3afa98c 100644 (file)
@@ -14,52 +14,51 @@ import java.io.IOException;
 import java.io.StringWriter;
 import java.time.Instant;
 import java.util.Collection;
+import javax.xml.XMLConstants;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.xpath.XPathExpressionException;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeCandidate;
 import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 
 public final class XMLDataTreeCandidateFormatter extends DataTreeCandidateFormatter {
-    private static final XMLDataTreeCandidateFormatter INSTANCE = new XMLDataTreeCandidateFormatter();
+    private static final XMLDataTreeCandidateFormatter EMPTY = new XMLDataTreeCandidateFormatter(TextParameters.EMPTY);
 
-    static final DataTreeCandidateFormatterFactory FACTORY =
-        new DataTreeCandidateFormatterFactory() {
-            @Override
-            public XMLDataTreeCandidateFormatter getFormatter(final String xpathFilter)
-                    throws XPathExpressionException {
-                return new XMLDataTreeCandidateFormatter(xpathFilter);
-            }
-
-            @Override
-            public XMLDataTreeCandidateFormatter getFormatter() {
-                return INSTANCE;
-            }
-        };
+    static final DataTreeCandidateFormatterFactory FACTORY = new DataTreeCandidateFormatterFactory(EMPTY) {
+        @Override
+        XMLDataTreeCandidateFormatter getFormatter(final TextParameters textParams, final String xpathFilter)
+                throws XPathExpressionException {
+            return new XMLDataTreeCandidateFormatter(textParams, xpathFilter);
+        }
 
-    private XMLDataTreeCandidateFormatter() {
+        @Override
+        XMLDataTreeCandidateFormatter newFormatter(final TextParameters textParams) {
+            return new XMLDataTreeCandidateFormatter(textParams);
+        }
+    };
 
+    private XMLDataTreeCandidateFormatter(final TextParameters textParams) {
+        super(textParams);
     }
 
-    private XMLDataTreeCandidateFormatter(final String xpathFilter) throws XPathExpressionException {
-        super(xpathFilter);
+    private XMLDataTreeCandidateFormatter(final TextParameters textParams, final String xpathFilter)
+            throws XPathExpressionException {
+        super(textParams, xpathFilter);
     }
 
     @Override
-    String createText(final EffectiveModelContext schemaContext, final Collection<DataTreeCandidate> input,
-            final Instant now, final boolean leafNodesOnly, final boolean skipData, final boolean changedLeafNodesOnly,
-            final boolean childNodeOnly) throws Exception {
+    String createText(final TextParameters params, final EffectiveModelContext schemaContext,
+            final Collection<DataTreeCandidate> input, final Instant now) throws Exception {
         final var writer = new StringWriter();
         boolean nonEmpty = false;
         try {
             final var xmlStreamWriter = NotificationFormatter.createStreamWriterWithNotification(writer, now);
-
-            xmlStreamWriter.setDefaultNamespace(SAL_REMOTE_NAMESPACE);
-            xmlStreamWriter.writeStartElement(SAL_REMOTE_NAMESPACE, DATA_CHANGED_NOTIFICATION_ELEMENT);
+            xmlStreamWriter.writeStartElement(XMLConstants.DEFAULT_NS_PREFIX, DATA_CHANGED_NOTIFICATION_ELEMENT,
+                SAL_REMOTE_NAMESPACE);
+            xmlStreamWriter.writeDefaultNamespace(SAL_REMOTE_NAMESPACE);
 
             final var serializer = new XmlDataTreeCandidateSerializer(schemaContext, xmlStreamWriter);
             for (var candidate : input) {
-                nonEmpty |= serializer.serialize(candidate, leafNodesOnly, skipData, changedLeafNodesOnly,
-                    childNodeOnly);
+                nonEmpty |= serializer.serialize(candidate, params);
             }
 
             // data-changed-notification