From 64cb6400c8cbef8660cf914426b3bf9911d5f7a1 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Mon, 19 Apr 2021 21:12:42 +0200 Subject: [PATCH] Improve ImmutableMapEntryNodeBuilder identifier handling We have duplicate decisions going on here, simplify them bye combining the check-and-put operation. Change-Id: Ib5dd56e49e3ac8248ddbded22ba0b71d227dc067 Signed-off-by: Robert Varga --- .../impl/ImmutableMapEntryNodeBuilder.java | 33 ++++++++----------- 1 file changed, 13 insertions(+), 20 deletions(-) diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java index af8368f902..44d6930e2c 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java @@ -43,7 +43,7 @@ public class ImmutableMapEntryNodeBuilder protected ImmutableMapEntryNodeBuilder(final ImmutableMapEntryNode node) { super(node); this.childrenQNamesToPaths = new LinkedHashMap<>(); - fillQnames(node.body(), childrenQNamesToPaths); + fillQNames(node.body(), childrenQNamesToPaths); } public static @NonNull DataContainerNodeBuilder create() { @@ -64,38 +64,31 @@ public class ImmutableMapEntryNodeBuilder return new ImmutableMapEntryNodeBuilder((ImmutableMapEntryNode)node); } - private static void fillQnames(final Iterable iterable, final Map out) { - for (final DataContainerChild childId : iterable) { - final PathArgument identifier = childId.getIdentifier(); - - // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map - if (isAugment(identifier)) { - continue; - } + private static void fillQNames(final Iterable iterable, final Map out) { + for (final DataContainerChild child : iterable) { + putQName(out, child); + } + } - out.put(childId.getNodeType(), identifier); + private static void putQName(final Map map, final DataContainerChild child) { + // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map + final PathArgument identifier = child.getIdentifier(); + if (!(identifier instanceof AugmentationIdentifier)) { + map.put(identifier.getNodeType(), identifier); } } @Override public DataContainerNodeBuilder withValue( final Collection withValue) { - fillQnames(withValue, childrenQNamesToPaths); + fillQNames(withValue, childrenQNamesToPaths); return super.withValue(withValue); } - private static boolean isAugment(final PathArgument identifier) { - return identifier instanceof AugmentationIdentifier; - } - @Override public DataContainerNodeBuilder withChild( final DataContainerChild child) { - // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map - if (!isAugment(child.getIdentifier())) { - childrenQNamesToPaths.put(child.getNodeType(), child.getIdentifier()); - } - + putQName(childrenQNamesToPaths, child); return super.withChild(child); } -- 2.36.6