From b3b353dbaef189d77d5f15c57dc0069da780b2e0 Mon Sep 17 00:00:00 2001 From: Jozef Gloncak Date: Fri, 24 Oct 2014 10:43:48 +0200 Subject: [PATCH] Parent schema node input parameter in JsonParserStream For stable helium - JsonParserStream - added input parameter to create() factory method which specify parent schema node of schema node which is at top level of JSON input. Usually it is schema context. Change-Id: I15ca2bdd0f8ace617d834040cd9a6745b40ee78a Signed-off-by: Jozef Gloncak (cherry picked from commit 2bba449d5246784298943ccd1359d06f0e8d840f) --- .../yang/data/codec/gson/JsonParserStream.java | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java index cea3fa683c..1721f428d5 100644 --- a/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java +++ b/yang/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JsonParserStream.java @@ -40,6 +40,7 @@ import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode; import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode; import org.opendaylight.yangtools.yang.model.api.Module; import org.opendaylight.yangtools.yang.model.api.SchemaContext; +import org.opendaylight.yangtools.yang.model.api.SchemaNode; import org.opendaylight.yangtools.yang.model.api.TypeDefinition; /** @@ -52,15 +53,22 @@ public final class JsonParserStream implements Closeable, Flushable { private final NormalizedNodeStreamWriter writer; private final JSONCodecFactory codecs; private final SchemaContext schema; + private final DataSchemaNode parentNode; - private JsonParserStream(final NormalizedNodeStreamWriter writer, final SchemaContext schemaContext) { + private JsonParserStream(final NormalizedNodeStreamWriter writer, final SchemaContext schemaContext, final DataSchemaNode parentNode) { this.schema = Preconditions.checkNotNull(schemaContext); this.writer = Preconditions.checkNotNull(writer); this.codecs = JSONCodecFactory.create(schemaContext); + this.parentNode = parentNode; + } + + public static JsonParserStream create(final NormalizedNodeStreamWriter writer, final SchemaContext schemaContext, final SchemaNode parentNode ) { + Preconditions.checkArgument(parentNode instanceof DataSchemaNode, "Instance of DataSchemaNode class awaited."); + return new JsonParserStream(writer, schemaContext, (DataSchemaNode) parentNode); } public static JsonParserStream create(final NormalizedNodeStreamWriter writer, final SchemaContext schemaContext) { - return new JsonParserStream(writer, schemaContext); + return new JsonParserStream(writer, schemaContext, schemaContext); } public JsonParserStream parse(final JsonReader reader) throws JsonIOException, JsonSyntaxException { @@ -72,7 +80,7 @@ public final class JsonParserStream implements Closeable, Flushable { try { reader.peek(); isEmpty = false; - CompositeNodeDataWithSchema compositeNodeDataWithSchema = new CompositeNodeDataWithSchema(schema); + CompositeNodeDataWithSchema compositeNodeDataWithSchema = new CompositeNodeDataWithSchema(parentNode); read(reader, compositeNodeDataWithSchema); compositeNodeDataWithSchema.write(writer); -- 2.36.6