Add NormalizedNode.contract() 01/95901/4
authorRobert Varga <robert.varga@pantheon.tech>
Fri, 23 Apr 2021 13:18:29 +0000 (15:18 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Fri, 23 Apr 2021 21:23:39 +0000 (23:23 +0200)
commitce2dacd877878d47df97c524f2307f0d2b393163
tree9b3922e9b50a6bf85b9114f9d209f3021ed53007
parent2fa9f7f4eac9a5dd341749ef15f34c9cad12faba
Add NormalizedNode.contract()

NormalizedNode hierarchy is defined in terms of interfaces with a
multitude of possible implementations. Attempting to dispatch among them
without sealed classes is an exercise in futility, but we can actually
mark the top-level contracts as needed.

This makes it very clear which interfaces can be reasonably implemented
and allows a proper dispatch on classes. Furthermore it improves safety
by explicitly not allowing mixes which would otherwise be possible.

JIRA: YANGTOOLS-1203
Change-Id: I177f158423807b83d83f375c69c6985880eaed91
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
18 files changed:
yang/rfc8528-data-api/src/main/java/org/opendaylight/yangtools/rfc8528/data/api/MountPointNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/AnydataNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/AnyxmlNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/AugmentationNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/ChoiceNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/ContainerNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/LeafNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/LeafSetEntryNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/LeafSetNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MapEntryNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MapNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemLeafSetNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/SystemMapNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UnkeyedListEntryNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UnkeyedListNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserLeafSetNode.java
yang/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UserMapNode.java