import static java.util.Objects.requireNonNull;
-import java.lang.reflect.Method;
import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.Codec;
+import org.opendaylight.yangtools.concepts.IllegalArgumentCodec;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
-import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
/**
* Abstract base class for atomic nodes. These are nodes which are not decomposed in the Binding Specification, such
* as LeafNodes and LeafSetNodes.
*/
abstract class ValueNodeCodecContext extends NodeCodecContext implements NodeContextSupplier {
+ abstract static class WithCodec extends ValueNodeCodecContext {
+ private final @NonNull IllegalArgumentCodec<Object, Object> valueCodec;
+
+ WithCodec(final DataSchemaNode schema, final IllegalArgumentCodec<Object, Object> codec,
+ final String getterName, final Object defaultObject) {
+ super(schema, getterName, defaultObject);
+ this.valueCodec = requireNonNull(codec);
+ }
+
+ @Override
+ final IllegalArgumentCodec<Object, Object> getValueCodec() {
+ return valueCodec;
+ }
+ }
+
private final @NonNull NodeIdentifier yangIdentifier;
- private final @NonNull Codec<Object, Object> valueCodec;
- private final @NonNull Method getter;
- private final @NonNull TypedDataSchemaNode schema;
+ private final @NonNull String getterName;
+ private final @NonNull DataSchemaNode schema;
private final Object defaultObject;
- ValueNodeCodecContext(final TypedDataSchemaNode schema, final Codec<Object, Object> codec,
- final Method getter, final Object defaultObject) {
+ ValueNodeCodecContext(final DataSchemaNode schema, final String getterName, final Object defaultObject) {
this.yangIdentifier = NodeIdentifier.create(schema.getQName());
- this.valueCodec = requireNonNull(codec);
- this.getter = requireNonNull(getter);
+ this.getterName = requireNonNull(getterName);
this.schema = requireNonNull(schema);
this.defaultObject = defaultObject;
}
return this;
}
- final Method getGetter() {
- return getter;
+ final String getGetterName() {
+ return getterName;
}
- final Codec<Object, Object> getValueCodec() {
- return valueCodec;
- }
+ abstract IllegalArgumentCodec<Object, Object> getValueCodec();
@Override
- public final TypedDataSchemaNode getSchema() {
+ public final DataSchemaNode getSchema() {
return schema;
}