Refactor implementations to hide XMLStreamWriter
[yangtools.git] / yang / yang-data-codec-xml / src / main / java / org / opendaylight / yangtools / yang / data / codec / xml / SchemalessXMLStreamNormalizedNodeStreamWriter.java
index 9964a19837b3220a4204b68aa045b3266e8639e1..8cbe0d2d664121c4e324fa62abb2140771069e55 100644 (file)
@@ -12,16 +12,14 @@ import java.util.ArrayDeque;
 import java.util.Collections;
 import java.util.Deque;
 import java.util.Map;
-import javax.annotation.Nonnull;
 import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 
-class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedNodeStreamWriter<Object> {
+final class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedNodeStreamWriter<Object> {
     private enum ContainerType {
         CONTAINER,
         LEAF_SET,
@@ -34,17 +32,13 @@ class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedN
 
     private final Deque<ContainerType> containerTypeStack = new ArrayDeque<>();
 
-    private SchemalessXMLStreamNormalizedNodeStreamWriter(final XMLStreamWriter writer) {
+    SchemalessXMLStreamNormalizedNodeStreamWriter(final XMLStreamWriter writer) {
         super(writer);
     }
 
-    static NormalizedNodeStreamWriter newInstance(final XMLStreamWriter writer) {
-        return new SchemalessXMLStreamNormalizedNodeStreamWriter(writer);
-    }
-
     @Override
     public void leafNode(final NodeIdentifier name, final Object value, final Map<QName, String> attributes)
-        throws IOException {
+            throws IOException {
         writeElement(name.getNodeType(), value, attributes, null);
     }
 
@@ -55,7 +49,7 @@ class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedN
 
     @Override
     public void leafSetEntryNode(final QName name, final Object value, final Map<QName, String> attributes)
-        throws IOException {
+            throws IOException {
         writeElement(name, value, attributes, null);
     }
 
@@ -70,8 +64,7 @@ class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedN
     }
 
     @Override
-    public void startOrderedLeafSet(final NodeIdentifier name, final int childSizeHint)
-            throws IOException, IllegalArgumentException {
+    public void startOrderedLeafSet(final NodeIdentifier name, final int childSizeHint) throws IOException {
         containerTypeStack.push(ContainerType.LEAF_SET);
     }
 
@@ -103,31 +96,30 @@ class SchemalessXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedN
     }
 
     @Override
-    protected void writeValue(final XMLStreamWriter xmlWriter, final QName qname, @Nonnull final Object value,
-            final Object context)
+    void writeValue(final XMLStreamWriter xmlWriter, final QName qname, final Object value, final Object context)
             throws XMLStreamException {
         xmlWriter.writeCharacters(value.toString());
     }
 
     @Override
-    protected void startList(final NodeIdentifier name) {
+    void startList(final NodeIdentifier name) {
         containerTypeStack.push(ContainerType.LIST);
     }
 
     @Override
-    protected void startListItem(final PathArgument name) throws IOException {
+    void startListItem(final PathArgument name) throws IOException {
         containerTypeStack.push(ContainerType.LIST_ITEM);
         startElement(name.getNodeType());
     }
 
     @Override
-    protected void endNode(final XMLStreamWriter xmlWriter) throws IOException, XMLStreamException {
+    public void endNode() throws IOException {
         ContainerType type = containerTypeStack.pop();
         switch (type) {
             case CONTAINER:
             case LIST_ITEM:
             case ANY_XML:
-                xmlWriter.writeEndElement();
+                endElement();
                 break;
             default:
                 break;