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.
*
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);
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;
}
@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;