From: Robert Varga Date: Tue, 3 May 2022 20:52:42 +0000 (+0200) Subject: Seal NormalizedNodeContainer X-Git-Tag: v9.0.0~97 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=yangtools.git;a=commitdiff_plain;h=c8c73976c1e6afda87e6d18afef20f8a4b711ae6 Seal NormalizedNodeContainer NormalizedNodeContainers come in two shapes: ordered and unordered, make sure javac enforces this invariant. Change-Id: Id4e1807d65e1da8ead48f55493fd0797726007b2 Signed-off-by: Robert Varga --- 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();