Refactor XMLStreamWriterUtils 70/78070/1
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 22 Nov 2018 21:19:24 +0000 (22:19 +0100)
committerRobert Varga <nite@hq.sk>
Thu, 22 Nov 2018 23:51:05 +0000 (23:51 +0000)
This refactors XMLStreamWriterUtils, so that it can be a proper
SchemaContextProvider. This allows us to propagate this property
through SchemaAwareXMLStreamNormalizedNodeStreamWriter the same
way.

Change-Id: Ibe0832e76d3e66ca27f8d345f7fd6f890b92f35e
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 9c73f586bfae63818e0ded04dd8282d4c7c8e468)

yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamNormalizedNodeStreamWriter.java
yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/SchemaAwareXMLStreamWriterUtils.java
yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XMLStreamWriterUtils.java

index 2cbe0f2421c6b19169d905a9178731c226534352..dd0701fc6c0b6bce79dec13c6d0fa063a89dda64 100644 (file)
@@ -26,18 +26,20 @@ import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaPath;
 
-final class SchemaAwareXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedNodeStreamWriter<SchemaNode> {
+final class SchemaAwareXMLStreamNormalizedNodeStreamWriter extends XMLStreamNormalizedNodeStreamWriter<SchemaNode>
+        implements SchemaContextProvider {
     private final SchemaTracker tracker;
-    private final XMLStreamWriterUtils streamUtils;
+    private final SchemaAwareXMLStreamWriterUtils streamUtils;
 
     private SchemaAwareXMLStreamNormalizedNodeStreamWriter(final XMLStreamWriter writer, final SchemaContext context,
                                                            final SchemaPath path) {
         super(writer);
         this.tracker = SchemaTracker.create(context, path);
-        this.streamUtils = XMLStreamWriterUtils.create(context);
+        this.streamUtils = new SchemaAwareXMLStreamWriterUtils(context);
     }
 
     static NormalizedNodeStreamWriter newInstance(final XMLStreamWriter writer, final SchemaContext context,
@@ -140,4 +142,9 @@ final class SchemaAwareXMLStreamNormalizedNodeStreamWriter extends XMLStreamNorm
         final AnyXmlSchemaNode schema = tracker.anyxmlNode(name);
         anyxmlNode(schema.getQName(), value);
     }
+
+    @Override
+    public SchemaContext getSchemaContext() {
+        return streamUtils.getSchemaContext();
+    }
 }
index 55a08c8fecd70d95f45dcfccae9c492b4b92a367..fdf6c9b9e4af7173d13303ea7ed7a9a7bc4f6091 100644 (file)
@@ -16,12 +16,13 @@ import javax.xml.stream.XMLStreamException;
 import javax.xml.stream.XMLStreamWriter;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaContextProvider;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
 import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
 
-final class SchemaAwareXMLStreamWriterUtils extends XMLStreamWriterUtils {
+final class SchemaAwareXMLStreamWriterUtils extends XMLStreamWriterUtils implements SchemaContextProvider {
     private final SchemaContext schemaContext;
 
     SchemaAwareXMLStreamWriterUtils(final SchemaContext schemaContext) {
@@ -47,4 +48,9 @@ final class SchemaAwareXMLStreamWriterUtils extends XMLStreamWriterUtils {
 
         writer.writeCharacters(serializedValue);
     }
+
+    @Override
+    public SchemaContext getSchemaContext() {
+        return schemaContext;
+    }
 }
index 73d03108df50213e5d31b39cfa0c6e43c470f216..a6af3c1054793523daea826c7cff5e40d59ef479 100644 (file)
@@ -19,7 +19,6 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.impl.codec.TypeDefinitionAwareCodec;
-import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode;
@@ -36,11 +35,6 @@ import org.slf4j.LoggerFactory;
 abstract class XMLStreamWriterUtils {
     private static final Logger LOG = LoggerFactory.getLogger(XMLStreamWriterUtils.class);
 
-    static XMLStreamWriterUtils create(final SchemaContext schemaContext) {
-        return schemaContext == null ? SchemalessXMLStreamWriterUtils.INSTANCE
-                : new SchemaAwareXMLStreamWriterUtils(schemaContext);
-    }
-
     @VisibleForTesting
     static void writeAttribute(final XMLStreamWriter writer, final Entry<QName, String> attribute,
                                final RandomPrefix randomPrefix) throws XMLStreamException {