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.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
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 Codec<Object, Object> valueCodec;
+abstract sealed class ValueNodeCodecContext extends CodecContext implements CodecContextSupplier
+ permits AbstractOpaqueCodecContext, ValueNodeCodecContext.WithCodec {
+ abstract static sealed class WithCodec extends ValueNodeCodecContext
+ permits LeafNodeCodecContext, LeafSetNodeCodecContext {
+ private final @NonNull ValueCodec<Object, Object> valueCodec;
- WithCodec(final DataSchemaNode schema, final Codec<Object, Object> codec, final Method getter,
+ WithCodec(final DataSchemaNode schema, final ValueCodec<Object, Object> codec, final String getterName,
final Object defaultObject) {
- super(schema, getter, defaultObject);
- this.valueCodec = requireNonNull(codec);
+ super(schema, getterName, defaultObject);
+ valueCodec = requireNonNull(codec);
}
@Override
- final Codec<Object, Object> getValueCodec() {
+ final ValueCodec<Object, Object> getValueCodec() {
return valueCodec;
}
}
private final @NonNull NodeIdentifier yangIdentifier;
- private final @NonNull Method getter;
- private final @NonNull DataSchemaNode schema;
+ private final @NonNull DataSchemaNode dataSchema;
+ private final @NonNull String getterName;
private final Object defaultObject;
- ValueNodeCodecContext(final DataSchemaNode schema, final Method getter, final Object defaultObject) {
- this.yangIdentifier = NodeIdentifier.create(schema.getQName());
- this.getter = requireNonNull(getter);
- this.schema = requireNonNull(schema);
+ ValueNodeCodecContext(final DataSchemaNode dataSchema, final String getterName, final Object defaultObject) {
+ this.getterName = requireNonNull(getterName);
+ this.dataSchema = requireNonNull(dataSchema);
+ yangIdentifier = NodeIdentifier.create(dataSchema.getQName());
this.defaultObject = defaultObject;
}
@Override
- protected final NodeIdentifier getDomPathArgument() {
+ final NodeIdentifier getDomPathArgument() {
return yangIdentifier;
}
@Override
- public final NodeCodecContext get() {
+ public final CodecContext getCodecContext() {
return this;
}
- final Method getGetter() {
- return getter;
+ final String getGetterName() {
+ return getterName;
}
- abstract Codec<Object, Object> getValueCodec();
+ abstract ValueCodec<Object, Object> getValueCodec();
@Override
public final DataSchemaNode getSchema() {
- return schema;
+ return dataSchema;
}
@Override