import java.lang.reflect.Method;
import java.util.concurrent.Callable;
import org.opendaylight.mdsal.binding.dom.codec.impl.ValueTypeCodec.SchemaUnawareCodec;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.BooleanTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.EmptyTypeDefinition;
/**
* Derived YANG types are just immutable value holders for simple value
this.valueType = Preconditions.checkNotNull(valueType);
}
- static Callable<EncapsulatedValueCodec> loader(final Class<?> typeClz) {
+ static Callable<EncapsulatedValueCodec> loader(final Class<?> typeClz, TypeDefinition<?> typeDef) {
return () -> {
- final Method m = typeClz.getMethod("getValue");
+ final Method m;
+ if (typeDef instanceof BooleanTypeDefinition || typeDef instanceof EmptyTypeDefinition) {
+ m = typeClz.getMethod("isValue");
+ } else {
+ m = typeClz.getMethod("getValue");
+ }
final MethodHandle getter = LOOKUP.unreflect(m).asType(OBJ_METHOD);
final Class<?> valueType = m.getReturnType();
}
@Override
+ @SuppressWarnings("checkstyle:illegalCatch")
public Object deserialize(final Object input) {
try {
return constructor.invokeExact(input);
}
@Override
+ @SuppressWarnings("checkstyle:illegalCatch")
public Object serialize(final Object input) {
try {
return getter.invokeExact(input);