From c88df3564e74658dff3e62133b16d933515f5d17 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 3 May 2022 22:44:21 +0200 Subject: [PATCH] Seal {LeafSet,Map}Node There are exactly two specializations for each of these, make sure to seal them. Change-Id: I551074804803c84e7e0acc38fffe1b5c9c3181a7 Signed-off-by: Robert Varga --- .../yangtools/yang/data/api/schema/LeafSetNode.java | 5 +++-- .../yangtools/yang/data/api/schema/MapNode.java | 5 +++-- .../yangtools/yang/data/api/schema/SystemLeafSetNode.java | 6 +++--- .../yangtools/yang/data/api/schema/SystemMapNode.java | 2 +- .../yangtools/yang/data/api/schema/UserLeafSetNode.java | 2 +- .../yangtools/yang/data/api/schema/UserMapNode.java | 2 +- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/LeafSetNode.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/LeafSetNode.java index eb81063e3d..bfb2c76c36 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/LeafSetNode.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/LeafSetNode.java @@ -19,8 +19,9 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeWithV * * @param Type of leaf node values. */ -public interface LeafSetNode - extends DistinctNodeContainer, LeafSetEntryNode>, DataContainerChild, MixinNode { +public sealed interface LeafSetNode + extends DistinctNodeContainer, LeafSetEntryNode>, DataContainerChild, MixinNode + permits SystemLeafSetNode, UserLeafSetNode { @Override @SuppressWarnings("rawtypes") Class contract(); diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MapNode.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MapNode.java index d48f2b8323..14da9ef15f 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MapNode.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MapNode.java @@ -21,8 +21,9 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent * This node maps to the list node in YANG schema, schema and semantics of this node, its children and key construction * is defined by YANG {@code list} statement and its {@code key} and {@code ordered-by} substatements. */ -public interface MapNode - extends DistinctNodeContainer, DataContainerChild, MixinNode { +public sealed interface MapNode + extends DistinctNodeContainer, DataContainerChild, MixinNode + permits SystemMapNode, UserMapNode { @Override Class contract(); diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemLeafSetNode.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemLeafSetNode.java index 431bd590fa..667003b24d 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemLeafSetNode.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemLeafSetNode.java @@ -14,9 +14,9 @@ package org.opendaylight.yangtools.yang.data.api.schema; * * @param Value type of Leaf entries */ -// // FIXME: 9.0.0: we really want to do a Set<@NonNull V> body(), but need to reconcile that with key-based lookup in -// implementations -- and those are using only a Map internally. -public interface SystemLeafSetNode extends LeafSetNode, OrderingAware.System { +// FIXME: 9.0.0: we really want to do a Set<@NonNull V> body(), but need to reconcile that with key-based lookup in +// implementations -- and those are using only a Map internally. +public non-sealed interface SystemLeafSetNode extends LeafSetNode, OrderingAware.System { @Override @SuppressWarnings("rawtypes") default Class contract() { diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemMapNode.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemMapNode.java index 929fcea699..22410a3415 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemMapNode.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemMapNode.java @@ -11,7 +11,7 @@ package org.opendaylight.yangtools.yang.data.api.schema; * {@link MapNode} which additionally preserves user-supplied ordering. This node represents a data instance of * a {@code list} with {@code ordered-by user;} substatement and a {@code key} definition. */ -public interface SystemMapNode extends MapNode, OrderingAware.System { +public non-sealed interface SystemMapNode extends MapNode, OrderingAware.System { @Override default Class contract() { return SystemMapNode.class; diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserLeafSetNode.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserLeafSetNode.java index 5045988f63..2814cd7eb9 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserLeafSetNode.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserLeafSetNode.java @@ -13,7 +13,7 @@ package org.opendaylight.yangtools.yang.data.api.schema; * * @param Value type of Leaf entries */ -public interface UserLeafSetNode extends LeafSetNode, OrderedNodeContainer> { +public non-sealed interface UserLeafSetNode extends LeafSetNode, OrderedNodeContainer> { @Override @SuppressWarnings("rawtypes") default Class contract() { diff --git a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserMapNode.java b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserMapNode.java index 2cf620d634..9dfb584674 100644 --- a/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserMapNode.java +++ b/data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserMapNode.java @@ -14,7 +14,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent * {@link MapNode} which additionally preserves user-supplied ordering. This node represents a data instance of * a {@code list} with {@code ordered-by user;} substatement and a {@code key} definition. */ -public interface UserMapNode extends MapNode, OrderedNodeContainer { +public non-sealed interface UserMapNode extends MapNode, OrderedNodeContainer { @Override default Class contract() { return UserMapNode.class; -- 2.36.6