BUG-4261: convert JSON parser to pass down SchemaNode information 48/28248/3
authorRobert Varga <rovarga@cisco.com>
Fri, 9 Oct 2015 17:14:51 +0000 (19:14 +0200)
committerGerrit Code Review <gerrit@opendaylight.org>
Mon, 12 Oct 2015 08:53:51 +0000 (08:53 +0000)
Change-Id: I2519e3b77d88394c425e79610208a7c8d4a98b9f
Signed-off-by: Robert Varga <rovarga@cisco.com>
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/AbstractNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/AnyXmlNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/ChoiceNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/CompositeNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/ContainerNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/LeafListEntryNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/LeafListNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/LeafNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/ListEntryNodeDataWithSchema.java
yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/ListNodeDataWithSchema.java

index d448d12ee6b5527acfbf2cb7c0ee162cc2d5ef24..fd4fabfe89bead69f3faa86129d0ef9c2925312f 100644 (file)
@@ -12,7 +12,7 @@ import com.google.common.base.Preconditions;
 import java.io.IOException;
 import java.util.Objects;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-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;
 
 /**
@@ -40,7 +40,7 @@ abstract class AbstractNodeDataWithSchema {
      * @param writer Target writer
      * @throws IOException reported when thrown by the writer.
      */
-    public abstract void write(final NormalizedNodeStreamWriter writer) throws IOException;
+    public abstract void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException;
 
     protected final NodeIdentifier provideNodeIdentifier() {
         return NodeIdentifier.create(schema.getQName());
index 2c674d6e46e80bae8d9337ef4d5435b62af3e608..76a960bfd80cb27e259c82dfaf8f793cba52b06c 100644 (file)
@@ -8,8 +8,7 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 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;
 
 class AnyXmlNodeDataWithSchema extends SimpleNodeDataWithSchema {
@@ -19,7 +18,8 @@ class AnyXmlNodeDataWithSchema extends SimpleNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
+        writer.nextDataSchemaNode(getSchema());
         // FIXME: should be changed according to format of value
         writer.anyxmlNode(provideNodeIdentifier(), getValue());
     }
index b7ab6fa19bef10d50eccd9dc9f612c3b0e1f5022..b246959835cc93c214f5c63cf05353c84f99f718 100644 (file)
@@ -8,7 +8,7 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 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.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
@@ -39,7 +39,8 @@ class ChoiceNodeDataWithSchema extends CompositeNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
+        writer.nextDataSchemaNode(getSchema());
         writer.startChoiceNode(provideNodeIdentifier(), childSizeHint());
         super.write(writer);
         writer.endNode();
index 66abf9bebfc30a70c137cb8ed90b3ff5381d8a20..23654dbb6d18a5024197781864320f128b9e8a40 100644 (file)
@@ -16,7 +16,7 @@ import java.util.Collection;
 import java.util.Deque;
 import java.util.List;
 import java.util.Map.Entry;
-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.data.impl.schema.SchemaUtils;
 import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
@@ -174,13 +174,14 @@ class CompositeNodeDataWithSchema extends AbstractNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
         for (AbstractNodeDataWithSchema child : children) {
             child.write(writer);
         }
         for (Entry<AugmentationSchema, Collection<AbstractNodeDataWithSchema>> augmentationToChild : augmentationsToChild.asMap().entrySet()) {
             final Collection<AbstractNodeDataWithSchema> childsFromAgumentation = augmentationToChild.getValue();
             if (!childsFromAgumentation.isEmpty()) {
+                // FIXME: can we get the augmentation schema?
                 writer.startAugmentationNode(SchemaUtils.getNodeIdentifierForAugmentation(augmentationToChild.getKey()));
 
                 for (AbstractNodeDataWithSchema nodeDataWithSchema : childsFromAgumentation) {
index b473e9e8a19c7ae1334186f5da1ffc5d60f9abe7..68371878fe22fc285269d657da5541c3697f05b9 100644 (file)
@@ -8,8 +8,7 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 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;
 
 class ContainerNodeDataWithSchema extends CompositeNodeDataWithSchema {
@@ -19,7 +18,8 @@ class ContainerNodeDataWithSchema extends CompositeNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
+        writer.nextDataSchemaNode(getSchema());
         writer.startContainerNode(provideNodeIdentifier(), childSizeHint());
         super.write(writer);
         writer.endNode();
index da5315bba17e805dc5e10d021e077065ef186cd7..e44b5989fd74d7762296c501d448c916a4ba18b6 100644 (file)
@@ -27,7 +27,9 @@ import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.data.api.schema.stream.DataSchemaNodeAwareAdaptor;
 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.AnyXmlSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
 import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode;
@@ -45,14 +47,14 @@ import org.opendaylight.yangtools.yang.model.api.SchemaNode;
 @Beta
 public final class JsonParserStream implements Closeable, Flushable {
     private final Deque<URI> namespaces = new ArrayDeque<>();
-    private final NormalizedNodeStreamWriter writer;
+    private final SchemaAwareNormalizedNodeStreamWriter writer;
     private final JSONCodecFactory codecs;
     private final SchemaContext schema;
     private final DataSchemaNode parentNode;
 
     private JsonParserStream(final NormalizedNodeStreamWriter writer, final SchemaContext schemaContext, final DataSchemaNode parentNode) {
         this.schema = Preconditions.checkNotNull(schemaContext);
-        this.writer = Preconditions.checkNotNull(writer);
+        this.writer = DataSchemaNodeAwareAdaptor.forWriter(writer);
         this.codecs = JSONCodecFactory.create(schemaContext);
         this.parentNode = parentNode;
     }
index 7063be6753b9b308ab40ec904e4483730a6e610c..d415dc06334fa766245ad43cad4428a944fd08a6 100644 (file)
@@ -8,8 +8,7 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 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;
 
 class LeafListEntryNodeDataWithSchema extends SimpleNodeDataWithSchema {
@@ -18,7 +17,8 @@ class LeafListEntryNodeDataWithSchema extends SimpleNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
+        writer.nextDataSchemaNode(getSchema());
         writer.leafSetEntryNode(getValue());
     }
 }
index 20a607d5fe6c1ea31c6b374bd1a2fb314eba90fb..8357be54a910fc4ef4ec91de39dd1682be3d14ec 100644 (file)
@@ -8,8 +8,7 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 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;
 
 class LeafListNodeDataWithSchema extends CompositeNodeDataWithSchema {
@@ -18,7 +17,8 @@ class LeafListNodeDataWithSchema extends CompositeNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
+        writer.nextDataSchemaNode(getSchema());
         writer.startLeafSet(provideNodeIdentifier(), childSizeHint());
         super.write(writer);
         writer.endNode();
index fc8c814c3f4d987852e9e03f609702aea33fc0ea..32263d68dccd8ac8bd8a97faa5de25393ac72a25 100644 (file)
@@ -8,8 +8,7 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 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;
 
 class LeafNodeDataWithSchema extends SimpleNodeDataWithSchema {
@@ -19,8 +18,8 @@ class LeafNodeDataWithSchema extends SimpleNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
+        writer.nextDataSchemaNode(getSchema());
         writer.leafNode(provideNodeIdentifier(), getValue());
     }
-
 }
index 315ce97e49a863d4cc8bee59ae8f97dac84dcb1d..e3581354add62ba192bd9363a12204faa18664b2 100644 (file)
@@ -8,17 +8,15 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 import com.google.common.base.Preconditions;
-
 import java.io.IOException;
 import java.util.Collection;
 import java.util.HashMap;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
-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.LeafSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
@@ -51,9 +49,10 @@ class ListEntryNodeDataWithSchema extends CompositeNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    public void write(final SchemaAwareNormalizedNodeStreamWriter writer) throws IOException {
         final Collection<QName> keyDef = ((ListSchemaNode) getSchema()).getKeyDefinition();
         if (keyDef.isEmpty()) {
+            writer.nextDataSchemaNode(getSchema());
             writer.startUnkeyedListItem(provideNodeIdentifier(), childSizeHint());
             super.write(writer);
             writer.endNode();
@@ -68,6 +67,7 @@ class ListEntryNodeDataWithSchema extends CompositeNodeDataWithSchema {
             predicates.put(qname, qNameToKeys.get(qname).getValue());
         }
 
+        writer.nextDataSchemaNode(getSchema());
         writer.startMapEntryNode(
             new NodeIdentifierWithPredicates(getSchema().getQName(), predicates),
             childSizeHint());
index 2c5311417b272bd9a6e24eb9131c16da39a52eba..abbf1eaec48dd67cf90c4a6e455e8c1271e4cab2 100644 (file)
@@ -8,8 +8,7 @@
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
 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;
 
@@ -20,8 +19,9 @@ class ListNodeDataWithSchema extends CompositeNodeDataWithSchema {
     }
 
     @Override
-    public void write(final NormalizedNodeStreamWriter writer) throws IOException {
+    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()) {