import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit;
// 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.
@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;
}
static @NonNull EncapsulatedValueCodec of(final Class<?> typeClz) throws ExecutionException {
+ // FIXME: require base class to be ScalarTypeObject
return CACHE.get(typeClz);
}
@Override
@SuppressWarnings("checkstyle:illegalCatch")
- public Object deserialize(final Object input) {
+ protected Object deserializeImpl(final Object input) {
try {
return constructor.invokeExact(input);
} catch (Throwable e) {
@Override
@SuppressWarnings("checkstyle:illegalCatch")
- public Object serialize(final Object input) {
+ protected Object serializeImpl(final Object input) {
try {
return getter.invokeExact(input);
} catch (Throwable e) {
}
@Override
- public Enum<?> deserialize(final Object input) {
+ protected Enum<?> deserializeImpl(final Object input) {
checkArgument(input instanceof String, "Input %s is not a String", input);
final Enum<?> value = nameToEnum.get(input);
checkArgument(value != null, "Invalid enumeration value %s. Valid values are %s", input, nameToEnum.keySet());
}
@Override
- public String serialize(final Object input) {
+ protected String serializeImpl(final Object input) {
checkArgument(enumClass.isInstance(input), "Input %s is not a instance of %s", input, enumClass);
+ // FIXME: verifyNotNull here
return requireNonNull(nameToEnum.inverse().get(input));
}
}
\ No newline at end of file
import java.util.concurrent.ExecutionException;
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.mdsal.binding.spec.reflect.BindingReflections;
-import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
+import org.opendaylight.yangtools.concepts.AbstractIllegalArgumentCodec;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
* modules) they may have one static instance generated when first time needed.
*/
// FIXME: IllegalArgumentCodec is perhaps not appropriate here due to null behavior
-abstract class SchemaUnawareCodec implements IllegalArgumentCodec<Object, Object> {
+abstract class SchemaUnawareCodec extends AbstractIllegalArgumentCodec<Object, Object> {
/**
* No-op Codec, Java YANG Binding uses same types as NormalizedNode model for base YANG types, representing numbers,
* binary, strings and empty.
*/
static final @NonNull SchemaUnawareCodec NOOP_CODEC = new SchemaUnawareCodec() {
@Override
- public Object serialize(final Object input) {
+ protected Object serializeImpl(final Object input) {
return input;
}
@Override
- public Object deserialize(final Object input) {
+ protected Object deserializeImpl(final Object input) {
return input;
}
};