Add ImmutableNode.newXYXBuilder() methods
[yangtools.git] / data / yang-data-tree-ri / src / test / java / org / opendaylight / yangtools / yang / data / tree / impl / OrderedListTest.java
index bace335f3b8d673a8d02a64d791238855f5a193c..7d938ea2a325c60db9b9840a313c3a3e7cf53bcc 100644 (file)
@@ -8,10 +8,9 @@
 package org.opendaylight.yangtools.yang.data.tree.impl;
 
 import static org.junit.jupiter.api.Assertions.assertFalse;
+import static org.junit.jupiter.api.Assertions.assertThrows;
 import static org.junit.jupiter.api.Assertions.assertTrue;
-import static org.junit.jupiter.api.Assertions.fail;
 
-import com.google.common.collect.ImmutableMap;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 import org.opendaylight.yangtools.yang.common.QName;
@@ -21,7 +20,7 @@ import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifier;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.NodeIdentifierWithPredicates;
 import org.opendaylight.yangtools.yang.data.api.schema.MapEntryNode;
-import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
+import org.opendaylight.yangtools.yang.data.spi.node.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.tree.api.ConflictingModificationAppliedException;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTree;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration;
@@ -104,26 +103,31 @@ class OrderedListTest {
     }
 
     public void modification1() throws DataValidationFailedException {
-        final var parentOrderedListNode = Builders.orderedMapBuilder().withNodeIdentifier(
-                new NodeIdentifier(parentOrderedList))
-                .withChild(createParentOrderedListEntry("pkval1", "plfval1"))
-                .withChild(createParentOrderedListEntry("pkval2", "plfval2"))
-                .withChild(createParentOrderedListEntry("pkval3", "plfval3")).build();
-
-        final var parentContainerNode = Builders.containerBuilder().withNodeIdentifier(
-                new NodeIdentifier(parentContainer)).withChild(Builders.containerBuilder()
-                .withNodeIdentifier(new NodeIdentifier(childContainer)).withChild(parentOrderedListNode).build())
-                .build();
+        final var parentOrderedListNode = ImmutableNodes.newUserMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentOrderedList))
+            .withChild(createParentOrderedListEntry("pkval1", "plfval1"))
+            .withChild(createParentOrderedListEntry("pkval2", "plfval2"))
+            .withChild(createParentOrderedListEntry("pkval3", "plfval3"))
+            .build();
+
+        final var parentContainerNode = ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentContainer))
+            .withChild(ImmutableNodes.newContainerBuilder()
+                .withNodeIdentifier(new NodeIdentifier(childContainer))
+                .withChild(parentOrderedListNode)
+                .build())
+            .build();
 
         final var path1 = YangInstanceIdentifier.of(parentContainer);
 
         final var treeModification = inMemoryDataTree.takeSnapshot().newModification();
         treeModification.write(path1, parentContainerNode);
 
-        final var childOrderedListNode = Builders.orderedMapBuilder().withNodeIdentifier(
-                new NodeIdentifier(childOrderedList))
-                .withChild(createChildOrderedListEntry("chkval1", "chlfval1"))
-                .withChild(createChildOrderedListEntry("chkval2", "chlfval2")).build();
+        final var childOrderedListNode = ImmutableNodes.newUserMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(childOrderedList))
+            .withChild(createChildOrderedListEntry("chkval1", "chlfval1"))
+            .withChild(createChildOrderedListEntry("chkval2", "chlfval2"))
+            .build();
 
         final var path2 = YangInstanceIdentifier.of(parentContainer, childContainer, parentOrderedList)
             .node(createParentOrderedListEntryPath("pkval2")).node(childOrderedList);
@@ -142,27 +146,32 @@ class OrderedListTest {
     }
 
     public void modification2() throws DataValidationFailedException {
-        final var parentOrderedListNode = Builders.orderedMapBuilder().withNodeIdentifier(
-                new NodeIdentifier(parentOrderedList))
-                .withChild(createParentOrderedListEntry("pkval3", "plfval3updated"))
-                .withChild(createParentOrderedListEntry("pkval4", "plfval4"))
-                .withChild(createParentOrderedListEntry("pkval5", "plfval5")).build();
-
-        final var parentContainerNode = Builders.containerBuilder().withNodeIdentifier(
-                new NodeIdentifier(parentContainer)).withChild(Builders.containerBuilder()
-                .withNodeIdentifier(new NodeIdentifier(childContainer)).withChild(parentOrderedListNode).build())
-                .build();
+        final var parentOrderedListNode = ImmutableNodes.newUserMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentOrderedList))
+            .withChild(createParentOrderedListEntry("pkval3", "plfval3updated"))
+            .withChild(createParentOrderedListEntry("pkval4", "plfval4"))
+            .withChild(createParentOrderedListEntry("pkval5", "plfval5"))
+            .build();
+
+        final var parentContainerNode = ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentContainer))
+            .withChild(ImmutableNodes.newContainerBuilder()
+                .withNodeIdentifier(new NodeIdentifier(childContainer))
+                .withChild(parentOrderedListNode)
+                .build())
+            .build();
 
         final var treeModification = inMemoryDataTree.takeSnapshot().newModification();
 
         final var path1 = YangInstanceIdentifier.of(parentContainer);
         treeModification.merge(path1, parentContainerNode);
 
-        final var childOrderedListNode = Builders.orderedMapBuilder().withNodeIdentifier(
-                new NodeIdentifier(childOrderedList))
-                .withChild(createChildOrderedListEntry("chkval1", "chlfval1updated"))
-                .withChild(createChildOrderedListEntry("chkval2", "chlfval2updated"))
-                .withChild(createChildOrderedListEntry("chkval3", "chlfval3")).build();
+        final var childOrderedListNode = ImmutableNodes.newUserMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(childOrderedList))
+            .withChild(createChildOrderedListEntry("chkval1", "chlfval1updated"))
+            .withChild(createChildOrderedListEntry("chkval2", "chlfval2updated"))
+            .withChild(createChildOrderedListEntry("chkval3", "chlfval3"))
+            .build();
 
         final var path2 = YangInstanceIdentifier.of(parentContainer).node(childContainer)
                 .node(parentOrderedList).node(createParentOrderedListEntryPath("pkval2")).node(childOrderedList);
@@ -181,23 +190,28 @@ class OrderedListTest {
     }
 
     public void modification3() throws DataValidationFailedException {
-        final var parentOrderedListNode = Builders.orderedMapBuilder().withNodeIdentifier(
-                new NodeIdentifier(parentOrderedList))
-                .withChild(createParentOrderedListEntry("pkval1", "plfval1")).build();
-
-        final var parentContainerNode = Builders.containerBuilder().withNodeIdentifier(
-                new NodeIdentifier(parentContainer)).withChild(Builders.containerBuilder()
-                .withNodeIdentifier(new NodeIdentifier(childContainer)).withChild(parentOrderedListNode).build())
-                .build();
+        final var parentOrderedListNode = ImmutableNodes.newUserMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentOrderedList))
+            .withChild(createParentOrderedListEntry("pkval1", "plfval1"))
+            .build();
+
+        final var parentContainerNode = ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentContainer))
+            .withChild(ImmutableNodes.newContainerBuilder()
+                .withNodeIdentifier(new NodeIdentifier(childContainer))
+                .withChild(parentOrderedListNode)
+                .build())
+            .build();
 
         final var path1 = YangInstanceIdentifier.of(parentContainer);
 
         final var treeModification = inMemoryDataTree.takeSnapshot().newModification();
         treeModification.write(path1, parentContainerNode);
 
-        final var childOrderedListNode = Builders.orderedMapBuilder().withNodeIdentifier(
-                new NodeIdentifier(childOrderedList))
-                .withChild(createChildOrderedListEntry("chkval1", "chlfval1new")).build();
+        final var childOrderedListNode = ImmutableNodes.newUserMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(childOrderedList))
+            .withChild(createChildOrderedListEntry("chkval1", "chlfval1new"))
+            .build();
 
         final var path2 = YangInstanceIdentifier.of(parentContainer).node(childContainer)
                 .node(parentOrderedList)
@@ -205,15 +219,8 @@ class OrderedListTest {
 
         treeModification.merge(path2, childOrderedListNode);
 
-        try {
-            treeModification.ready();
-            fail("Exception should have been thrown.");
-            inMemoryDataTree.validate(treeModification);
-            inMemoryDataTree.commit(inMemoryDataTree.prepare(treeModification));
-        } catch (final IllegalArgumentException ex) {
-            LOG.debug("IllegalArgumentException was thrown as expected", ex);
-            assertTrue(ex.getMessage().contains("Metadata not available for modification ModifiedNode"));
-        }
+        final var ex = assertThrows(IllegalArgumentException.class, treeModification::ready);
+        assertTrue(ex.getMessage().contains("Metadata not available for modification ModifiedNode"));
 
         final var snapshotAfterCommits = inMemoryDataTree.takeSnapshot();
         var readNode = snapshotAfterCommits.readNode(path1);
@@ -227,23 +234,31 @@ class OrderedListTest {
         final var treeModification1 = inMemoryDataTree.takeSnapshot().newModification();
         final var treeModification2 = inMemoryDataTree.takeSnapshot().newModification();
 
-        final var parentOrderedListNode = Builders.orderedMapBuilder().withNodeIdentifier(
-            new NodeIdentifier(parentOrderedList)).withChild(createParentOrderedListEntry("pkval1", "plfval1"))
-                .build();
-
-        final var parentOrderedListNode2 = Builders.orderedMapBuilder().withNodeIdentifier(
-            new NodeIdentifier(parentOrderedList)).withChild(createParentOrderedListEntry("pkval2", "plfval2"))
-                .build();
-
-        final var parentContainerNode = Builders.containerBuilder().withNodeIdentifier(
-                new NodeIdentifier(parentContainer)).withChild(Builders.containerBuilder()
-                .withNodeIdentifier(new NodeIdentifier(childContainer)).withChild(parentOrderedListNode).build())
-                .build();
-
-        final var parentContainerNode2 = Builders.containerBuilder().withNodeIdentifier(
-                new NodeIdentifier(parentContainer)).withChild(Builders.containerBuilder()
-                .withNodeIdentifier(new NodeIdentifier(childContainer)).withChild(parentOrderedListNode2).build())
-                .build();
+        final var parentOrderedListNode = ImmutableNodes.newUserMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentOrderedList))
+            .withChild(createParentOrderedListEntry("pkval1", "plfval1"))
+            .build();
+
+        final var parentOrderedListNode2 = ImmutableNodes.newUserMapBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentOrderedList))
+            .withChild(createParentOrderedListEntry("pkval2", "plfval2"))
+            .build();
+
+        final var parentContainerNode = ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentContainer))
+            .withChild(ImmutableNodes.newContainerBuilder()
+                .withNodeIdentifier(new NodeIdentifier(childContainer))
+                .withChild(parentOrderedListNode)
+                .build())
+            .build();
+
+        final var parentContainerNode2 = ImmutableNodes.newContainerBuilder()
+            .withNodeIdentifier(new NodeIdentifier(parentContainer))
+            .withChild(ImmutableNodes.newContainerBuilder()
+                .withNodeIdentifier(new NodeIdentifier(childContainer))
+                .withChild(parentOrderedListNode2)
+                .build())
+            .build();
 
         final var path = YangInstanceIdentifier.of(parentContainer);
 
@@ -255,14 +270,10 @@ class OrderedListTest {
         inMemoryDataTree.validate(treeModification1);
         inMemoryDataTree.commit(inMemoryDataTree.prepare(treeModification1));
 
-        try {
-            inMemoryDataTree.validate(treeModification2);
-            fail("Exception should have been thrown.");
-            inMemoryDataTree.commit(inMemoryDataTree.prepare(treeModification2));
-        } catch (ConflictingModificationAppliedException ex) {
-            LOG.debug("ConflictingModificationAppliedException was thrown as expected", ex);
-            assertTrue(ex.getMessage().contains("Node was replaced by other transaction"));
-        }
+        final var ex = assertThrows(ConflictingModificationAppliedException.class,
+            () -> inMemoryDataTree.validate(treeModification2));
+        LOG.debug("ConflictingModificationAppliedException was thrown as expected", ex);
+        assertTrue(ex.getMessage().contains("Node was replaced by other transaction"));
 
         final var snapshotAfterCommits = inMemoryDataTree.takeSnapshot();
         final var readNode = snapshotAfterCommits.readNode(path);
@@ -301,28 +312,24 @@ class OrderedListTest {
     }
 
     private MapEntryNode createParentOrderedListEntry(final String keyValue, final String leafValue) {
-        return Builders.mapEntryBuilder().withNodeIdentifier(NodeIdentifierWithPredicates.of(parentOrderedList,
-                parentKeyLeaf, keyValue))
-                .withChild(Builders.leafBuilder().withNodeIdentifier(NodeIdentifier.create(parentOrdinaryLeaf))
-                    .withValue(leafValue).build()).build();
+        return ImmutableNodes.newMapEntryBuilder()
+            .withNodeIdentifier(NodeIdentifierWithPredicates.of(parentOrderedList, parentKeyLeaf, keyValue))
+            .withChild(ImmutableNodes.leafNode(parentOrdinaryLeaf, leafValue))
+            .build();
     }
 
     private MapEntryNode createChildOrderedListEntry(final String keyValue, final String leafValue) {
-        return Builders.mapEntryBuilder().withNodeIdentifier(NodeIdentifierWithPredicates.of(childOrderedList,
-                childKeyLeaf, keyValue))
-                .withChild(Builders.leafBuilder().withNodeIdentifier(NodeIdentifier.create(childOrdinaryLeaf))
-                    .withValue(leafValue).build()).build();
+        return ImmutableNodes.newMapEntryBuilder()
+            .withNodeIdentifier(NodeIdentifierWithPredicates.of(childOrderedList, childKeyLeaf, keyValue))
+            .withChild(ImmutableNodes.leafNode(childOrdinaryLeaf, leafValue))
+            .build();
     }
 
     private NodeIdentifierWithPredicates createParentOrderedListEntryPath(final String keyValue) {
-        ImmutableMap.Builder<QName, Object> builder = ImmutableMap.builder();
-        ImmutableMap<QName, Object> keys = builder.put(parentKeyLeaf, keyValue).build();
-        return NodeIdentifierWithPredicates.of(parentOrderedList, keys);
+        return NodeIdentifierWithPredicates.of(parentOrderedList, parentKeyLeaf, keyValue);
     }
 
     private NodeIdentifierWithPredicates createChildOrderedListEntryPath(final String keyValue) {
-        ImmutableMap.Builder<QName, Object> builder = ImmutableMap.builder();
-        ImmutableMap<QName, Object> keys = builder.put(childKeyLeaf, keyValue).build();
-        return NodeIdentifierWithPredicates.of(childOrderedList, keys);
+        return NodeIdentifierWithPredicates.of(childOrderedList, childKeyLeaf, keyValue);
     }
 }