From c8c73976c1e6afda87e6d18afef20f8a4b711ae6 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 3 May 2022 22:52:42 +0200 Subject: [PATCH] Seal NormalizedNodeContainer NormalizedNodeContainers come in two shapes: ordered and unordered, make sure javac enforces this invariant. Change-Id: Id4e1807d65e1da8ead48f55493fd0797726007b2 Signed-off-by: Robert Varga --- .../yangtools/yang/data/api/schema/DistinctNodeContainer.java | 2 +- .../yang/data/api/schema/NormalizedNodeContainer.java | 3 ++- .../yangtools/yang/data/api/schema/OrderedNodeContainer.java | 2 +- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DistinctNodeContainer.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DistinctNodeContainer.java index 15d66c9bab..dd2ad10811 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DistinctNodeContainer.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DistinctNodeContainer.java @@ -30,7 +30,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum * @param Child path argument type * @param Child Node type */ -public interface DistinctNodeContainer +public non-sealed interface DistinctNodeContainer extends NormalizedNodeContainer { /** * {@inheritDoc} diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodeContainer.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodeContainer.java index 414b7137c7..3a8d5c5dc2 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodeContainer.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodeContainer.java @@ -17,7 +17,8 @@ import org.eclipse.jdt.annotation.NonNull; * * @param Child Node type */ -public interface NormalizedNodeContainer extends NormalizedNode, OrderingAware { +public sealed interface NormalizedNodeContainer extends NormalizedNode, OrderingAware + permits DistinctNodeContainer, OrderedNodeContainer { /** * {@inheritDoc} * diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/OrderedNodeContainer.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/OrderedNodeContainer.java index ff177cb71b..1869c67a35 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/OrderedNodeContainer.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/OrderedNodeContainer.java @@ -18,7 +18,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent */ // FIXME: 9.0.0: we really want to do a List<@NonNull V> body(), but need to reconcile that with key-based lookup in // implementations -- and those are using only a Map internally. -public interface OrderedNodeContainer +public non-sealed interface OrderedNodeContainer extends NormalizedNodeContainer, MixinNode, OrderingAware.User { @Override NodeIdentifier getIdentifier(); -- 2.36.6