From 3c488d8405b860834471acc96e7c562156a1c777 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Fri, 5 Jun 2020 17:41:08 +0200 Subject: [PATCH] Add YangInstanceIdentifier.coerceParent() There are a number of YangInstanceIdentifier users who perform checks (or otherwise ensure) that YangInstanceIdentifier they are dealing with is non-empty and hence its getParent() method cannot possibly return null. These users still interact with methods which explicitly require a non-null YangInstanceIdentifier -- hence it would be useful to provide a bridge method which performs this validation. Change-Id: I7acb4b04ccbe3c536b690573519171af32089d41 Signed-off-by: Robert Varga --- .../yang/data/api/FixedYangInstanceIdentifier.java | 6 ++++++ .../yang/data/api/StackedYangInstanceIdentifier.java | 5 +++++ .../yang/data/api/YangInstanceIdentifier.java | 10 ++++++++++ 3 files changed, 21 insertions(+) diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/FixedYangInstanceIdentifier.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/FixedYangInstanceIdentifier.java index ff7499d9fd..7614b96ead 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/FixedYangInstanceIdentifier.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/FixedYangInstanceIdentifier.java @@ -8,6 +8,7 @@ package org.opendaylight.yangtools.yang.data.api; import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Verify.verifyNotNull; import static java.util.Objects.requireNonNull; import com.google.common.collect.ImmutableList; @@ -62,6 +63,11 @@ final class FixedYangInstanceIdentifier extends YangInstanceIdentifier implement return ret; } + @Override + public YangInstanceIdentifier coerceParent() { + return verifyNotNull(getParent(), "Empty instance identifier does not have a parent"); + } + @Override public YangInstanceIdentifier getAncestor(final int depth) { checkArgument(depth >= 0, "Negative depth is not allowed"); diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java index a183e47639..955ef2543e 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/StackedYangInstanceIdentifier.java @@ -70,6 +70,11 @@ final class StackedYangInstanceIdentifier extends YangInstanceIdentifier impleme return parent; } + @Override + public YangInstanceIdentifier coerceParent() { + return parent; + } + @Override public YangInstanceIdentifier getAncestor(final int depth) { checkArgument(depth >= 0, "Steps cannot be negative"); diff --git a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java index ffcf3f3467..55fd0aab67 100644 --- a/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java +++ b/yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/YangInstanceIdentifier.java @@ -12,6 +12,7 @@ import static com.google.common.base.Verify.verify; import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; +import com.google.common.base.VerifyException; import com.google.common.cache.CacheBuilder; import com.google.common.cache.CacheLoader; import com.google.common.cache.LoadingCache; @@ -140,6 +141,15 @@ public abstract class YangInstanceIdentifier implements Path