Disconnect EncapsulatedValueCodec from ReflectionBasedCodec 35/100535/2
authorRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Apr 2022 14:23:18 +0000 (16:23 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 11 Apr 2022 14:49:44 +0000 (16:49 +0200)
While are not looking at the class after we have created our
MethodHandles, hence retaining the Class reference and the baggage
from ReflectionBasedCodec is completely unnecessary. This also
simplifies the class hierarchy a bit.

JIRA: MDSAL-704
Change-Id: Ifc0a9d98d892ab6fa72fd8c91ee3d4a61b1740a1
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/EncapsulatedValueCodec.java

index 2613416a5235befee75b617492e7a7e5bc33e6bd..118ebe12d6de1e054cdb86e798402222bd724e4c 100644 (file)
@@ -26,7 +26,7 @@ import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
  * Derived YANG types are just immutable value holders for simple value
  * types, which are same as in NormalizedNode model.
  */
-final class EncapsulatedValueCodec extends ReflectionBasedCodec implements SchemaUnawareCodec {
+final class EncapsulatedValueCodec extends ValueTypeCodec implements SchemaUnawareCodec {
     private static final MethodType OBJ_METHOD = MethodType.methodType(Object.class, Object.class);
 
     /*
@@ -49,7 +49,7 @@ final class EncapsulatedValueCodec extends ReflectionBasedCodec implements Schem
                 final Class<?> valueType = m.getReturnType();
                 final MethodHandle constructor = lookup.findConstructor(key,
                     MethodType.methodType(void.class, valueType)).asType(OBJ_METHOD);
-                return new EncapsulatedValueCodec(key, constructor, getter, valueType);
+                return new EncapsulatedValueCodec(constructor, getter, valueType);
             }
         });
 
@@ -57,9 +57,8 @@ final class EncapsulatedValueCodec extends ReflectionBasedCodec implements Schem
     private final MethodHandle getter;
     private final Class<?> valueType;
 
-    private EncapsulatedValueCodec(final Class<?> typeClz, final MethodHandle constructor, final MethodHandle getter,
+    private EncapsulatedValueCodec(final MethodHandle constructor, final MethodHandle getter,
             final Class<?> valueType) {
-        super(typeClz);
         this.constructor = requireNonNull(constructor);
         this.getter = requireNonNull(getter);
         this.valueType = requireNonNull(valueType);