Disconnect NormalizedNode from Identifiable 47/106047/4
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 18 May 2023 18:48:59 +0000 (20:48 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 18 May 2023 20:02:29 +0000 (22:02 +0200)
getIdentifier() is a mouthful and we will be introducing a superclass
above NormalizedNode, which will use plain Identifier. This renders
the entire Identifiable capture moot.

Introduce NormalizedNode.name(), which returns the same thing, removing
dependency on Identifiable, but still keeping getIdentifier() as a
deprecated method.

JIRA: YANGTOOLS-1472
Change-Id: I5a1f8ca5150c105775dccbf1c21ee9da6908bc10
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
52 files changed:
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/AnyXmlWithParamsParsingTest.java
codec/yang-data-codec-xml/src/test/java/org/opendaylight/yangtools/yang/data/codec/xml/Bug890Test.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DataContainerChild.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/DuplicateFinder.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/LeafSetEntryNode.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/MapEntryNode.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNode.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodes.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/OrderedNodeContainer.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/UnkeyedListEntryNode.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/ValueNode.java
data/yang-data-api/src/main/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriter.java
data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/NormalizedNodesTest.java
data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/NormalizedNodeWriterTest.java
data/yang-data-api/src/test/java/org/opendaylight/yangtools/yang/data/api/schema/stream/YangInstanceIdentifierWriterTest.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/SchemaOrderedNormalizedNodeWriter.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/AbstractImmutableDataContainerNodeBuilder.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableLeafSetNodeBuilder.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapEntryNodeBuilder.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableMapNodeBuilder.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUnkeyedListNodeBuilder.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserLeafSetNodeBuilder.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/ImmutableUserMapNodeBuilder.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/AbstractImmutableDataContainerNode.java
data/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/LazyLeafOperations.java
data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/BuilderTest.java
data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/InstanceIdToNodesTest.java
data/yang-data-impl/src/test/java/org/opendaylight/yangtools/yang/data/impl/schema/nodes/YT1417Test.java
data/yang-data-spi/src/main/java/org/opendaylight/yangtools/yang/data/spi/node/AbstractNormalizedNode.java
data/yang-data-spi/src/main/java/org/opendaylight/yangtools/yang/data/spi/node/NormalizedNodePrettyTree.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/AbstractNodeContainerModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ChoiceModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/InMemoryDataTreeModification.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MandatoryDescendant.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/MinMaxElementsValidation.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/NormalizedNodeContainerSupport.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/UniqueValidation.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/node/LazyContainerNode.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/node/TreeNode.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/leafref/LeafRefValidation.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/ConfigStatementValidationTest.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/ListConstraintsValidation.java
data/yang-data-tree-spi/src/main/java/org/opendaylight/yangtools/yang/data/tree/spi/AbstractDataTreeCandidateNode.java
data/yang-data-tree-spi/src/main/java/org/opendaylight/yangtools/yang/data/tree/spi/AbstractLeafCandidateNode.java
data/yang-data-tree-spi/src/main/java/org/opendaylight/yangtools/yang/data/tree/spi/DataTreeCandidateNodes.java
data/yang-data-tree-spi/src/main/java/org/opendaylight/yangtools/yang/data/tree/spi/NormalizedNodeDataTreeCandidateNode.java
data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/NormalizedNodeDataTreeCandidateNodeTest.java
data/yang-data-tree-spi/src/test/java/org/opendaylight/yangtools/yang/data/tree/spi/YT1455Test.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/AbstractMountPointContextFactory.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedMetadataWriter.java
data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeSchemaUtils.java

index f9c7144f7c6c8f85b3053be504ce98bc0df0769b..c820db0d3c755175cefaca3f5f147df2465356f1 100644 (file)
@@ -80,7 +80,7 @@ public class AnyXmlWithParamsParsingTest {
     }
 
     private static NodeIdentifier getNodeId(final NormalizedNode parsed, final String localName) {
-        return new NodeIdentifier(QName.create(parsed.getIdentifier().getNodeType(), localName));
+        return new NodeIdentifier(QName.create(parsed.name().getNodeType(), localName));
     }
 
     private static String toStringDom(final DOMSource source) {
index 4c4fae839398713d56a2f460a3acb0658ef39373..19d98397fd9cf376ae9cdb528a9d541435672606 100644 (file)
@@ -64,7 +64,7 @@ public class Bug890Test {
                 NodeIdentifierWithPredicates.of(OUTGOING_LABELS_QNAME, INDEX_QNAME, 0);
         NodeIdentifierWithPredicates secondNodeId =
                 NodeIdentifierWithPredicates.of(OUTGOING_LABELS_QNAME, INDEX_QNAME, 1);
-        assertTrue(labels.stream().anyMatch(mapEntryNode -> mapEntryNode.getIdentifier().compareTo(firstNodeId) == 0));
-        assertTrue(labels.stream().anyMatch(mapEntryNode -> mapEntryNode.getIdentifier().compareTo(secondNodeId) == 0));
+        assertTrue(labels.stream().anyMatch(mapEntryNode -> mapEntryNode.name().compareTo(firstNodeId) == 0));
+        assertTrue(labels.stream().anyMatch(mapEntryNode -> mapEntryNode.name().compareTo(secondNodeId) == 0));
     }
 }
index 0f8ce1ce6c97bd533678c22256cc857e3fd24cc1..277d4f7ac5e1cc4c34bbab39074f5a2071eb059c 100644 (file)
@@ -28,5 +28,11 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent
 public sealed interface DataContainerChild extends NormalizedNode
         permits ChoiceNode, ContainerNode, ForeignDataNode, LeafNode, LeafSetNode, MapNode, UnkeyedListNode {
     @Override
-    NodeIdentifier getIdentifier();
+    NodeIdentifier name();
+
+    @Override
+    @Deprecated(since = "11.0.0", forRemoval = true)
+    default NodeIdentifier getIdentifier() {
+        return name();
+    }
 }
index d0921091bd37f1e4d6ff1c0bbdb5daaddaec493e..df80ad27ae441b93bc7e5e6457127829445d750d 100644 (file)
@@ -32,9 +32,9 @@ final class DuplicateFinder {
                 d.addDuplicate(path);
             }
 
-            if (node instanceof NormalizedNodeContainer<?>) {
-                for (NormalizedNode c : ((NormalizedNodeContainer<?>) node).body()) {
-                    findDuplicates(path.node(c.getIdentifier()), c);
+            if (node instanceof NormalizedNodeContainer<?> container) {
+                for (NormalizedNode child : container.body()) {
+                    findDuplicates(path.node(child.name()), child);
                 }
             }
         } else {
index 9c7df8a6c456cf496bdaff05bcef256727169474..d563a91a963fd41ddabf039d1a0ea3f04447325a 100644 (file)
@@ -32,5 +32,20 @@ public non-sealed interface LeafSetEntryNode<T> extends ValueNode<T> {
      * {@code true == this.getIdentifier().getValue().equals(this.body())}.
      */
     @Override
-    NodeWithValue<T> getIdentifier();
+    NodeWithValue<T> name();
+
+    /**
+     * {@inheritDoc}
+     *
+     * <p>
+     * <b>Implementation note</b>
+     * Invocation of {@link NodeWithValue#getValue()} on returned instance of {@link NodeWithValue} must return the
+     * same value as invocation of {@code #body()}, such as following condition is always met:
+     * {@code true == this.getIdentifier().getValue().equals(this.body())}.
+     */
+    @Override
+    @Deprecated(since = "11.0.0", forRemoval = true)
+    default NodeWithValue<T> getIdentifier() {
+        return name();
+    }
 }
index 9a6e6a5b2ba2e5e50ff4f2dc4c92d27e4711a77b..956baf24cab4e248c382f5d70d81b88ce451a082 100644 (file)
@@ -31,5 +31,22 @@ public interface MapEntryNode extends DataContainerNode {
      * @return identifier of this node in the context of parent node
      */
     @Override
-    NodeIdentifierWithPredicates getIdentifier();
+    NodeIdentifierWithPredicates name();
+
+    /**
+     * Returns identifier of this node in parent map node
+     *
+     * <p>
+     * Contents of identifier is defined by <code>key</code> (
+     * {@link org.opendaylight.yangtools.yang.model.api.ListSchemaNode#getKeyDefinition()}
+     * ) statement in YANG schema for associated list item and child {@link LeafNode}s
+     * values with {@link NodeIdentifier} as defined in the schema.
+     *
+     * @return identifier of this node in the context of parent node
+     */
+    @Override
+    @Deprecated(since = "11.0.0", forRemoval = true)
+    default NodeIdentifierWithPredicates getIdentifier() {
+        return name();
+    }
 }
index 348d4dbb0c0b20442ec8e357314ae29f6e7a04d9..c19ef32d720834ab30ba0e9bbe02f3698f02ab5f 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.data.api.schema;
 
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.Identifiable;
 import org.opendaylight.yangtools.concepts.PrettyTreeAware;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 
@@ -45,11 +44,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgum
  *               boundary -- like RFC8528. Hence we cannot really have a reasonably-structured concept of unverified
  *               data. Nevertheless, this interface should be named 'NormalizedData'.
  */
-public interface NormalizedNode extends Identifiable<PathArgument>, PrettyTreeAware {
-    @Override
-    // We override here, so that NormalizedNode.getIdentifier() has fewer implementations
-    PathArgument getIdentifier();
-
+public interface NormalizedNode extends PrettyTreeAware {
     /**
      * Return the contract governing this {@link NormalizedNode} instance.
      *
@@ -62,6 +57,13 @@ public interface NormalizedNode extends Identifiable<PathArgument>, PrettyTreeAw
      */
     @NonNull Class<? extends NormalizedNode> contract();
 
+    /**
+     * Return the name of this node.
+     *
+     * @return Name of this node.
+     */
+    @NonNull PathArgument name();
+
     /**
      * Returns the body of this node. While the return value specifies {@link Object}, this method's return value has
      * further semantics. The returned object must be a well-published contract, such as {@code String},
@@ -70,4 +72,15 @@ public interface NormalizedNode extends Identifiable<PathArgument>, PrettyTreeAw
      * @return Returned value of this node.
      */
     @NonNull Object body();
+
+    /**
+     * Return the name of this node.
+     *
+     * @return Name of this node.
+     * @deprecated Use {@link #name()} instead.
+     */
+    @Deprecated(since = "11.0.0", forRemoval = true)
+    default @NonNull PathArgument getIdentifier() {
+        return name();
+    }
 }
index 903c77af0e8163e50639611936ec93740b0f2b27..d06143a080c7d7c2bf439b6062f8bd6cd8c3db1b 100644 (file)
@@ -128,7 +128,7 @@ public final class NormalizedNodes {
 
     private static void toStringTree(final StringBuilder sb, final NormalizedNode node, final int offset) {
         final String prefix = " ".repeat(offset);
-        appendPathArgument(sb.append(prefix), node.getIdentifier());
+        appendPathArgument(sb.append(prefix), node.name());
         if (node instanceof NormalizedNodeContainer<?> container) {
             sb.append(" {\n");
             for (var child : container.body()) {
index ca1cf2953e73bbfade0a66ed30efdd6c4589125b..71e137831ec9746e522472e5ee3a69ee1c0676f1 100644 (file)
@@ -8,7 +8,6 @@
 package org.opendaylight.yangtools.yang.data.api.schema;
 
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 
 /**
  * A {@link NormalizedNodeContainer} which preserves user supplied ordering and allows addressing of child elements by
@@ -27,9 +26,6 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdent
 public sealed interface OrderedNodeContainer<V extends NormalizedNode>
         extends NormalizedNodeContainer<V>, OrderingAware.User
         permits UnkeyedListNode, UserLeafSetNode, UserMapNode {
-    @Override
-    NodeIdentifier getIdentifier();
-
     /**
      * Returns child node by position.
      *
index bdbad5eaacf19f3e25cd0eceba6913b6c7f83a70..0a22445e6b62a4e578f38e7eecdf5ef3ff11c5c6 100644 (file)
@@ -24,5 +24,11 @@ public interface UnkeyedListEntryNode extends DataContainerNode {
     }
 
     @Override
-    NodeIdentifier getIdentifier();
+    NodeIdentifier name();
+
+    @Override
+    @Deprecated(since = "11.0.0", forRemoval = true)
+    default NodeIdentifier getIdentifier() {
+        return name();
+    }
 }
index c5b56858ba1d6182760e506f2b2808f1d1e6466c..89e17af894a9c28d4938e73121f9d871e42ef056 100644 (file)
@@ -18,8 +18,8 @@ public sealed interface ValueNode<V> extends NormalizedNode permits LeafNode, Le
      *
      * <p>
      * <b>Implementation note</b>
-     * Invocation of {@code body()} must provide the same value as value in {@link #getIdentifier()}.
-     * {@code true == this.getIdentifier().getValue().equals(this.body())}.
+     * Invocation of {@code body()} must provide the same value as value in {@link #name()}.
+     * {@code true == this.name().getValue().equals(this.body())}.
      */
     @Override
     V body();
index 9f531bd42ae81b52c4eb0fa79127edafd0d81c80..9b599973aecefd06fbc70d08323f1c41eece0d3d 100644 (file)
@@ -134,18 +134,18 @@ public class NormalizedNodeWriter implements Closeable, Flushable {
 
     protected boolean wasProcessAsSimpleNode(final NormalizedNode node) throws IOException {
         if (node instanceof LeafSetEntryNode<?> nodeAsLeafList) {
-            writer.startLeafSetEntryNode(nodeAsLeafList.getIdentifier());
+            writer.startLeafSetEntryNode(nodeAsLeafList.name());
             writer.scalarValue(nodeAsLeafList.body());
             writer.endNode();
             return true;
         } else if (node instanceof LeafNode<?> nodeAsLeaf) {
-            writer.startLeafNode(nodeAsLeaf.getIdentifier());
+            writer.startLeafNode(nodeAsLeaf.name());
             writer.scalarValue(nodeAsLeaf.body());
             writer.endNode();
             return true;
         } else if (node instanceof AnyxmlNode<?> anyxmlNode) {
             final Class<?> model = anyxmlNode.bodyObjectModel();
-            if (writer.startAnyxmlNode(anyxmlNode.getIdentifier(), model)) {
+            if (writer.startAnyxmlNode(anyxmlNode.name(), model)) {
                 final Object value = node.body();
                 if (DOMSource.class.isAssignableFrom(model)) {
                     verify(value instanceof DOMSource, "Inconsistent anyxml node %s", anyxmlNode);
@@ -160,7 +160,7 @@ public class NormalizedNodeWriter implements Closeable, Flushable {
             LOG.debug("Ignoring unhandled anyxml node {}", anyxmlNode);
         } else if (node instanceof AnydataNode<?> anydata) {
             final Class<?> model = anydata.bodyObjectModel();
-            if (writer.startAnydataNode(anydata.getIdentifier(), model)) {
+            if (writer.startAnydataNode(anydata.name(), model)) {
                 writer.scalarValue(anydata.body());
                 writer.endNode();
                 return true;
@@ -189,36 +189,36 @@ public class NormalizedNodeWriter implements Closeable, Flushable {
     }
 
     protected boolean writeMapEntryNode(final MapEntryNode node) throws IOException {
-        writer.startMapEntryNode(node.getIdentifier(), childSizeHint(node.body()));
+        writer.startMapEntryNode(node.name(), childSizeHint(node.body()));
         return writeChildren(node.body());
     }
 
     protected boolean wasProcessedAsCompositeNode(final NormalizedNode node) throws IOException {
         if (node instanceof ContainerNode n) {
-            writer.startContainerNode(n.getIdentifier(), childSizeHint(n.body()));
+            writer.startContainerNode(n.name(), childSizeHint(n.body()));
             return writeChildren(n.body());
         } else if (node instanceof MapEntryNode n) {
             return writeMapEntryNode(n);
         } else if (node instanceof UnkeyedListEntryNode n) {
-            writer.startUnkeyedListItem(n.getIdentifier(), childSizeHint(n.body()));
+            writer.startUnkeyedListItem(n.name(), childSizeHint(n.body()));
             return writeChildren(n.body());
         } else if (node instanceof ChoiceNode n) {
-            writer.startChoiceNode(n.getIdentifier(), childSizeHint(n.body()));
+            writer.startChoiceNode(n.name(), childSizeHint(n.body()));
             return writeChildren(n.body());
         } else if (node instanceof UnkeyedListNode n) {
-            writer.startUnkeyedList(n.getIdentifier(), childSizeHint(n.body()));
+            writer.startUnkeyedList(n.name(), childSizeHint(n.body()));
             return writeChildren(n.body());
         } else if (node instanceof UserMapNode n) {
-            writer.startOrderedMapNode(n.getIdentifier(), childSizeHint(n.body()));
+            writer.startOrderedMapNode(n.name(), childSizeHint(n.body()));
             return writeChildren(n.body());
         } else if (node instanceof SystemMapNode n) {
-            writer.startMapNode(n.getIdentifier(), childSizeHint(n.body()));
+            writer.startMapNode(n.name(), childSizeHint(n.body()));
             return writeChildren(n.body());
         } else if (node instanceof UserLeafSetNode<?> n) {
-            writer.startOrderedLeafSet(n.getIdentifier(), childSizeHint(n.body()));
+            writer.startOrderedLeafSet(n.name(), childSizeHint(n.body()));
             return writeChildren(n.body());
         } else if (node instanceof SystemLeafSetNode<?> n) {
-            writer.startLeafSet(n.getIdentifier(), childSizeHint(n.body()));
+            writer.startLeafSet(n.name(), childSizeHint(n.body()));
             return writeChildren(n.body());
         }
         return false;
@@ -234,9 +234,9 @@ public class NormalizedNodeWriter implements Closeable, Flushable {
         @Override
         protected boolean writeMapEntryNode(final MapEntryNode node) throws IOException {
             final NormalizedNodeStreamWriter nnWriter = getWriter();
-            nnWriter.startMapEntryNode(node.getIdentifier(), childSizeHint(node.body()));
+            nnWriter.startMapEntryNode(node.name(), childSizeHint(node.body()));
 
-            final Set<QName> qnames = node.getIdentifier().keySet();
+            final Set<QName> qnames = node.name().keySet();
             // Write out all the key children
             for (final QName qname : qnames) {
                 final DataContainerChild child = node.childByArg(new NodeIdentifier(qname));
@@ -249,7 +249,7 @@ public class NormalizedNodeWriter implements Closeable, Flushable {
 
             // Write all the rest
             return writeChildren(Iterables.filter(node.body(), input -> {
-                if (qnames.contains(input.getIdentifier().getNodeType())) {
+                if (qnames.contains(input.name().getNodeType())) {
                     LOG.debug("Skipping key child {}", input);
                     return false;
                 }
index f1253cd5b17116582cc5846967031c0749668e52..817067cbb6b063136be8fd6efb390473f4606a9e 100644 (file)
@@ -99,7 +99,7 @@ public class NormalizedNodesTest {
         final LeafNode<?> mockedLeafNode = mock(LeafNode.class);
         final QName leafNodeQName = QName.create("test-ns", "2016-09-16", "leaf-node");
         final NodeIdentifier leafNodeId = new NodeIdentifier(leafNodeQName);
-        doReturn(leafNodeId).when(mockedLeafNode).getIdentifier();
+        doReturn(leafNodeId).when(mockedLeafNode).name();
         doReturn("str-value-1").when(mockedLeafNode).body();
 
         String stringTree = NormalizedNodes.toStringTree(mockedLeafNode);
@@ -110,12 +110,12 @@ public class NormalizedNodesTest {
 
         final SystemMapNode mockedMapNode = mock(SystemMapNode.class);
         final NodeIdentifier listNodeId = new NodeIdentifier(listQName);
-        doReturn(listNodeId).when(mockedMapNode).getIdentifier();
+        doReturn(listNodeId).when(mockedMapNode).name();
 
         final MapEntryNode mockedMapEntryNode = mock(MapEntryNode.class);
         final NodeIdentifierWithPredicates listEntryNodeId = NodeIdentifierWithPredicates.of(listQName,
                 leafNodeQName, "key-leaf-value");
-        doReturn(listEntryNodeId).when(mockedMapEntryNode).getIdentifier();
+        doReturn(listEntryNodeId).when(mockedMapEntryNode).name();
         doReturn(List.of(mockedMapEntryNode)).when(mockedMapNode).body();
 
         doReturn(List.of(mockedLeafNode)).when(mockedMapEntryNode).body();
index 582c71e47ff9dc3305536927b647d613e0a90eac..cb4061d40890790093879a8f46fcb4d7b442859e 100644 (file)
@@ -69,7 +69,7 @@ public class NormalizedNodeWriterTest {
         assertTrue(ex.getMessage().startsWith("It wasn't possible to serialize node"));
 
         final LeafSetEntryNode<?> mockedLeafSetEntryNode = mock(LeafSetEntryNode.class);
-        doReturn(new NodeWithValue<>(myLeafList, "leaflist-value-1")).when(mockedLeafSetEntryNode).getIdentifier();
+        doReturn(new NodeWithValue<>(myLeafList, "leaflist-value-1")).when(mockedLeafSetEntryNode).name();
         doReturn("leaflist-value-1").when(mockedLeafSetEntryNode).body();
         assertNotNull(orderedNormalizedNodeWriter.write(mockedLeafSetEntryNode));
 
@@ -87,7 +87,7 @@ public class NormalizedNodeWriterTest {
 
         final MapEntryNode mockedMapEntryNode = mock(MapEntryNode.class);
         doReturn(NodeIdentifierWithPredicates.of(myKeyedList, myKeyLeaf, "list-key-value-1"))
-                .when(mockedMapEntryNode).getIdentifier();
+                .when(mockedMapEntryNode).name();
         doReturn(null).when(mockedMapEntryNode).childByArg(any(NodeIdentifier.class));
         assertNotNull(orderedNormalizedNodeWriter.write(mockedMapEntryNode));
 
index 28ac1a1f492f95fb886f70d12ffc7006561fb31f..316b1b3dd52f951dc2816a2fffe618f37e6c855e 100644 (file)
@@ -175,12 +175,12 @@ public class YangInstanceIdentifierWriterTest {
                 final QName leafQname = QName.create("test", "leaf");
 
                 final LeafSetEntryNode<?> leafNode = mock(LeafSetEntryNode.class);
-                doReturn(new NodeWithValue<>(leafQname, "test-value")).when(leafNode).getIdentifier();
+                doReturn(new NodeWithValue<>(leafQname, "test-value")).when(leafNode).name();
                 doReturn("test-value").when(leafNode).body();
                 nnWriter.write(leafNode);
 
                 final LeafSetEntryNode<?> leafNode2 = mock(LeafSetEntryNode.class);
-                doReturn(new NodeWithValue<>(leafQname, "test-value-2")).when(leafNode2).getIdentifier();
+                doReturn(new NodeWithValue<>(leafQname, "test-value-2")).when(leafNode2).name();
                 doReturn("test-value-2").when(leafNode2).body();
                 nnWriter.write(leafNode2);
             }
@@ -202,9 +202,9 @@ public class YangInstanceIdentifierWriterTest {
         final ContainerNode containerNode = mock(ContainerNode.class);
         final LeafNode<?> leafNode = mock(LeafNode.class);
 
-        doReturn(new NodeIdentifier(QName.create("test", "payload-container"))).when(containerNode).getIdentifier();
+        doReturn(new NodeIdentifier(QName.create("test", "payload-container"))).when(containerNode).name();
         doReturn(Set.of(leafNode)).when(containerNode).body();
-        doReturn(new NodeIdentifier(QName.create("test", "payload-leaf"))).when(leafNode).getIdentifier();
+        doReturn(new NodeIdentifier(QName.create("test", "payload-leaf"))).when(leafNode).name();
         doReturn("leaf-value").when(leafNode).body();
 
         return containerNode;
index cde5ed4d496473d773297484001689e6a4536038..c8e526b2ad724c3e02596830cf1dde6dccc9e33d 100644 (file)
@@ -94,7 +94,7 @@ public class SchemaOrderedNormalizedNodeWriter extends NormalizedNodeWriter {
     @Override
     public SchemaOrderedNormalizedNodeWriter write(final NormalizedNode node) throws IOException {
         if (schemaContext.equals(root)) {
-            currentSchemaNode = schemaContext.dataChildByName(node.getIdentifier().getNodeType());
+            currentSchemaNode = schemaContext.dataChildByName(node.name().getNodeType());
         } else {
             currentSchemaNode = root;
         }
@@ -194,7 +194,7 @@ public class SchemaOrderedNormalizedNodeWriter extends NormalizedNodeWriter {
     }
 
     private static void putChild(final Multimap<QName, NormalizedNode> qnameToNodes, final NormalizedNode child) {
-        qnameToNodes.put(child.getIdentifier().getNodeType(), child);
+        qnameToNodes.put(child.name().getNodeType(), child);
     }
 
     private final class SchemaNodeSetter implements AutoCloseable {
index 8a294ab454ff2f06f15a4487af798a48761c3dbb..efc559ff648cf558b710826755ee5582de7c6a07 100644 (file)
@@ -71,7 +71,7 @@ abstract class AbstractImmutableDataContainerNodeBuilder<I extends PathArgument,
     }
 
     AbstractImmutableDataContainerNodeBuilder(final AbstractImmutableDataContainerNode<I, R> node) {
-        nodeIdentifier = node.getIdentifier();
+        nodeIdentifier = node.name();
 
         /*
          * This quite awkward. What we actually want to be saying here is: give me a copy-on-write view of your
index 96f48c8b016abbf7f332a3e8d426766b7627f582..61ba04eac555ce761f46e08e7b8ec31b4376e5ce 100644 (file)
@@ -42,7 +42,7 @@ public class ImmutableLeafSetNodeBuilder<T> implements ListNodeBuilder<T, System
     }
 
     protected ImmutableLeafSetNodeBuilder(final ImmutableLeafSetNode<T> node) {
-        nodeIdentifier = node.getIdentifier();
+        nodeIdentifier = node.name();
         value = MapAdaptor.getDefaultInstance().takeSnapshot(node.children);
     }
 
@@ -63,13 +63,13 @@ public class ImmutableLeafSetNodeBuilder<T> implements ListNodeBuilder<T, System
 
     @Override
     public ImmutableLeafSetNodeBuilder<T> withChild(final LeafSetEntryNode<T> child) {
-        this.value.put(child.getIdentifier(), child);
+        value.put(child.name(), child);
         return this;
     }
 
     @Override
     public ImmutableLeafSetNodeBuilder<T> withoutChild(final PathArgument key) {
-        this.value.remove(key);
+        value.remove(key);
         return this;
     }
 
@@ -80,7 +80,7 @@ public class ImmutableLeafSetNodeBuilder<T> implements ListNodeBuilder<T, System
 
     @Override
     public ImmutableLeafSetNodeBuilder<T> withNodeIdentifier(final NodeIdentifier withNodeIdentifier) {
-        this.nodeIdentifier = withNodeIdentifier;
+        nodeIdentifier = withNodeIdentifier;
         return this;
     }
 
@@ -152,7 +152,7 @@ public class ImmutableLeafSetNodeBuilder<T> implements ListNodeBuilder<T, System
                 return false;
             }
             for (var child : children.values()) {
-                if (!child.equals(other.childByArg(child.getIdentifier()))) {
+                if (!child.equals(other.childByArg(child.name()))) {
                     return false;
                 }
             }
index b84eb85b8b6bb7f62f29b0d4a0ab9c16ce49733b..d529ce81a4e3cc9426692a934078273962bd5ea7 100644 (file)
@@ -28,6 +28,7 @@ import org.slf4j.LoggerFactory;
 public class ImmutableMapEntryNodeBuilder
         extends AbstractImmutableDataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> {
     private static final Logger LOG = LoggerFactory.getLogger(ImmutableMapEntryNodeBuilder.class);
+    // FIXME: NodeIdentifier instead
     protected final Map<QName, PathArgument> childrenQNamesToPaths;
 
     protected ImmutableMapEntryNodeBuilder() {
@@ -70,7 +71,7 @@ public class ImmutableMapEntryNodeBuilder
 
     private static void putQName(final Map<QName, PathArgument> map, final DataContainerChild child) {
         // Augmentation nodes cannot be keys, and do not have to be present in childrenQNamesToPaths map
-        final PathArgument identifier = child.getIdentifier();
+        final var identifier = child.name();
         map.put(identifier.getNodeType(), identifier);
     }
 
index 939efe0dfee273345114868902f5a034cf15d258..8d0544bb42f0e91b4593a88fc023242adac681b6 100644 (file)
@@ -45,7 +45,7 @@ public class ImmutableMapNodeBuilder implements CollectionNodeBuilder<MapEntryNo
     }
 
     protected ImmutableMapNodeBuilder(final SystemMapNode node) {
-        nodeIdentifier = node.getIdentifier();
+        nodeIdentifier = node.name();
         value = MapAdaptor.getDefaultInstance().takeSnapshot(accessChildren(node));
     }
 
@@ -63,7 +63,7 @@ public class ImmutableMapNodeBuilder implements CollectionNodeBuilder<MapEntryNo
 
     @Override
     public ImmutableMapNodeBuilder withChild(final MapEntryNode child) {
-        value.put(child.getIdentifier(), child);
+        value.put(child.name(), child);
         return this;
     }
 
@@ -76,7 +76,7 @@ public class ImmutableMapNodeBuilder implements CollectionNodeBuilder<MapEntryNo
     @Override
     public ImmutableMapNodeBuilder withValue(final Collection<MapEntryNode> withValue) {
         // TODO replace or putAll ?
-        for (final MapEntryNode mapEntryNode : withValue) {
+        for (var mapEntryNode : withValue) {
             withChild(mapEntryNode);
         }
 
index 38fcd3395bbcd42fc21f6e9eaa09b87b9432468d..eb912cb7f6b4e0d1ad780f7bd8cbe68db889a508 100644 (file)
@@ -33,7 +33,7 @@ public class ImmutableUnkeyedListNodeBuilder implements CollectionNodeBuilder<Un
     }
 
     protected ImmutableUnkeyedListNodeBuilder(final ImmutableUnkeyedListNode node) {
-        nodeIdentifier = node.getIdentifier();
+        nodeIdentifier = node.name();
         // FIXME: clean this up, notably reuse unmodified lists
         value = new LinkedList<>();
         Iterables.addAll(value, node.body());
index c206e9fa039685a1b222c8c34d4b07c8340ea5c0..24dda7bf9c2448b0d88f476976d979f8ebb0a75f 100644 (file)
@@ -33,7 +33,7 @@ public class ImmutableUserLeafSetNodeBuilder<T> implements ListNodeBuilder<T, Us
     }
 
     ImmutableUserLeafSetNodeBuilder(final ImmutableUserLeafSetNode<T> node) {
-        nodeIdentifier = node.getIdentifier();
+        nodeIdentifier = node.name();
         value = node.getChildren();
         dirty = true;
     }
@@ -61,14 +61,14 @@ public class ImmutableUserLeafSetNodeBuilder<T> implements ListNodeBuilder<T, Us
     @Override
     public ImmutableUserLeafSetNodeBuilder<T> withChild(final LeafSetEntryNode<T> child) {
         checkDirty();
-        this.value.put(child.getIdentifier(), child);
+        value.put(child.name(), child);
         return this;
     }
 
     @Override
     public ImmutableUserLeafSetNodeBuilder<T> withoutChild(final PathArgument key) {
         checkDirty();
-        this.value.remove(key);
+        value.remove(key);
         return this;
     }
 
@@ -80,7 +80,7 @@ public class ImmutableUserLeafSetNodeBuilder<T> implements ListNodeBuilder<T, Us
 
     @Override
     public ImmutableUserLeafSetNodeBuilder<T> withNodeIdentifier(final NodeIdentifier withNodeIdentifier) {
-        this.nodeIdentifier = withNodeIdentifier;
+        nodeIdentifier = withNodeIdentifier;
         return this;
     }
 
index 0ab49807c341652de1719bb277b416b7de1535b6..77e069e6773f2a03ba356b1c716b237cf0fa4f5a 100644 (file)
@@ -45,7 +45,7 @@ public class ImmutableUserMapNodeBuilder implements CollectionNodeBuilder<MapEnt
     }
 
     private ImmutableUserMapNodeBuilder(final ImmutableUserMapNode node) {
-        nodeIdentifier = node.getIdentifier();
+        nodeIdentifier = node.name();
         value = node.children;
         dirty = true;
     }
@@ -75,7 +75,7 @@ public class ImmutableUserMapNodeBuilder implements CollectionNodeBuilder<MapEnt
     @Override
     public CollectionNodeBuilder<MapEntryNode, UserMapNode> withChild(final MapEntryNode child) {
         checkDirty();
-        value.put(child.getIdentifier(), child);
+        value.put(child.name(), child);
         return this;
     }
 
index 892cc4cfe522608fdf568a2202b2e03a16e0b97f..5c5498c63bde4f4118a97b49048c4a13e2247dde 100644 (file)
@@ -39,7 +39,7 @@ public class DataNodeContainerValidator {
     }
 
     public DataContainerChild validateChild(final DataContainerChild child) {
-        validateChild(child.getIdentifier());
+        validateChild(child.name());
         return child;
     }
 
@@ -48,7 +48,7 @@ public class DataNodeContainerValidator {
      * NormalizedNode API.
      */
     private static Set<QName> getChildNodes(final DataNodeContainer nodeContainer) {
-        Set<QName> allChildNodes = new HashSet<>();
+        final var allChildNodes = new HashSet<QName>();
 
         for (var childSchema : nodeContainer.getChildNodes()) {
             if (childSchema instanceof CaseSchemaNode caseChildSchema) {
index c3b0aeb47986f9da97f4c8cea30aaa5450afa217..cb393c8b7a83df64f40cddb3bc8d345e43c9a45f 100644 (file)
@@ -67,7 +67,7 @@ public abstract class AbstractImmutableDataContainerNode<K extends PathArgument,
             return false;
         }
         for (var child : body()) {
-            if (!child.equals(other.childByArg(child.getIdentifier()))) {
+            if (!child.equals(other.childByArg(child.name()))) {
                 return false;
             }
         }
index 3a0e707fec345eb859c4e970827ae2e6bc8bbae7..ef3ca40c5f80da1707701833c940b79f37b56836 100644 (file)
@@ -36,8 +36,8 @@ public final class LazyLeafOperations {
     }
 
     public static void putChild(final Map<PathArgument, Object> map, final DataContainerChild child) {
-        final DataContainerChild node = requireNonNull(child);
-        map.put(node.getIdentifier(), encodeExpendableChild(node));
+        final var node = requireNonNull(child);
+        map.put(node.name(), encodeExpendableChild(node));
     }
 
     static @NonNull LeafNode<?> coerceLeaf(final PathArgument key, final Object value) {
index dfb2ae8bf26adafa5d05802e4b9516cef8a524b8..3dde7bad4b30b8bbf5cfa05f6ba50562719364d8 100644 (file)
@@ -17,7 +17,6 @@ import java.io.File;
 import java.net.URISyntaxException;
 import java.util.HashMap;
 import java.util.LinkedList;
-import java.util.Map;
 import org.junit.Before;
 import org.junit.Test;
 import org.opendaylight.yangtools.util.UnmodifiableCollection;
@@ -93,9 +92,9 @@ public class BuilderTest {
 
     @Test
     public void immutableOrderedMapBuilderTest() {
-        final LinkedList<MapEntryNode> mapEntryNodeColl = new LinkedList<>();
+        final var mapEntryNodeColl = new LinkedList<MapEntryNode>();
         mapEntryNodeColl.add(LIST_MAIN_CHILD_3);
-        final Map<QName, Object> keys = new HashMap<>();
+        final var keys = new HashMap<QName, Object>();
         keys.put(LIST_MAIN_CHILD_QNAME_1, 1);
         final NodeIdentifierWithPredicates mapEntryPath = NodeIdentifierWithPredicates.of(LIST_MAIN, keys);
         final UserMapNode orderedMapNodeCreateNull = ImmutableUserMapNodeBuilder.create()
@@ -120,7 +119,7 @@ public class BuilderTest {
 
         assertEquals(SIZE, orderedMapNodeCreateNull.size());
         assertEquals(orderedMapNodeCreateNode.size(), orderedMapNodeCreateNull.size() - 1);
-        assertEquals(NODE_IDENTIFIER_LIST, orderedMapNodeCreateSize.getIdentifier());
+        assertEquals(NODE_IDENTIFIER_LIST, orderedMapNodeCreateSize.name());
         assertEquals(LIST_MAIN_CHILD_1, orderedMapNodeCreateNull.childAt(0));
         assertEquals(SIZE, orderedMapNodeCreateNull.size());
         assertEquals(orderedMapNodeSchemaAware.childAt(0), orderedMapNodeSchemaAwareMapNodeConst.childAt(0));
@@ -175,8 +174,8 @@ public class BuilderTest {
                 .build();
         final UnkeyedListEntryNode unkeyedListEntryNodeNode = ImmutableUnkeyedListEntryNodeBuilder
                 .create(unkeyedListEntryNode).build();
-        assertEquals(unkeyedListEntryNode.getIdentifier(), unkeyedListEntryNodeSize.getIdentifier());
-        assertEquals(unkeyedListEntryNodeSize.getIdentifier(), unkeyedListEntryNodeNode.getIdentifier());
+        assertEquals(unkeyedListEntryNode.name(), unkeyedListEntryNodeSize.name());
+        assertEquals(unkeyedListEntryNodeSize.name(), unkeyedListEntryNodeNode.name());
     }
 
     @Test
@@ -200,7 +199,7 @@ public class BuilderTest {
 
         assertNotNull(unkeyedListNodeSize.body());
         assertEquals(unkeyedListEntryNode, unkeyedListNodeCreated.childAt(0));
-        assertEquals(unkeyedListNode.getIdentifier(), unkeyedListNodeSize.getIdentifier());
+        assertEquals(unkeyedListNode.name(), unkeyedListNodeSize.name());
         assertNotNull(unkeyedListNodeCreated);
     }
 
@@ -209,7 +208,7 @@ public class BuilderTest {
         final ChoiceNode choiceNode = ImmutableChoiceNodeBuilder.create(1).withNodeIdentifier(NODE_IDENTIFIER_LIST)
                 .build();
         final ChoiceNode choiceNodeCreated = ImmutableChoiceNodeBuilder.create(choiceNode).build();
-        assertEquals(choiceNodeCreated.getIdentifier(), choiceNode.getIdentifier());
+        assertEquals(choiceNodeCreated.name(), choiceNode.name());
     }
 
     @Test
index 626a8c5165cda758ae0233135cf03d21c7a5475e..32d39162b266c0c95346b83cb63e7793a313fea7 100644 (file)
@@ -115,6 +115,6 @@ public class InstanceIdToNodesTest {
         final MapEntryNode entry = value.iterator().next();
 
         // The entry must have a the proper order
-        assertArrayEquals(new Object[] { FOO, BAR }, entry.getIdentifier().keySet().toArray());
+        assertArrayEquals(new Object[] { FOO, BAR }, entry.name().keySet().toArray());
     }
 }
index 33c9407bf022c6769258eff402719dd461ef7f37..3d69a57b9f38e19d5b577dc74ca75c9ed35258e1 100644 (file)
@@ -33,7 +33,7 @@ public class YT1417Test {
     @Test
     public void testContainerNodeEquality() {
         final var mock = mock(ContainerNode.class);
-        doReturn(new NodeIdentifier(FOO)).when(mock).getIdentifier();
+        doReturn(new NodeIdentifier(FOO)).when(mock).name();
         doReturn(1).when(mock).size();
         doReturn(ImmutableNodes.leafNode(BAR, "abc")).when(mock).childByArg(new NodeIdentifier(BAR));
 
@@ -65,7 +65,7 @@ public class YT1417Test {
     @Test
     public void testSystemLeafSetNodeEquality() {
         final var mock = mock(SystemLeafSetNode.class);
-        doReturn(new NodeIdentifier(FOO)).when(mock).getIdentifier();
+        doReturn(new NodeIdentifier(FOO)).when(mock).name();
         doReturn(1).when(mock).size();
         doReturn(Builders.leafSetEntryBuilder()
             .withNodeIdentifier(new NodeWithValue<>(FOO, "abc"))
@@ -115,7 +115,7 @@ public class YT1417Test {
     @Test
     public void testUserLeafSetNodeEquality() {
         final var mock = mock(UserLeafSetNode.class);
-        doReturn(new NodeIdentifier(FOO)).when(mock).getIdentifier();
+        doReturn(new NodeIdentifier(FOO)).when(mock).name();
         doReturn(List.of(
             Builders.leafSetEntryBuilder()
                 .withNodeIdentifier(new NodeWithValue<>(FOO, "abc"))
index 0796b868b3acc6c6944a2374d1ecc8d2879bf4fe..49854b088dabcd9b0510057489a4187eeb5f0b20 100644 (file)
@@ -8,10 +8,12 @@
  */
 package org.opendaylight.yangtools.yang.data.spi.node;
 
+import static java.util.Objects.requireNonNull;
+
 import com.google.common.annotations.Beta;
+import com.google.common.base.MoreObjects;
 import com.google.common.base.MoreObjects.ToStringHelper;
 import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.concepts.AbstractIdentifiable;
 import org.opendaylight.yangtools.concepts.Immutable;
 import org.opendaylight.yangtools.concepts.PrettyTree;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
@@ -25,9 +27,16 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
  */
 @Beta
 public abstract class AbstractNormalizedNode<I extends PathArgument, T extends NormalizedNode>
-        extends AbstractIdentifiable<PathArgument, I> implements NormalizedNode, Immutable {
-    protected AbstractNormalizedNode(final I identifier) {
-        super(identifier);
+        implements NormalizedNode, Immutable {
+    private final @NonNull I name;
+
+    protected AbstractNormalizedNode(final I name) {
+        this.name = requireNonNull(name);
+    }
+
+    @Override
+    public final I name() {
+        return name;
     }
 
     @Override
@@ -40,22 +49,26 @@ public abstract class AbstractNormalizedNode<I extends PathArgument, T extends N
         if (this == obj) {
             return true;
         }
-        final Class<T> clazz = implementedType();
+        final var clazz = implementedType();
         if (!clazz.isInstance(obj)) {
             return false;
         }
-        final T other = clazz.cast(obj);
-        return getIdentifier().equals(other.getIdentifier()) && valueEquals(other);
+        final var other = clazz.cast(obj);
+        return name().equals(other.name()) && valueEquals(other);
     }
 
     @Override
     public final int hashCode() {
-        return 31 * getIdentifier().hashCode() + valueHashCode();
+        return 31 * name().hashCode() + valueHashCode();
     }
 
     @Override
+    public final String toString() {
+        return addToStringAttributes(MoreObjects.toStringHelper(this)).toString();
+    }
+
     protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
-        return super.addToStringAttributes(toStringHelper).add("body", body());
+        return toStringHelper.add("name", name).add("body", body());
     }
 
     protected abstract @NonNull Class<T> implementedType();
index edbf6fca7d5dcd12767dd403d0a0871af99263f7..6bcfd6c88d7d2d0956c6452ec55b99467df65b9f 100644 (file)
@@ -45,7 +45,7 @@ public final class NormalizedNodePrettyTree extends PrettyTree implements Immuta
         appendIndent(sb, depth);
         sb.append(simpleName.toLowerCase(Locale.ROOT).charAt(0)).append(simpleName, 1, simpleName.length()).append(' ');
 
-        final QName qname = node.getIdentifier().getNodeType();
+        final QName qname = node.name().getNodeType();
         final QNameModule currentNamespace = qname.getModule();
         appendNamespace(sb, parentNamespace, currentNamespace);
         sb.append(qname.getLocalName()).append(' ');
index 49d49f005cb11fb9e96d1e094c7f0ad7157f66e6..ff34ba171af3f8d67e5fe112172a90023ba83279 100644 (file)
@@ -111,13 +111,13 @@ abstract class AbstractNodeContainerModificationStrategy<T extends WithStatus>
     @Override
     final void verifyValueChildren(final NormalizedNode writtenValue) {
         if (verifyChildrenStructure) {
-            final DistinctNodeContainer<?, ?> container = (DistinctNodeContainer<?, ?>) writtenValue;
-            for (final NormalizedNode child : container.body()) {
-                final ModificationApplyOperation childOp = childByArg(child.getIdentifier());
+            final var container = (DistinctNodeContainer<?, ?>) writtenValue;
+            for (var child : container.body()) {
+                final ModificationApplyOperation childOp = childByArg(child.name());
                 if (childOp == null) {
                     throw new SchemaValidationFailedException(String.format(
                         "Node %s is not a valid child of %s according to the schema.",
-                        child.getIdentifier(), container.getIdentifier()));
+                        child.name(), container.name()));
                 }
                 childOp.fullVerifyStructure(child);
             }
@@ -149,13 +149,13 @@ abstract class AbstractNodeContainerModificationStrategy<T extends WithStatus>
 
     @Override
     protected final void recursivelyVerifyStructure(final NormalizedNode value) {
-        final NormalizedNodeContainer<?> container = (NormalizedNodeContainer<?>) value;
-        for (final NormalizedNode child : container.body()) {
-            final ModificationApplyOperation childOp = childByArg(child.getIdentifier());
+        final var container = (NormalizedNodeContainer<?>) value;
+        for (var child : container.body()) {
+            final var childOp = childByArg(child.name());
             if (childOp == null) {
                 throw new SchemaValidationFailedException(
                     String.format("Node %s is not a valid child of %s according to the schema.",
-                        child.getIdentifier(), container.getIdentifier()));
+                        child.name(), container.name()));
             }
 
             childOp.recursivelyVerifyStructure(child);
@@ -241,8 +241,8 @@ abstract class AbstractNodeContainerModificationStrategy<T extends WithStatus>
         final NormalizedNode value = modification.getWrittenValue();
 
         Verify.verify(value instanceof DistinctNodeContainer, "Attempted to merge non-container %s", value);
-        for (final NormalizedNode c : ((DistinctNodeContainer<?, ?>) value).body()) {
-            final PathArgument id = c.getIdentifier();
+        for (var c : ((DistinctNodeContainer<?, ?>) value).body()) {
+            final var id = c.name();
             modification.modifyChild(id, resolveChildOperation(id), version);
         }
         return applyTouch(modification, currentMeta, version);
@@ -251,8 +251,8 @@ abstract class AbstractNodeContainerModificationStrategy<T extends WithStatus>
     private void mergeChildrenIntoModification(final ModifiedNode modification,
             final Collection<? extends NormalizedNode> children, final Version version) {
         for (final NormalizedNode c : children) {
-            final ModificationApplyOperation childOp = resolveChildOperation(c.getIdentifier());
-            final ModifiedNode childNode = modification.modifyChild(c.getIdentifier(), childOp, version);
+            final ModificationApplyOperation childOp = resolveChildOperation(c.name());
+            final ModifiedNode childNode = modification.modifyChild(c.name(), childOp, version);
             childOp.mergeIntoModifiedNode(childNode, c, version);
         }
     }
index f4749555e78bec215a04b0cf1f1b606970ffd1ab..e768c1da3af988117f5fcc06401465147ecc96aa 100644 (file)
@@ -25,9 +25,7 @@ import org.eclipse.jdt.annotation.NonNull;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
 import org.opendaylight.yangtools.yang.data.api.schema.ChoiceNode;
-import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableChoiceNodeBuilder;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration;
@@ -111,20 +109,20 @@ final class ChoiceModificationStrategy extends Visible<ChoiceSchemaNode> {
 
     private void enforceCases(final NormalizedNode normalizedNode) {
         verify(normalizedNode instanceof ChoiceNode);
-        final var children = ((ChoiceNode) normalizedNode).body();
-        if (!children.isEmpty()) {
-            final DataContainerChild firstChild = children.iterator().next();
-            final CaseEnforcer enforcer = verifyNotNull(caseEnforcers.get(firstChild.getIdentifier()),
+        final var choice = (ChoiceNode) normalizedNode;
+        if (!choice.isEmpty()) {
+            final var firstChild = choice.body().iterator().next();
+            final var enforcer = verifyNotNull(caseEnforcers.get(firstChild.name()),
                 "Case enforcer cannot be null. Most probably, child node %s of choice node %s does not belong "
-                + "in current tree type.", firstChild.getIdentifier(), normalizedNode.getIdentifier());
+                + "in current tree type.", firstChild.name(), normalizedNode.name());
 
             // Make sure no leaves from other cases are present
-            for (final CaseEnforcer other : verifyNotNull(exclusions.get(enforcer))) {
-                for (final PathArgument id : other.getChildIdentifiers()) {
-                    final Optional<NormalizedNode> maybeChild = NormalizedNodes.getDirectChild(normalizedNode, id);
-                    checkArgument(!maybeChild.isPresent(),
+            for (var other : verifyNotNull(exclusions.get(enforcer))) {
+                for (var id : other.getChildIdentifiers()) {
+                    final var child = choice.childByArg(id);
+                    checkArgument(child == null,
                         "Child %s (from case %s) implies non-presence of child %s (from case %s), which is %s",
-                        firstChild.getIdentifier(), enforcer, id, other, maybeChild.orElse(null));
+                        firstChild.name(), enforcer, id, other, child);
                 }
             }
 
index a6a34d436c7b9af0d1fdca6bd5cdff5b9b8a2077..f3cd50a2f6d93855ae79824e501498f1adacb9d3 100644 (file)
@@ -278,8 +278,9 @@ final class InMemoryDataTreeModification extends AbstractCursorAware implements
     }
 
     static void checkIdentifierReferencesData(final PathArgument arg, final NormalizedNode data) {
-        checkArgument(arg.equals(data.getIdentifier()),
-            "Instance identifier references %s but data identifier is %s", arg, data.getIdentifier());
+        final var dataName = data.name();
+        checkArgument(arg.equals(dataName),
+            "Instance identifier references %s but data identifier is %s", arg, dataName);
     }
 
     private void checkIdentifierReferencesData(final YangInstanceIdentifier path,
index a97f65ee36293da706eaf710877385b621aa9d6a..1bba513a72755d2de0035db12c2f9cc89f603123 100644 (file)
@@ -62,7 +62,7 @@ final class MandatoryDescendant implements Immutable {
 
         // ... not found, report the error
         throw new IllegalArgumentException(String.format("Node %s is missing mandatory descendant %s",
-            data.getIdentifier(), path));
+            data.name(), path));
     }
 
     static AugmentationSchemaNode getAugIdentifierOfChild(final DataNodeContainer parent, final DataSchemaNode child) {
index 29f97d1065943d5eee97615b777f67670bbac71c..5da13358b3fd3efc134ddbce4de26424fa756d7a 100644 (file)
@@ -64,11 +64,11 @@ final class MinMaxElementsValidation<T extends DataSchemaNode & ElementCountCons
         checkArgument(value instanceof NormalizedNodeContainer, "Value %s is not a NormalizedNodeContainer", value);
         final int children = ((NormalizedNodeContainer<?>) value).size();
         if (minElements > children) {
-            throw exceptionSupplier.get(children, value.getIdentifier()
+            throw exceptionSupplier.get(children, value.name()
                 + " does not have enough elements (" + children + "), needs at least " + minElements);
         }
         if (maxElements < children) {
-            throw exceptionSupplier.get(children, value.getIdentifier()
+            throw exceptionSupplier.get(children, value.name()
                 + " has too many elements (" + children + "), can have at most " + maxElements);
         }
     }
index 6030f97cd08fca3f69e3dea886bf280d2a38be3b..777e31a5463c0a24084c674e0ca68f9c5658a51b 100644 (file)
@@ -43,7 +43,7 @@ final class NormalizedNodeContainerSupport<K extends PathArgument, T extends Nor
     }
 
     NormalizedNode createEmptyValue(final NormalizedNode original) {
-        return emptyBuilder.get().withNodeIdentifier((K) cast(original).getIdentifier()).build();
+        return emptyBuilder.get().withNodeIdentifier((K) cast(original).name()).build();
     }
 
     private T cast(final NormalizedNode original) {
index bbb613289f92b38ff4b82b989d715c6be5b326e8..74788bc36ca8ad43f46bc707b239c2eb537d6ce3 100644 (file)
@@ -106,7 +106,7 @@ final class UniqueValidation extends AbstractValidation {
                 final Object masked = BinaryValue.wrap(values);
                 if (!collected.put(validator, masked)) {
                     final Map<Descendant, @Nullable Object> index = validator.indexValues(values);
-                    throw exceptionSupplier.get(cont.getIdentifier()
+                    throw exceptionSupplier.get(cont.name()
                         + " violates unique constraint on " + masked + " of " + index.keySet(), index);
                 }
             }
index 99d25f289a278ee822fe0394bc1890a5b04d669d..07c8404c9c046dc5bab285ca02b9e422c9124dc7 100644 (file)
@@ -47,6 +47,6 @@ final class LazyContainerNode extends AbstractModifiedContainerNode {
     ToStringHelper addToStringAttributes(final ToStringHelper helper) {
         // Modified children add added by superclass. Here we filter the other children.
         return super.addToStringAttributes(helper).add("untouched", Collections2.filter(castData().body(),
-            input -> getModifiedChild(input.getIdentifier()) == null));
+            input -> getModifiedChild(input.name()) == null));
     }
 }
index 50ad005b0a64a669bd7435a40cfa459c73057acf..c89bb335575b361333da7990a42f4f984e030a8e 100644 (file)
@@ -70,7 +70,7 @@ public abstract class TreeNode implements Identifiable<PathArgument>, StoreTreeN
 
     @Override
     public final PathArgument getIdentifier() {
-        return data.getIdentifier();
+        return data.name();
     }
 
     /**
index be6f05873aebcb30872bec058d34b641dbff4819..f317abd9e6db9fc3710d5afa2248a784afac3863 100644 (file)
@@ -204,14 +204,14 @@ public final class LeafRefValidation {
             final LeafRefContext referencingCtx, final ModificationType modificationType,
             final YangInstanceIdentifier current) {
         for (final DataContainerChild child : node.body()) {
-            final QName qname = child.getIdentifier().getNodeType();
+            final QName qname = child.name().getNodeType();
             final LeafRefContext childReferencedByCtx = referencedByCtx == null ? null
                     : findReferencedByCtxUnderChoice(referencedByCtx, qname);
             final LeafRefContext childReferencingCtx = referencingCtx == null ? null
                     : findReferencingCtxUnderChoice(referencingCtx, qname);
             if (childReferencedByCtx != null || childReferencingCtx != null) {
                 validateNodeData(child, childReferencedByCtx, childReferencingCtx, modificationType,
-                    current.node(child.getIdentifier()));
+                    current.node(child.name()));
             }
         }
     }
@@ -219,7 +219,7 @@ public final class LeafRefValidation {
     private void validateDataContainerNodeData(final DataContainerNode node, final LeafRefContext referencedByCtx,
             final LeafRefContext referencingCtx, final ModificationType modificationType,
             final YangInstanceIdentifier current) {
-        for (final DataContainerChild child : node.body()) {
+        for (var child : node.body()) {
             validateChildNodeData(child, referencedByCtx, referencingCtx, modificationType, current);
         }
     }
@@ -227,9 +227,9 @@ public final class LeafRefValidation {
     private void validateMapNodeData(final MapNode node, final LeafRefContext referencedByCtx,
             final LeafRefContext referencingCtx, final ModificationType modificationType,
             final YangInstanceIdentifier current) {
-        for (final MapEntryNode mapEntry : node.asMap().values()) {
-            final YangInstanceIdentifier mapEntryIdentifier = current.node(mapEntry.getIdentifier());
-            for (final DataContainerChild child : mapEntry.body()) {
+        for (var mapEntry : node.asMap().values()) {
+            final var mapEntryIdentifier = current.node(mapEntry.name());
+            for (var child : mapEntry.body()) {
                 validateChildNodeData(child, referencedByCtx, referencingCtx, modificationType, mapEntryIdentifier);
             }
         }
@@ -238,14 +238,14 @@ public final class LeafRefValidation {
     private void validateChildNodeData(final DataContainerChild child, final LeafRefContext referencedByCtx,
             final LeafRefContext referencingCtx, final ModificationType modificationType,
             final YangInstanceIdentifier current) {
-        final QName qname = child.getIdentifier().getNodeType();
+        final QName qname = child.name().getNodeType();
         final LeafRefContext childReferencedByCtx = referencedByCtx == null ? null
                 : referencedByCtx.getReferencedChildByName(qname);
         final LeafRefContext childReferencingCtx = referencingCtx == null ? null
                 : referencingCtx.getReferencingChildByName(qname);
         if (childReferencedByCtx != null || childReferencingCtx != null) {
             validateNodeData(child, childReferencedByCtx, childReferencingCtx, modificationType, current.node(
-                child.getIdentifier()));
+                child.name()));
         }
     }
 
@@ -297,11 +297,11 @@ public final class LeafRefValidation {
 
                 LOG.debug("Invalid leafref value [{}] allowed values {} by validation of leafref TARGET node: {} path "
                         + "of invalid LEAFREF node: {} leafRef target path: {} {}", leafRefsValue,
-                        leafRefTargetNodeValues, leaf.getIdentifier(), leafRefContext.getCurrentNodePath(),
+                        leafRefTargetNodeValues, leaf.name(), leafRefContext.getCurrentNodePath(),
                         leafRefContext.getAbsoluteLeafRefTargetPath(), FAILED);
                 errorsMessages.add(String.format("Invalid leafref value [%s] allowed values %s by validation of leafref"
                         + " TARGET node: %s path of invalid LEAFREF node: %s leafRef target path: %s %s", leafRefsValue,
-                        leafRefTargetNodeValues, leaf.getIdentifier(), leafRefContext.getCurrentNodePath(),
+                        leafRefTargetNodeValues, leaf.name(), leafRefContext.getCurrentNodePath(),
                         leafRefContext.getAbsoluteLeafRefTargetPath(),
                         FAILED));
             });
@@ -325,9 +325,9 @@ public final class LeafRefValidation {
         LOG.debug("Operation [{}] validate data of LEAFREF node: name[{}] = value[{}] {}", modificationType,
             referencingCtx.getNodeName(), leaf.body(), FAILED);
         LOG.debug("Invalid leafref value [{}] allowed values {} of LEAFREF node: {} leafRef target path: {}",
-            leaf.body(), values, leaf.getIdentifier(), referencingCtx.getAbsoluteLeafRefTargetPath());
+            leaf.body(), values, leaf.name(), referencingCtx.getAbsoluteLeafRefTargetPath());
         errorsMessages.add(String.format("Invalid leafref value [%s] allowed values %s of LEAFREF node: %s leafRef "
-                + "target path: %s", leaf.body(), values, leaf.getIdentifier(),
+                + "target path: %s", leaf.body(), values, leaf.name(),
                 referencingCtx.getAbsoluteLeafRefTargetPath()));
     }
 
@@ -399,7 +399,7 @@ public final class LeafRefValidation {
         }
 
         return mapEntry -> {
-            for (var entryKeyValue : mapEntry.getIdentifier().entrySet()) {
+            for (var entryKeyValue : mapEntry.name().entrySet()) {
                 final var allowedValues = keyValues.get(entryKeyValue.getKey());
                 if (allowedValues != null && !allowedValues.contains(entryKeyValue.getValue())) {
                     return false;
index c7d3cffda4a5a24d4cfd47efe7d7f727dbadbbfe..716c3f45313c9af6de1d886dad575fb8cfbb78a8 100644 (file)
@@ -76,7 +76,7 @@ public class ConfigStatementValidationTest extends AbstractTestModelTest {
             DataTreeConfiguration.DEFAULT_CONFIGURATION, SCHEMA_CONTEXT);
         final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
         final YangInstanceIdentifier ii = OUTER_LIST_1_PATH.node(new NodeIdentifier(TestModel.INNER_LIST_QNAME))
-            .node(INNER_FOO_ENTRY_NODE.getIdentifier());
+            .node(INNER_FOO_ENTRY_NODE.name());
         modificationTree.write(ii, INNER_FOO_ENTRY_NODE);
 
         inMemoryDataTree.validate(modificationTree);
index cc0c8ba995e55eca4e4838f58853185aaf6a6eb5..7a9d43aec8e6050856470019748f3ad258c39d05 100644 (file)
@@ -137,9 +137,9 @@ public class ListConstraintsValidation {
                 .withNodeIdentifier(new NodeIdentifier(MIN_MAX_LIST_QNAME))
                 .withChild(fooEntryNode).build();
 
-        final YangInstanceIdentifier fooPath = MIN_MAX_LIST_PATH.node(fooEntryNode.getIdentifier());
-        final YangInstanceIdentifier barPath = MIN_MAX_LIST_PATH.node(barEntryNode.getIdentifier());
-        final YangInstanceIdentifier gooPath = MIN_MAX_LIST_PATH.node(gooEntryNode.getIdentifier());
+        final YangInstanceIdentifier fooPath = MIN_MAX_LIST_PATH.node(fooEntryNode.name());
+        final YangInstanceIdentifier barPath = MIN_MAX_LIST_PATH.node(barEntryNode.name());
+        final YangInstanceIdentifier gooPath = MIN_MAX_LIST_PATH.node(gooEntryNode.name());
 
         modificationTree.write(MIN_MAX_LIST_PATH, mapNode);
         modificationTree.merge(barPath, barEntryNode);
index a6f4f0556860e246f2c475ddf46b2ae42d48610b..9efd66ec8657453bb77541e9c673a24a163a69eb 100644 (file)
@@ -25,7 +25,7 @@ abstract class AbstractDataTreeCandidateNode implements DataTreeCandidateNode {
 
     @Override
     public final PathArgument getIdentifier() {
-        return data.getIdentifier();
+        return data.name();
     }
 
     final @NonNull Optional<NormalizedNode> dataOptional() {
@@ -38,6 +38,6 @@ abstract class AbstractDataTreeCandidateNode implements DataTreeCandidateNode {
 
     @Override
     public String toString() {
-        return this.getClass().getSimpleName() + "{data = " + this.data + "}";
+        return this.getClass().getSimpleName() + "{data = " + data + "}";
     }
 }
index ae2484a8f04c3f5bcdf0b7188d272ef7365a0c3c..6183ab326b66988117c22286969c40c092122687 100644 (file)
@@ -35,7 +35,7 @@ abstract class AbstractLeafCandidateNode implements DataTreeCandidateNode {
 
     @Override
     public final PathArgument getIdentifier() {
-        return data.getIdentifier();
+        return data.name();
     }
 
     @Override
index 6a584c8bfe4676422e7eb7ec9bcf412cee7d5c7c..af6f3107d87bc442d3038c167cf0091816d36361 100644 (file)
@@ -96,7 +96,7 @@ public final class DataTreeCandidateNodes {
         final Collection<DataTreeCandidateNode> result = new ArrayList<>();
         for (NormalizedNode child : newData.body()) {
             final DataTreeCandidateNode node;
-            final NormalizedNode oldChild = oldData.childByArg(child.getIdentifier());
+            final NormalizedNode oldChild = oldData.childByArg(child.name());
             if (oldChild != null) {
                 // This does not find children which have not in fact been modified, as doing that
                 // reliably would require us running a full equals() on the two nodes.
@@ -110,7 +110,7 @@ public final class DataTreeCandidateNodes {
 
         // Process removals next, looking into new data to see if we processed it
         for (NormalizedNode child : oldData.body()) {
-            if (newData.childByArg(child.getIdentifier()) == null) {
+            if (newData.childByArg(child.name()) == null) {
                 result.add(deleteNode(child));
             }
         }
index 7e2c1205f675f58a82a601a862effb7488adc9c2..4ec90be143927f659a152fde2dccc8738d013611 100644 (file)
@@ -38,7 +38,7 @@ final class NormalizedNodeDataTreeCandidateNode implements DataTreeCandidateNode
 
     @Override
     public PathArgument getIdentifier() {
-        return data.getIdentifier();
+        return data.name();
     }
 
     @Override
index f40aec5d669a3aa4150ce71cf4bdbdfd9e74ba39..632517a1f0fcee8ed45448c472253d7640c9b631 100644 (file)
@@ -35,8 +35,8 @@ public class NormalizedNodeDataTreeCandidateNodeTest {
         final NormalizedNodeDataTreeCandidateNode normalizedNodeDataTreeCandidateNode = new
                 NormalizedNodeDataTreeCandidateNode(mockedNormalizedNode);
 
-        final PathArgument mockedPathArgument = new NodeIdentifier(QName.create("test", "test"));
-        doReturn(mockedPathArgument).when(mockedNormalizedNode).getIdentifier();
+        final var mockedPathArgument = new NodeIdentifier(QName.create("test", "test"));
+        doReturn(mockedPathArgument).when(mockedNormalizedNode).name();
         assertSame(mockedPathArgument, normalizedNodeDataTreeCandidateNode.getIdentifier());
 
         final Collection<DataTreeCandidateNode> childNodes = normalizedNodeDataTreeCandidateNode.getChildNodes();
index 1328823422ca26161cdca3c9e3866812b2b3f2e1..6590304cdad88c76e4ede512b51ef4848c29b7bc 100644 (file)
@@ -36,7 +36,7 @@ public class YT1455Test {
     @Test
     public void testDeleteUnkeyedList() {
         final var childId = new NodeIdentifier(QName.create("foo", "foo"));
-        doReturn(childId).when(child).getIdentifier();
+        doReturn(childId).when(child).name();
         doReturn(List.of(child)).when(oldData).body();
         doReturn(List.of()).when(newData).body();
         doReturn(null).when(newData).childByArg(childId);
index de3a1a821fdb3218979bc97618b7e833df9dfded..5344fb1ec80d40ee12b76e487308a107797a258e 100644 (file)
@@ -80,7 +80,7 @@ public abstract class AbstractMountPointContextFactory extends AbstractDynamicMo
     @Override
     protected final MountPointContext createMountPointContext(final EffectiveModelContext schemaContext,
             final ContainerNode mountData) {
-        checkArgument(SCHEMA_MOUNTS.equals(mountData.getIdentifier()), "Unexpected top-level container %s", mountData);
+        checkArgument(SCHEMA_MOUNTS.equals(mountData.name()), "Unexpected top-level container %s", mountData);
 
         final var mountPoint = mountData.childByArg(MOUNT_POINT);
         if (mountPoint == null) {
index 8026f09d417852e7280f1045035f3f6db700e926..349a8040c372b4fc7f3e1ec9e391e80c9df1e0fd 100644 (file)
@@ -101,7 +101,7 @@ public final class NormalizedMetadataWriter implements Closeable, Flushable {
      */
     public @NonNull NormalizedMetadataWriter write(final NormalizedNode data, final NormalizedMetadata metadata)
             throws IOException {
-        final PathArgument dataId = data.getIdentifier();
+        final PathArgument dataId = data.name();
         final PathArgument metaId = metadata.getIdentifier();
         checkArgument(dataId.equals(metaId), "Mismatched data %s and metadata %s", dataId, metaId);
 
index 749f45b5c36719d316d8596f4573daddfaf5ced9..5cf3b7a650db4f001a517fb6b5dc1ae40e542173 100644 (file)
@@ -25,7 +25,7 @@ public final class NormalizedNodeSchemaUtils {
     }
 
     public static Optional<CaseSchemaNode> detectCase(final ChoiceSchemaNode schema, final DataContainerChild child) {
-        final QName childId = child.getIdentifier().getNodeType();
+        final QName childId = child.name().getNodeType();
         for (final CaseSchemaNode choiceCaseNode : schema.getCases()) {
             if (choiceCaseNode.dataChildByName(childId) != null) {
                 return Optional.of(choiceCaseNode);