X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=binding%2Fmdsal-binding-dom-codec%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fbinding%2Fdom%2Fcodec%2Fimpl%2FDataContainerCodecContext.java;h=ebd628c0ff1c5c4fcdb41cf482a2c4d1df95a573;hb=f3be50ed801e5de305eb46b824e6bc3c6075e4bc;hp=d919a4ae9b07dc4ea1a04f02ae88ef6fca49e950;hpb=13177e045a5596e762c589c953945521a6c11cad;p=mdsal.git diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java index d919a4ae9b..ebd628c0ff 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/DataContainerCodecContext.java @@ -62,9 +62,10 @@ import org.opendaylight.yangtools.yang.model.api.TypedDataSchemaNode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -abstract sealed class DataContainerCodecContext +abstract sealed class DataContainerCodecContext> extends CodecContext implements BindingDataContainerCodecTreeNode - permits CommonDataObjectCodecContext { + permits ChoiceCodecContext, CommonDataObjectCodecContext { private static final Logger LOG = LoggerFactory.getLogger(DataContainerCodecContext.class); private static final VarHandle EVENT_STREAM_SERIALIZER; @@ -77,6 +78,7 @@ abstract sealed class DataContainerCodecContext getBindingClass() { + return (Class) prototype().javaClass(); } - protected abstract @NonNull CodecContextFactory factory(); + // overridden in AugmentationCodecContext + @Override + protected NodeIdentifier getDomPathArgument() { + return prototype.yangArg(); + } - protected abstract @NonNull T type(); + @Override + public final ChildAddressabilitySummary getChildAddressabilitySummary() { + return childAddressabilitySummary; + } // Non-final for ChoiceCodecContext @Override @@ -114,12 +129,8 @@ abstract sealed class DataContainerCodecContext bindingPathArgumentChild(final PathArgument arg, - final List builder) { - final var child = getStreamChild(arg.getType()); - child.addYangPathArgument(arg, builder); - return child; - } + public abstract CommonDataObjectCodecContext bindingPathArgumentChild(PathArgument arg, + List builder); /** * Serializes supplied Binding Path Argument and adds all necessary YANG instance identifiers to supplied list. @@ -141,26 +152,26 @@ abstract sealed class DataContainerCodecContext CommonDataObjectCodecContext getStreamChild(final Class childClass) { + public final DataContainerCodecContext getStreamChild(final Class childClass) { return childNonNull(streamChild(childClass), childClass, "Child %s is not valid child of %s", getBindingClass(), childClass); } @SuppressWarnings("unchecked") @Override - public final CommonDataObjectCodecContext streamChild(final Class childClass) { + public final DataContainerCodecContext streamChild(final Class childClass) { final var childProto = streamChildPrototype(requireNonNull(childClass)); - return childProto == null ? null : (CommonDataObjectCodecContext) childProto.getCodecContext(); + return childProto == null ? null : (DataContainerCodecContext) childProto.getCodecContext(); } - abstract @Nullable CommonDataObjectCodecPrototype streamChildPrototype(@NonNull Class childClass); + abstract @Nullable DataContainerPrototype streamChildPrototype(@NonNull Class childClass); @Override public String toString() { return getClass().getSimpleName() + " [" + getBindingClass() + "]"; } - static final & BindingNormalizedNodeCodec> + static final & BindingNormalizedNodeCodec> @NonNull BindingNormalizedNodeCachingCodec createCachingCodec(final C context, final ImmutableCollection> cacheSpecifier) { return cacheSpecifier.isEmpty() ? new NonCachingCodec<>(context) @@ -194,7 +205,7 @@ abstract sealed class DataContainerCodecContext childClass, final String message, final Object... args) { - return childNullException(factory().getRuntimeContext(), childClass, message, args); + return childNullException(prototype().contextFactory().getRuntimeContext(), childClass, message, args); } @CheckReturnValue @@ -236,7 +247,7 @@ abstract sealed class DataContainerCodecContext