NETCONF-494: use RFC7951 JSON codecs 51/67351/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 19 Jan 2018 14:31:17 +0000 (15:31 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 19 Jan 2018 14:36:53 +0000 (15:36 +0100)
RFC8040 requires us to use a different codec for encoding instance
identifiers. Update the RFC8040 northbound to select this codec.

Also update the bierman02 northbound to explicitly bind to
the legacy LHOTKA codec.

Change-Id: I436e17b7c7695aaf75a27e7967b1bcfaf4815686
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/JsonNormalizedNodeBodyReader.java
restconf/restconf-nb-bierman02/src/main/java/org/opendaylight/netconf/sal/rest/impl/JsonToPatchBodyReader.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/JsonNormalizedNodeBodyReader.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/NormalizedNodeJsonBodyWriter.java
restconf/restconf-nb-rfc8040/src/main/java/org/opendaylight/restconf/nb/rfc8040/jersey/providers/patch/JsonToPatchBodyReader.java

index 4ce6997aa0efb38d4fa3f53ad5efcae2fff57702..ffc3e5cd977c1f76c11b6ae80d697a0c49bed105 100644 (file)
@@ -40,6 +40,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
 import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
@@ -116,7 +117,8 @@ public class JsonNormalizedNodeBodyReader
             }
         }
 
-        final JsonParserStream jsonParser = JsonParserStream.create(writer, path.getSchemaContext(), parentSchema);
+        final JsonParserStream jsonParser = JsonParserStream.create(writer,
+            JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(path.getSchemaContext()), parentSchema);
         final JsonReader reader = new JsonReader(new InputStreamReader(nonEmptyInputStreamOptional.get()));
         jsonParser.parse(reader);
 
index d902f3648b2f92105477a5333a9972b14773f507..1524fa77216d0fa4895f5ba5a1c47e8e386ea734 100644 (file)
@@ -42,6 +42,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
 import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
@@ -363,7 +364,9 @@ public class JsonToPatchBodyReader extends AbstractIdentifierAwareJaxRsProvider
             @Nonnull final SchemaNode targetSchemaNode, @Nonnull final InstanceIdentifierContext<?> path) {
         final NormalizedNodeResult resultHolder = new NormalizedNodeResult();
         final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder);
-        JsonParserStream.create(writer, path.getSchemaContext(), targetSchemaNode).parse(in);
+        JsonParserStream.create(writer,
+            JSONCodecFactorySupplier.DRAFT_LHOTKA_NETMOD_YANG_JSON_02.getShared(path.getSchemaContext()),
+            targetSchemaNode).parse(in);
 
         return resultHolder.getResult();
     }
index d604f53b2d0b0dc89af9b84b8d6fe69c970a2907..1d61b4cc06e2f80e8a5daa4a700731686bc0a4f3 100644 (file)
@@ -34,6 +34,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.MapNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
 import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
@@ -83,7 +84,9 @@ public class JsonNormalizedNodeBodyReader extends AbstractNormalizedNodeBodyRead
             }
         }
 
-        final JsonParserStream jsonParser = JsonParserStream.create(writer, path.getSchemaContext(), parentSchema);
+        final JsonParserStream jsonParser = JsonParserStream.create(writer,
+            JSONCodecFactorySupplier.RFC7951.getShared(path.getSchemaContext()), parentSchema);
+
         final JsonReader reader = new JsonReader(new InputStreamReader(entityStream));
         jsonParser.parse(reader);
 
index e3c8b5996f684c49d6976b768ca1ae325c0d0ac7..2b49392c6f2e9ea917931ba7ed64d255a5a7933f 100644 (file)
@@ -37,6 +37,7 @@ import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactory;
+import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
 import org.opendaylight.yangtools.yang.data.codec.gson.JSONNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.codec.gson.JsonWriterFactory;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
@@ -175,6 +176,6 @@ public class NormalizedNodeJsonBodyWriter implements MessageBodyWriter<Normalize
 
     private static JSONCodecFactory getCodecFactory(final InstanceIdentifierContext<?> context) {
         // TODO: Performance: Cache JSON Codec factory and schema context
-        return JSONCodecFactory.getShared(context.getSchemaContext());
+        return JSONCodecFactorySupplier.RFC7951.getShared(context.getSchemaContext());
     }
 }
index 0dc8dd344b2a6a48049f93d8e7f2c1adc1f8c409..648aa11090e4838a001a4365eed452e5f0588944 100644 (file)
@@ -39,6 +39,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter;
+import org.opendaylight.yangtools.yang.data.codec.gson.JSONCodecFactorySupplier;
 import org.opendaylight.yangtools.yang.data.codec.gson.JsonParserStream;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNormalizedNodeStreamWriter;
 import org.opendaylight.yangtools.yang.data.impl.schema.NormalizedNodeResult;
@@ -360,7 +361,8 @@ public class JsonToPatchBodyReader extends AbstractToPatchBodyReader {
             @Nonnull final SchemaNode targetSchemaNode, @Nonnull final InstanceIdentifierContext<?> path) {
         final NormalizedNodeResult resultHolder = new NormalizedNodeResult();
         final NormalizedNodeStreamWriter writer = ImmutableNormalizedNodeStreamWriter.from(resultHolder);
-        JsonParserStream.create(writer, path.getSchemaContext(), targetSchemaNode).parse(in);
+        JsonParserStream.create(writer, JSONCodecFactorySupplier.RFC7951.getShared(path.getSchemaContext()),
+            targetSchemaNode).parse(in);
 
         return resultHolder.getResult();
     }