*/
package org.opendaylight.mdsal.binding.dom.codec.impl;
-import com.google.common.base.Preconditions;
+import static com.google.common.base.Preconditions.checkArgument;
+import static com.google.common.base.Verify.verifyNotNull;
+
import com.google.common.base.Throwables;
import java.lang.invoke.MethodHandle;
import java.lang.invoke.MethodHandles;
import java.lang.invoke.MethodType;
-import org.opendaylight.yangtools.concepts.Codec;
+import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
final class ValueContext {
private static final MethodType OBJECT_METHOD = MethodType.methodType(Object.class, Object.class);
- private final Codec<Object, Object> codec;
+ private final IllegalArgumentCodec<Object, Object> codec;
private final MethodHandle getter;
private final Class<?> identifier;
private final String getterName;
- ValueContext(final Class<?> identifier, final LeafNodeCodecContext<?> leaf) {
- getterName = leaf.getGetter().getName();
+ ValueContext(final Class<?> identifier, final ValueNodeCodecContext leaf) {
+ getterName = leaf.getGetterName();
try {
getter = MethodHandles.publicLookup().unreflect(identifier.getMethod(getterName)).asType(OBJECT_METHOD);
- } catch (IllegalAccessException | NoSuchMethodException | SecurityException e) {
+ } catch (IllegalAccessException | NoSuchMethodException e) {
throw new IllegalStateException(String.format("Cannot find method %s in class %s", getterName, identifier),
e);
}
throw new IllegalStateException(e);
}
- Preconditions.checkArgument(value != null,
- "All keys must be specified for %s. Missing key is %s. Supplied key is %s",
+ checkArgument(value != null, "All keys must be specified for %s. Missing key is %s. Supplied key is %s",
identifier, getterName, obj);
return codec.serialize(value);
}
Object deserialize(final Object obj) {
- return codec.deserialize(obj);
+ checkArgument(obj != null, "Attempted to serialize null for %s component of %s", getterName, identifier);
+ return verifyNotNull(codec.deserialize(obj), "Codec for %s of %s returned null for %s", getterName, identifier,
+ obj);
}
-
-}
\ No newline at end of file
+}