SchemaUnawareCodec is AbstractIllegalArgumentCodec
[mdsal.git] / binding / mdsal-binding-dom-codec / src / main / java / org / opendaylight / mdsal / binding / dom / codec / impl / BitsCodec.java
index f5b0908961deabb7e0a6d253e47ad8043053e928..ea16c388ab1f05d234b9e6549962b5cb56552979 100644 (file)
@@ -29,12 +29,14 @@ import java.util.Set;
 import java.util.TreeSet;
 import java.util.concurrent.ExecutionException;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.mdsal.binding.dom.codec.impl.ValueTypeCodec.SchemaUnawareCodec;
 import org.opendaylight.mdsal.binding.spec.naming.BindingMapping;
 import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
 import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit;
 
-final class BitsCodec extends ReflectionBasedCodec implements SchemaUnawareCodec {
+// FIXME: 'SchemaUnawareCodec' is not correct: we use BitsTypeDefinition in construction
+// FIXME: require the base class to be a TypeObject
+// FIXME: MDSAL-743: require BitsTypeObject base class
+final class BitsCodec extends SchemaUnawareCodec {
     /*
      * Use identity comparison for keys and allow classes to be GCd themselves.
      *
@@ -55,9 +57,7 @@ final class BitsCodec extends ReflectionBasedCodec implements SchemaUnawareCodec
     private final ImmutableSet<String> ctorArgs;
     private final MethodHandle ctor;
 
-    private BitsCodec(final Class<?> typeClass, final MethodHandle ctor, final Set<String> ctorArgs,
-            final Map<String, Method> getters) {
-        super(typeClass);
+    private BitsCodec(final MethodHandle ctor, final Set<String> ctorArgs, final Map<String, Method> getters) {
         this.ctor = requireNonNull(ctor);
         this.ctorArgs = ImmutableSet.copyOf(ctorArgs);
         this.getters = ImmutableMap.copyOf(getters);
@@ -84,13 +84,13 @@ final class BitsCodec extends ReflectionBasedCodec implements SchemaUnawareCodec
 
             final MethodHandle ctor = MethodHandles.publicLookup().unreflectConstructor(constructor)
                     .asSpreader(Boolean[].class, ctorArgs.size()).asType(CONSTRUCTOR_INVOKE_TYPE);
-            return new BitsCodec(returnType, ctor, ctorArgs, getters);
+            return new BitsCodec(ctor, ctorArgs, getters);
         });
     }
 
     @Override
     @SuppressWarnings("checkstyle:illegalCatch")
-    public Object deserialize(final Object input) {
+    protected Object deserializeImpl(final Object input) {
         checkArgument(input instanceof Set);
         @SuppressWarnings("unchecked")
         final Set<String> casted = (Set<String>) input;
@@ -115,7 +115,7 @@ final class BitsCodec extends ReflectionBasedCodec implements SchemaUnawareCodec
     }
 
     @Override
-    public Set<String> serialize(final Object input) {
+    protected Set<String> serializeImpl(final Object input) {
         final Collection<String> result = new ArrayList<>(getters.size());
         for (Entry<String, Method> valueGet : getters.entrySet()) {
             final Boolean value;