From 308720182cde3248220c23aea8da4d404b0b773e Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 14 Jun 2023 22:38:45 +0200 Subject: [PATCH] Clean up addYangPathArgument() The nullability is confused here. Make sure we separate the two invocation paths, so that we check builder for non-null as few times as practicable. Change-Id: Iceafa279fb3b69ffdaa54d4250ecf370edaa2622 Signed-off-by: Robert Varga --- .../codec/impl/AugmentationCodecContext.java | 6 ++++++ .../dom/codec/impl/CaseNodeCodecContext.java | 2 +- .../codec/impl/DataContainerCodecContext.java | 20 ++++++++++--------- .../codec/impl/KeyedListNodeCodecContext.java | 12 +++++------ 4 files changed, 23 insertions(+), 17 deletions(-) diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java index a6a1198f6c..5552daea8d 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/AugmentationCodecContext.java @@ -8,6 +8,7 @@ package org.opendaylight.mdsal.binding.dom.codec.impl; import com.google.common.collect.ImmutableSet; +import java.util.List; import java.util.Map; import org.opendaylight.mdsal.binding.dom.codec.api.BindingAugmentationCodecTreeNode; import org.opendaylight.mdsal.binding.runtime.api.AugmentRuntimeType; @@ -61,6 +62,11 @@ final class AugmentationCodecContext> return filterFrom(checkDataArgument(DataContainerNode.class, normalizedNode)); } + @Override + void addYangPathArgument(final List builder, final InstanceIdentifier.PathArgument arg) { + // No-op + } + @Override protected NodeIdentifier getDomPathArgument() { return null; diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java index 6d15c20770..5377a4ef69 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/CaseNodeCodecContext.java @@ -23,7 +23,7 @@ final class CaseNodeCodecContext extends DataObjectCodecCo } @Override - void addYangPathArgument(final PathArgument arg, final List builder) { + void addYangPathArgument(final List builder, final PathArgument arg) { // NOOP } 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 f4c014acf9..804bdb10e3 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 @@ -123,10 +123,8 @@ abstract sealed class DataContainerCodecContext bindingPathArgumentChild(final PathArgument arg, final List builder) { - final DataContainerCodecContext child = streamChild(arg.getType()); - if (builder != null) { - child.addYangPathArgument(arg, builder); - } + final var child = streamChild(arg.getType()); + child.addYangPathArgument(arg, builder); return child; } @@ -136,12 +134,16 @@ abstract sealed class DataContainerCodecContext builder) { + final void addYangPathArgument(final PathArgument arg, final List builder) { if (builder != null) { - final var yangArg = getDomPathArgument(); - if (yangArg != null) { - builder.add(yangArg); - } + addYangPathArgument(builder, arg); + } + } + + void addYangPathArgument(final @NonNull List builder, final PathArgument arg) { + final var yangArg = getDomPathArgument(); + if (yangArg != null) { + builder.add(yangArg); } } diff --git a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java index 2a59ae1548..163fb812c8 100644 --- a/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java +++ b/binding/mdsal-binding-dom-codec/src/main/java/org/opendaylight/mdsal/binding/dom/codec/impl/KeyedListNodeCodecContext.java @@ -74,22 +74,20 @@ abstract sealed class KeyedListNodeCodecContext, D exten } @Override - void addYangPathArgument(final InstanceIdentifier.PathArgument arg, - final List builder) { + void addYangPathArgument(final List builder, + final InstanceIdentifier.PathArgument arg) { /* * DOM Instance Identifier for list is always represent by two entries one for map and one for children. This * is also true for wildcarded instance identifiers */ - if (builder == null) { - return; - } + final var yangArg = getDomPathArgument(); + builder.add(yangArg); - super.addYangPathArgument(arg, builder); if (arg instanceof IdentifiableItem identifiable) { builder.add(codec.bindingToDom(identifiable)); } else { // Adding wildcarded - super.addYangPathArgument(arg, builder); + builder.add(yangArg); } } -- 2.36.6