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%2FAbstractDataObjectCodecContext.java;h=65394235dd76559feeb04737c84ac930ce0d81c9;hb=f3be50ed801e5de305eb46b824e6bc3c6075e4bc;hp=d0e2f04db38233ca2e7b478cf789fffd46db72ab;hpb=3b18d17d6882c14b0f3542717e3ca539c0bc9593;p=mdsal.git diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractDataObjectCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractDataObjectCodecContext.java index d0e2f04db3..65394235dd 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractDataObjectCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AbstractDataObjectCodecContext.java @@ -43,8 +43,8 @@ import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus; public abstract sealed class AbstractDataObjectCodecContext extends CommonDataObjectCodecContext permits AugmentationCodecContext, DataObjectCodecContext { - private final ImmutableMap, CommonDataObjectCodecPrototype> byBindingArgClass; - private final ImmutableMap, CommonDataObjectCodecPrototype> byStreamClass; + private final ImmutableMap, DataContainerPrototype> byBindingArgClass; + private final ImmutableMap, DataContainerPrototype> byStreamClass; private final ImmutableMap byYang; private final ImmutableMap leafChild; @@ -64,7 +64,7 @@ public abstract sealed class AbstractDataObjectCodecContext streamChildPrototype(final Class childClass) { + DataContainerPrototype streamChildPrototype(final Class childClass) { return byStreamClass.get(childClass); } @@ -75,27 +75,17 @@ public abstract sealed class AbstractDataObjectCodecContext choice) { - choice.addYangPathArgument(arg, builder); - - final var caseType = arg.getCaseType(); - final var type = arg.getType(); - final DataContainerCodecContext caze; - if (caseType.isPresent()) { - // Non-ambiguous addressing this should not pose any problems - caze = choice.getStreamChild(caseType.orElseThrow()); - } else { - caze = choice.getCaseByChildClass(type); - } - - caze.addYangPathArgument(arg, builder); - return caze.bindingPathArgumentChild(arg, builder); - } context.addYangPathArgument(arg, builder); - return context; + if (context instanceof CommonDataObjectCodecContext dataObject) { + return dataObject; + } else if (context instanceof ChoiceCodecContext choice) { + return choice.bindingPathArgumentChild(arg, builder); + } else { + throw new IllegalStateException("Unhandled context " + context); + } } - @Nullable CommonDataObjectCodecPrototype pathChildPrototype(final @NonNull Class argType) { + @Nullable DataContainerPrototype pathChildPrototype(final @NonNull Class argType) { return byBindingArgClass.get(argType); }