Improve JSONCodecFactory 12/104912/1
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 6 Jan 2023 13:38:44 +0000 (14:38 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 15 Mar 2023 20:36:11 +0000 (21:36 +0100)
Improve type safety for tests by returning a well-defined JSONCodec.

Change-Id: Id0ba808b03c3b035ad77d545dc4acdc60920188a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit fa2207496b5d7097863f6c1163c15091b48bd063)
(cherry picked from commit 51b47d7499224bc8647c31d5d5960a74b6cd28d2)

codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/JSONCodecFactory.java
codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/Lhotka02JSONCodecFactory.java
codec/yang-data-codec-gson/src/main/java/org/opendaylight/yangtools/yang/data/codec/gson/RFC7951JSONCodecFactory.java
codec/yang-data-codec-gson/src/test/java/org/opendaylight/yangtools/yang/data/codec/gson/Bug8083Test.java

index aaa67301959ca07ec457108de875cd5a8f889889..f1032a5d8d39626112d4ca5ca1da8f531e2c73f4 100644 (file)
@@ -10,7 +10,9 @@ package org.opendaylight.yangtools.yang.data.codec.gson;
 import com.google.common.annotations.Beta;
 import java.util.List;
 import org.eclipse.jdt.annotation.NonNull;
+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.AbstractIntegerStringCodec;
 import org.opendaylight.yangtools.yang.data.impl.codec.BinaryStringCodec;
 import org.opendaylight.yangtools.yang.data.impl.codec.BitsStringCodec;
@@ -83,7 +85,7 @@ public abstract class JSONCodecFactory extends AbstractCodecFactory<JSONCodec<?>
     }
 
     @Override
-    protected final JSONCodec<?> identityRefCodec(final IdentityrefTypeDefinition type, final QNameModule module) {
+    protected final JSONCodec<QName> identityRefCodec(final IdentityrefTypeDefinition type, final QNameModule module) {
         return new IdentityrefJSONCodec(getEffectiveModelContext(), module);
     }
 
@@ -143,7 +145,7 @@ public abstract class JSONCodecFactory extends AbstractCodecFactory<JSONCodec<?>
     }
 
     @Override
-    protected abstract JSONCodec<?> instanceIdentifierCodec(InstanceIdentifierTypeDefinition type);
+    protected abstract JSONCodec<YangInstanceIdentifier> instanceIdentifierCodec(InstanceIdentifierTypeDefinition type);
 
     // Returns a one-off factory for the purposes of normalizing an anydata tree.
     //
index 87701c54575b0f5749c31d8e09af9bd0137649e0..2b82984d1fb0ec7c9fd882779c440eab332218d7 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.impl.codec.AbstractIntegerStringCodec;
 import org.opendaylight.yangtools.yang.data.impl.codec.DecimalStringCodec;
 import org.opendaylight.yangtools.yang.data.util.codec.CodecCache;
@@ -22,7 +23,7 @@ final class Lhotka02JSONCodecFactory extends JSONCodecFactory {
     }
 
     @Override
-    protected JSONCodec<?> instanceIdentifierCodec(final InstanceIdentifierTypeDefinition type) {
+    protected JSONCodec<YangInstanceIdentifier> instanceIdentifierCodec(final InstanceIdentifierTypeDefinition type) {
         return iidCodec;
     }
 
index f60fff658eaa592bdcb5ef9cc4674a256bb6f9f8..01fc317c472e4bbc2f8c80de830610e19dc49e99 100644 (file)
@@ -7,6 +7,7 @@
  */
 package org.opendaylight.yangtools.yang.data.codec.gson;
 
+import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.impl.codec.AbstractIntegerStringCodec;
 import org.opendaylight.yangtools.yang.data.impl.codec.DecimalStringCodec;
 import org.opendaylight.yangtools.yang.data.util.codec.CodecCache;
@@ -22,7 +23,7 @@ final class RFC7951JSONCodecFactory extends JSONCodecFactory {
     }
 
     @Override
-    protected JSONCodec<?> instanceIdentifierCodec(final InstanceIdentifierTypeDefinition type) {
+    protected JSONCodec<YangInstanceIdentifier> instanceIdentifierCodec(final InstanceIdentifierTypeDefinition type) {
         return iidCodec;
     }
 
index ae2371876b9542519c49dbcaa45caba8befa8be5..1a2dd5b46ea9257316c0349610234e40297f311e 100644 (file)
@@ -164,7 +164,7 @@ public class Bug8083Test {
         assertTrue(foo instanceof LeafSchemaNode);
         final TypeDefinition<? extends TypeDefinition<?>> type = ((LeafSchemaNode) foo).getType();
         assertTrue(type instanceof InstanceIdentifierTypeDefinition);
-        return (JSONCodec<YangInstanceIdentifier>) supplier.createSimple(FULL_SCHEMA_CONTEXT)
+        return supplier.createSimple(FULL_SCHEMA_CONTEXT)
                 .instanceIdentifierCodec((InstanceIdentifierTypeDefinition) type);
     }