package org.opendaylight.yangtools.yang.data.impl.schema.tree;
import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.fail;
import com.google.common.collect.ImmutableMap;
-import org.junit.Before;
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier;
import org.opendaylight.yangtools.yang.data.impl.schema.Builders;
import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.CollectionNodeBuilder;
-import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeAttrBuilder;
+import org.opendaylight.yangtools.yang.data.impl.schema.builder.api.DataContainerNodeBuilder;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
public class Bug5968MergeTest {
private static final QName LIST_ID = QName.create(NS, REV, "list-id");
private static final QName MANDATORY_LEAF = QName.create(NS, REV, "mandatory-leaf");
private static final QName COMMON_LEAF = QName.create(NS, REV, "common-leaf");
- private SchemaContext schemaContext;
+ private static SchemaContext SCHEMA_CONTEXT;
- @Before
- public void init() {
- this.schemaContext = TestModel.createTestContext("/bug5968/foo.yang");
- assertNotNull("Schema context must not be null.", this.schemaContext);
+ @BeforeClass
+ public static void beforeClass() {
+ SCHEMA_CONTEXT = TestModel.createTestContext("/bug5968/foo.yang");
+ }
+
+ @AfterClass
+ public static void afterClass() {
+ SCHEMA_CONTEXT = null;
}
private static DataTree initDataTree(final SchemaContext schemaContext, final boolean withMapNode)
final DataTree inMemoryDataTree = new InMemoryDataTreeFactory().create(
DataTreeConfiguration.DEFAULT_CONFIGURATION, schemaContext);
- final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> root = Builders.containerBuilder()
+ final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> root = Builders.containerBuilder()
.withNodeIdentifier(new NodeIdentifier(ROOT));
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
modificationTree.merge(
@Test
public void mergeInvalidContainerTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final MapNode myList = createMap(true);
- final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> root = Builders.containerBuilder()
+ final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> root = Builders.containerBuilder()
.withNodeIdentifier(new NodeIdentifier(ROOT)).withChild(myList);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
@Test
public void mergeInvalidMapTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
mergeMap(modificationTree, true);
@Test
public void mergeInvalidMapEntryTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = initDataTree(schemaContext, true);
+ final DataTree inMemoryDataTree = initDataTree(SCHEMA_CONTEXT, true);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
mergeMapEntry(modificationTree, "1", null, "common-value");
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue))),
taskEntryNode);
}
private static MapEntryNode createMapEntry(final Object listIdValue, final Object mandatoryLeafValue,
final Object commonLeafValue) throws DataValidationFailedException {
return Builders.mapEntryBuilder()
- .withNodeIdentifier(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue)))
+ .withNodeIdentifier(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue)))
.withChild(ImmutableNodes.leafNode(LIST_ID, listIdValue))
.withChild(ImmutableNodes.leafNode(MANDATORY_LEAF, mandatoryLeafValue))
.withChild(ImmutableNodes.leafNode(COMMON_LEAF, commonLeafValue)).build();
private static MapEntryNode createMapEntry(final Object listIdValue, final Object commonLeafValue)
throws DataValidationFailedException {
return Builders.mapEntryBuilder()
- .withNodeIdentifier(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue)))
+ .withNodeIdentifier(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue)))
.withChild(ImmutableNodes.leafNode(LIST_ID, listIdValue))
.withChild(ImmutableNodes.leafNode(COMMON_LEAF, commonLeafValue)).build();
}
private static MapEntryNode createMapEntryM(final Object listIdValue, final Object mandatoryLeafValue)
throws DataValidationFailedException {
return Builders.mapEntryBuilder()
- .withNodeIdentifier(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue)))
+ .withNodeIdentifier(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue)))
.withChild(ImmutableNodes.leafNode(LIST_ID, listIdValue))
.withChild(ImmutableNodes.leafNode(MANDATORY_LEAF, mandatoryLeafValue)).build();
}
@Test
public void mergeValidContainerTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final MapNode myList = createMap(false);
- final DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> root = Builders.containerBuilder()
+ final DataContainerNodeBuilder<NodeIdentifier, ContainerNode> root = Builders.containerBuilder()
.withNodeIdentifier(new NodeIdentifier(ROOT)).withChild(myList);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
@Test
public void mergeValidMapTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
mergeMap(modificationTree, false);
@Test
public void mergeValidMapEntryTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = initDataTree(schemaContext, true);
+ final DataTree inMemoryDataTree = initDataTree(SCHEMA_CONTEXT, true);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
mergeMapEntry(modificationTree, "1", "mandatory-value", "common-value");
@Test
public void validMultiStepsMergeTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
modificationTree.merge(YangInstanceIdentifier.of(ROOT), createContainerBuilder().build());
modificationTree.merge(YangInstanceIdentifier.of(ROOT).node(MY_LIST), createMapBuilder().build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createEmptyMapEntryBuilder("1").build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntry("1", "mandatory-value", "common-value"));
modificationTree.ready();
@Test
public void invalidMultiStepsMergeTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
modificationTree.merge(YangInstanceIdentifier.of(ROOT), createContainerBuilder().build());
modificationTree.merge(YangInstanceIdentifier.of(ROOT).node(MY_LIST), createMapBuilder().build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createEmptyMapEntryBuilder("1").build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntry("1", "common-value"));
try {
}
}
- private static DataContainerNodeAttrBuilder<NodeIdentifierWithPredicates, MapEntryNode> createEmptyMapEntryBuilder(
+ private static DataContainerNodeBuilder<NodeIdentifierWithPredicates, MapEntryNode> createEmptyMapEntryBuilder(
final Object listIdValue) throws DataValidationFailedException {
return Builders.mapEntryBuilder()
- .withNodeIdentifier(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue)))
+ .withNodeIdentifier(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, listIdValue)))
.withChild(ImmutableNodes.leafNode(LIST_ID, listIdValue));
}
return Builders.mapBuilder().withNodeIdentifier(new NodeIdentifier(MY_LIST));
}
- private static DataContainerNodeAttrBuilder<NodeIdentifier, ContainerNode> createContainerBuilder() {
+ private static DataContainerNodeBuilder<NodeIdentifier, ContainerNode> createContainerBuilder() {
return Builders.containerBuilder().withNodeIdentifier(new NodeIdentifier(ROOT));
}
@Test
public void validMultiStepsWriteAndMergeTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
modificationTree.write(YangInstanceIdentifier.of(ROOT), createContainerBuilder().build());
modificationTree.merge(YangInstanceIdentifier.of(ROOT).node(MY_LIST), createMapBuilder().build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createEmptyMapEntryBuilder("1").build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntry("1", "mandatory-value", "common-value"));
modificationTree.ready();
@Test
public void invalidMultiStepsWriteAndMergeTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
modificationTree.write(YangInstanceIdentifier.of(ROOT), createContainerBuilder().build());
modificationTree.merge(YangInstanceIdentifier.of(ROOT).node(MY_LIST), createMapBuilder().build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createEmptyMapEntryBuilder("1").build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntry("1", "common-value"));
try {
@Test
public void validMapEntryMultiCommitMergeTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
modificationTree.write(YangInstanceIdentifier.of(ROOT), createContainerBuilder().build());
modificationTree.merge(YangInstanceIdentifier.of(ROOT).node(MY_LIST), createMapBuilder().build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createEmptyMapEntryBuilder("1").build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntryM("1", "mandatory-value"));
modificationTree.ready();
final DataTreeModification modificationTree2 = inMemoryDataTree.takeSnapshot().newModification();
modificationTree2.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntry("1", "common-value"));
modificationTree2.ready();
inMemoryDataTree.validate(modificationTree2);
@Test
public void invalidMapEntryMultiCommitMergeTest() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
modificationTree.write(YangInstanceIdentifier.of(ROOT), createContainerBuilder().build());
modificationTree.merge(YangInstanceIdentifier.of(ROOT).node(MY_LIST), createMapBuilder().build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createEmptyMapEntryBuilder("1").build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntryM("1", "mandatory-value"));
modificationTree.ready();
final DataTreeModification modificationTree2 = inMemoryDataTree.takeSnapshot().newModification();
modificationTree2.write(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntry("1", "common-value"));
modificationTree2.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntryM("1", "mandatory-value"));
modificationTree2.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "2"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "2"))),
createMapEntry("2", "common-value"));
try {
modificationTree2.ready();
*/
@Test
public void validMapEntryMultiCommitMergeTest2() throws DataValidationFailedException {
- final DataTree inMemoryDataTree = emptyDataTree(schemaContext);
+ final DataTree inMemoryDataTree = emptyDataTree(SCHEMA_CONTEXT);
final DataTreeModification modificationTree = inMemoryDataTree.takeSnapshot().newModification();
final DataTreeModification modificationTree2 = inMemoryDataTree.takeSnapshot().newModification();
modificationTree.merge(YangInstanceIdentifier.of(ROOT).node(MY_LIST), createMapBuilder().build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createEmptyMapEntryBuilder("1").build());
modificationTree.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntryM("1", "mandatory-value"));
modificationTree.ready();
modificationTree2.merge(
YangInstanceIdentifier.of(ROOT).node(MY_LIST)
- .node(new NodeIdentifierWithPredicates(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
+ .node(NodeIdentifierWithPredicates.of(MY_LIST, ImmutableMap.of(LIST_ID, "1"))),
createMapEntry("1", "common-value"));
modificationTree2.ready();
inMemoryDataTree.validate(modificationTree2);