Bug 5019: Add QName param to NormalizedNodeWriter#leafSetEntryNode
[yangtools.git] / yang / yang-data-codec-gson / src / main / java / org / opendaylight / yangtools / yang / data / codec / gson / ListNodeDataWithSchema.java
index 612c386e23a99cd248930f89f722156c647afd9a..abbf1eaec48dd67cf90c4a6e455e8c1271e4cab2 100644 (file)
@@ -7,11 +7,8 @@
  */
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
-import static org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter.UNKNOWN_SIZE;
-
 import java.io.IOException;
-
-import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.SchemaAwareNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 
@@ -22,14 +19,18 @@ class ListNodeDataWithSchema extends CompositeNodeDataWithSchema {
     }
 
     @Override
-    protected void writeToStream(final NormalizedNodeStreamWriter nnStreamWriter) throws IOException {
-        if (!((ListSchemaNode) getSchema()).getKeyDefinition().isEmpty()) {
-            nnStreamWriter.startMapNode(provideNodeIdentifier(), UNKNOWN_SIZE);
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
+        final ListSchemaNode schema = (ListSchemaNode) getSchema();
+        writer.nextDataSchemaNode(schema);
+        if (schema.getKeyDefinition().isEmpty()) {
+            writer.startUnkeyedList(provideNodeIdentifier(), childSizeHint());
+        } else if(schema.isUserOrdered()) {
+            writer.startOrderedMapNode(provideNodeIdentifier(), childSizeHint());
         } else {
-            nnStreamWriter.startUnkeyedList(provideNodeIdentifier(), UNKNOWN_SIZE);
+            writer.startMapNode(provideNodeIdentifier(), childSizeHint());
         }
-        super.writeToStream(nnStreamWriter);
-        nnStreamWriter.endNode();
+        super.write(writer);
+        writer.endNode();
     }
 
 }