Remove TreeNodeFactory 43/98943/4
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 12 Dec 2021 01:19:39 +0000 (02:19 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Sun, 12 Dec 2021 07:37:24 +0000 (08:37 +0100)
There is no point in having a single-method utility class, just move
the method to TreeNode instead.

Change-Id: I0a97e9ac8d6e8a938567f581a872ea9653ad57b2
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
12 files changed:
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/AutomaticLifecycleMixin.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ListModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ModifiedNode.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/ValueNodeModificationStrategy.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/di/InMemoryDataTreeFactory.java
data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/node/AbstractContainerNode.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/impl/node/TreeNodeFactory.java [deleted file]
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/ModificationMetadataTreeTest.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/StoreTreeNodesTest.java
data/yang-data-tree-ri/src/test/java/org/opendaylight/yangtools/yang/data/tree/impl/node/TreeNodeFactoryTest.java

index 3bd41dab95576ff7e13979dab5883c2e5f8ac706..caa765f961f72244a5ecd5d2a5a2da57ae482b81 100644 (file)
@@ -30,7 +30,6 @@ import org.opendaylight.yangtools.yang.data.tree.api.ModifiedNodeDoesNotExistExc
 import org.opendaylight.yangtools.yang.data.tree.api.TreeType;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.MutableTreeNode;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode;
-import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNodeFactory;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.Version;
 import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus;
 
@@ -165,7 +164,7 @@ abstract class AbstractNodeContainerModificationStrategy<T extends WithStatus>
     @Override
     protected TreeNode applyWrite(final ModifiedNode modification, final NormalizedNode newValue,
             final Optional<? extends TreeNode> currentMeta, final Version version) {
-        final TreeNode newValueMeta = TreeNodeFactory.createTreeNode(newValue, version);
+        final TreeNode newValueMeta = TreeNode.of(newValue, version);
 
         if (modification.getChildren().isEmpty()) {
             return newValueMeta;
@@ -195,7 +194,7 @@ abstract class AbstractNodeContainerModificationStrategy<T extends WithStatus>
         // We are good to go except one detail: this is a single logical write, but
         // we have a result TreeNode which has been forced to materialized, e.g. it
         // is larger than it needs to be. Create a new TreeNode to host the data.
-        return TreeNodeFactory.createTreeNode(result.getData(), version);
+        return TreeNode.of(result.getData(), version);
     }
 
     /**
@@ -386,7 +385,7 @@ abstract class AbstractNodeContainerModificationStrategy<T extends WithStatus>
     }
 
     static final TreeNode defaultTreeNode(final NormalizedNode emptyNode) {
-        return TreeNodeFactory.createTreeNode(emptyNode, FAKE_VERSION);
+        return TreeNode.of(emptyNode, FAKE_VERSION);
     }
 
     @Override
index 7a9f30e24ff1d440095e223c1d4748ae02d22eb2..c57b01aaaec0377fd86d1cc43b33c1387b041a0f 100644 (file)
@@ -14,7 +14,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer;
 import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode;
-import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNodeFactory;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.Version;
 
 /**
@@ -101,7 +100,7 @@ final class AutomaticLifecycleMixin {
     }
 
     private static Optional<TreeNode> fakeMeta(final NormalizedNode emptyNode, final Version version) {
-        return Optional.of(TreeNodeFactory.createTreeNode(emptyNode, version));
+        return Optional.of(TreeNode.of(emptyNode, version));
     }
 
     private static boolean isEmpty(final TreeNode treeNode) {
index e825c7eb47577e993de5b4923342a11b8a39bbe1..60c77f9d07f0c936875a80d769e81611237b4deb 100644 (file)
@@ -22,7 +22,6 @@ import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.tree.api.IncorrectDataStructureException;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.MutableTreeNode;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode;
-import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNodeFactory;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.Version;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 
@@ -70,7 +69,7 @@ final class ListModificationStrategy extends SchemaAwareApplyOperation<ListSchem
     @Override
     protected TreeNode applyWrite(final ModifiedNode modification, final NormalizedNode newValue,
             final Optional<? extends TreeNode> currentMeta, final Version version) {
-        final TreeNode newValueMeta = TreeNodeFactory.createTreeNode(newValue, version);
+        final TreeNode newValueMeta = TreeNode.of(newValue, version);
         if (modification.getChildren().isEmpty()) {
             return newValueMeta;
         }
index 2cddfe9f916c3459024cf43a1988a80d569bfe69..20b13d43e409a7e5b0831641e47de015ecbd31df 100644 (file)
@@ -25,7 +25,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNode;
 import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode;
-import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNodeFactory;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.Version;
 
 /**
@@ -127,7 +126,7 @@ final class ModifiedNode extends NodeModification implements StoreTreeNode<Modif
             // Lazy instantiation, as we do not want do this for all writes. We are using the modification's version
             // here, as that version is what the SchemaAwareApplyOperation will see when dealing with the resulting
             // modifications.
-            writtenOriginal = TreeNodeFactory.createTreeNode(value, modVersion);
+            writtenOriginal = TreeNode.of(value, modVersion);
         }
 
         return writtenOriginal.findChildByArg(child);
index 23de0fca3c9a10953cde8e456680b01771ee0f8c..41a1b65ea3a7f9e6113740dee40d20b7d50d990d 100644 (file)
@@ -18,7 +18,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
 import org.opendaylight.yangtools.yang.data.tree.api.IncorrectDataStructureException;
 import org.opendaylight.yangtools.yang.data.tree.api.ModificationType;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode;
-import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNodeFactory;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.Version;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
 
@@ -67,7 +66,7 @@ final class ValueNodeModificationStrategy<T extends DataSchemaNode, V extends No
     @Override
     protected TreeNode applyWrite(final ModifiedNode modification, final NormalizedNode newValue,
             final Optional<? extends TreeNode> currentMeta, final Version version) {
-        return TreeNodeFactory.createTreeNode(newValue, version);
+        return TreeNode.of(newValue, version);
     }
 
     @Override
index 5bc2ffdc00ad834f8a4f3673f31b9905978f00c7..f7294d70ab89e54c86955779c75ecc6bc0c1072b 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.data.tree.api.DataTreeFactory;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.tree.api.DataValidationFailedException;
 import org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree;
-import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNodeFactory;
+import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.Version;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
@@ -67,7 +67,7 @@ public final class InMemoryDataTreeFactory implements DataTreeFactory {
 
     @Override
     public DataTree create(final DataTreeConfiguration treeConfig) {
-        return new InMemoryDataTree(TreeNodeFactory.createTreeNode(createRoot(treeConfig.getRootPath()),
+        return new InMemoryDataTree(TreeNode.of(createRoot(treeConfig.getRootPath()),
             Version.initial()), treeConfig, null);
     }
 
@@ -108,7 +108,7 @@ public final class InMemoryDataTreeFactory implements DataTreeFactory {
         final DataSchemaNode rootSchemaNode = getRootSchemaNode(initialSchemaContext, treeConfig.getRootPath());
         final NormalizedNode rootDataNode = createRoot((DataNodeContainer)rootSchemaNode,
             treeConfig.getRootPath());
-        return new InMemoryDataTree(TreeNodeFactory.createTreeNode(rootDataNode, Version.initial()), treeConfig,
+        return new InMemoryDataTree(TreeNode.of(rootDataNode, Version.initial()), treeConfig,
             initialSchemaContext, rootSchemaNode, maskMandatory);
     }
 
index 873309d491a5fc3146c9fc1aaa3f1ab5c351f5f1..369f70aeecfa2d16ddeb29403a0aea8359cd0b34 100644 (file)
@@ -34,6 +34,6 @@ abstract class AbstractContainerNode extends TreeNode {
     static TreeNode getChildFromData(final DistinctNodeContainer<PathArgument, NormalizedNode> data,
             final PathArgument childId, final Version version) {
         final NormalizedNode child = data.childByArg(childId);
-        return child != null ? TreeNodeFactory.createTreeNode(child, version) : null;
+        return child != null ? TreeNode.of(child, version) : null;
     }
 }
index ccffdbb359e7d5c7531adadf010c3c4158bceb20..21e122f0c3d553e61e3b33f6b096554092b63ac3 100644 (file)
@@ -14,7 +14,9 @@ import com.google.common.base.MoreObjects.ToStringHelper;
 import org.eclipse.jdt.annotation.NonNullByDefault;
 import org.opendaylight.yangtools.concepts.Identifiable;
 import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument;
+import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer;
 import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
+import org.opendaylight.yangtools.yang.data.api.schema.OrderedNodeContainer;
 import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNode;
 
 /**
@@ -44,6 +46,25 @@ public abstract class TreeNode implements Identifiable<PathArgument>, StoreTreeN
         this.version = requireNonNull(version);
     }
 
+    /**
+     * Create a new AbstractTreeNode from a data node.
+     *
+     * @param data data node
+     * @param version data node version
+     * @return new AbstractTreeNode instance, covering the data tree provided
+     */
+    public static final TreeNode of(final NormalizedNode data, final Version version) {
+        if (data instanceof DistinctNodeContainer) {
+            @SuppressWarnings("unchecked")
+            final DistinctNodeContainer<?, NormalizedNode> container = (DistinctNodeContainer<?, NormalizedNode>) data;
+            return new SimpleContainerNode(container, version);
+        } else if (data instanceof OrderedNodeContainer) {
+            return new SimpleContainerNode(data, version);
+        } else {
+            return new ValueNode(data, version);
+        }
+    }
+
     @Override
     public final PathArgument getIdentifier() {
         return data.getIdentifier();
diff --git a/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/node/TreeNodeFactory.java b/data/yang-data-tree-ri/src/main/java/org/opendaylight/yangtools/yang/data/tree/impl/node/TreeNodeFactory.java
deleted file mode 100644 (file)
index d6ad995..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-package org.opendaylight.yangtools.yang.data.tree.impl.node;
-
-import org.opendaylight.yangtools.yang.data.api.schema.DistinctNodeContainer;
-import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode;
-import org.opendaylight.yangtools.yang.data.api.schema.OrderedNodeContainer;
-
-/**
- * Public entrypoint for other packages. Allows instantiating a tree node
- * with specified version.
- */
-public final class TreeNodeFactory {
-    private TreeNodeFactory() {
-        // Hidden on purpose
-    }
-
-    /**
-     * Create a new AbstractTreeNode from a data node.
-     *
-     * @param data data node
-     * @param version data node version
-     * @return new AbstractTreeNode instance, covering the data tree provided
-     */
-    public static TreeNode createTreeNode(final NormalizedNode data, final Version version) {
-        if (data instanceof DistinctNodeContainer) {
-            @SuppressWarnings("unchecked")
-            final DistinctNodeContainer<?, NormalizedNode> container = (DistinctNodeContainer<?, NormalizedNode>) data;
-            return new SimpleContainerNode(container, version);
-        } else if (data instanceof OrderedNodeContainer) {
-            return new SimpleContainerNode(data, version);
-        } else {
-            return new ValueNode(data, version);
-        }
-    }
-}
index 883ed1a481bf18b6bf098b7601005299b3162fd4..0aeaca15933f607269062eddde51fcd8346241d9 100644 (file)
@@ -30,7 +30,7 @@ import org.opendaylight.yangtools.yang.data.tree.api.DataTree;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeModification;
 import org.opendaylight.yangtools.yang.data.tree.impl.di.InMemoryDataTreeFactory;
-import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNodeFactory;
+import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.Version;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 
@@ -137,7 +137,7 @@ public class ModificationMetadataTreeTest extends AbstractTestModelTest {
     public void basicReadWrites() {
         final DataTreeModification modificationTree = new InMemoryDataTreeModification(
             new InMemoryDataTreeSnapshot(SCHEMA_CONTEXT,
-                TreeNodeFactory.createTreeNode(createDocumentOne(), Version.initial()), rootOper), rootOper);
+                TreeNode.of(createDocumentOne(), Version.initial()), rootOper), rootOper);
         final Optional<NormalizedNode> originalBarNode = modificationTree.readNode(OUTER_LIST_2_PATH);
         assertTrue(originalBarNode.isPresent());
         assertSame(BAR_NODE, originalBarNode.get());
index 6371675c163981fecff1fee5cbd5c001131c6157..6dffa38a9bb081a51725d5f459221a37f69cebc9 100644 (file)
@@ -29,7 +29,6 @@ import org.opendaylight.yangtools.yang.data.api.schema.tree.StoreTreeNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.tree.api.DataTreeConfiguration;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNode;
-import org.opendaylight.yangtools.yang.data.tree.impl.node.TreeNodeFactory;
 import org.opendaylight.yangtools.yang.data.tree.impl.node.Version;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.slf4j.Logger;
@@ -84,7 +83,7 @@ public class StoreTreeNodesTest extends AbstractTestModelTest {
     @Test
     public void findNodeTestNodeFound() {
         final InMemoryDataTreeSnapshot inMemoryDataTreeSnapshot = new InMemoryDataTreeSnapshot(SCHEMA_CONTEXT,
-                TreeNodeFactory.createTreeNode(createDocumentOne(), Version.initial()), rootOper);
+                TreeNode.of(createDocumentOne(), Version.initial()), rootOper);
         final TreeNode rootNode = inMemoryDataTreeSnapshot.getRootNode();
         final Optional<? extends TreeNode> node = StoreTreeNodes.findNode(rootNode, OUTER_LIST_1_PATH);
         assertPresentAndType(node, TreeNode.class);
@@ -93,7 +92,7 @@ public class StoreTreeNodesTest extends AbstractTestModelTest {
     @Test
     public void findNodeTestNodeNotFound() {
         final InMemoryDataTreeSnapshot inMemoryDataTreeSnapshot = new InMemoryDataTreeSnapshot(SCHEMA_CONTEXT,
-                TreeNodeFactory.createTreeNode(createDocumentOne(), Version.initial()), rootOper);
+                TreeNode.of(createDocumentOne(), Version.initial()), rootOper);
         final TreeNode rootNode = inMemoryDataTreeSnapshot.getRootNode();
         final YangInstanceIdentifier outerList1InvalidPath = YangInstanceIdentifier.builder(TestModel.OUTER_LIST_PATH)
                 .nodeWithKey(TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 3) //
@@ -105,7 +104,7 @@ public class StoreTreeNodesTest extends AbstractTestModelTest {
     @Test
     public void findNodeCheckedTestNodeFound() {
         final InMemoryDataTreeSnapshot inMemoryDataTreeSnapshot = new InMemoryDataTreeSnapshot(SCHEMA_CONTEXT,
-                TreeNodeFactory.createTreeNode(createDocumentOne(), Version.initial()), rootOper);
+                TreeNode.of(createDocumentOne(), Version.initial()), rootOper);
         final TreeNode rootNode = inMemoryDataTreeSnapshot.getRootNode();
         TreeNode foundNode = null;
         try {
@@ -119,7 +118,7 @@ public class StoreTreeNodesTest extends AbstractTestModelTest {
     @Test
     public void findNodeCheckedTestNodeNotFound() {
         final InMemoryDataTreeSnapshot inMemoryDataTreeSnapshot = new InMemoryDataTreeSnapshot(SCHEMA_CONTEXT,
-                TreeNodeFactory.createTreeNode(createDocumentOne(), Version.initial()), rootOper);
+                TreeNode.of(createDocumentOne(), Version.initial()), rootOper);
         final TreeNode rootNode = inMemoryDataTreeSnapshot.getRootNode();
         final YangInstanceIdentifier outerList1InvalidPath = YangInstanceIdentifier.builder(TestModel.OUTER_LIST_PATH)
                 .nodeWithKey(TestModel.OUTER_LIST_QNAME, TestModel.ID_QNAME, 3) //
@@ -135,7 +134,7 @@ public class StoreTreeNodesTest extends AbstractTestModelTest {
     @Test
     public void findClosestOrFirstMatchTestNodeExists() {
         final InMemoryDataTreeSnapshot inMemoryDataTreeSnapshot = new InMemoryDataTreeSnapshot(SCHEMA_CONTEXT,
-                TreeNodeFactory.createTreeNode(createDocumentOne(), Version.initial()), rootOper);
+                TreeNode.of(createDocumentOne(), Version.initial()), rootOper);
         final TreeNode rootNode = inMemoryDataTreeSnapshot.getRootNode();
         final Optional<? extends TreeNode> expectedNode = StoreTreeNodes.findNode(rootNode, TWO_TWO_PATH);
         assertPresentAndType(expectedNode, TreeNode.class);
@@ -147,7 +146,7 @@ public class StoreTreeNodesTest extends AbstractTestModelTest {
     @Test
     public void findClosestOrFirstMatchTestNodeDoesNotExist() {
         final InMemoryDataTreeSnapshot inMemoryDataTreeSnapshot = new InMemoryDataTreeSnapshot(SCHEMA_CONTEXT,
-                TreeNodeFactory.createTreeNode(createDocumentOne(), Version.initial()), rootOper);
+                TreeNode.of(createDocumentOne(), Version.initial()), rootOper);
         final TreeNode rootNode = inMemoryDataTreeSnapshot.getRootNode();
         final YangInstanceIdentifier outerListInnerListPath = YangInstanceIdentifier.builder(OUTER_LIST_2_PATH)
                 .node(TestModel.INNER_LIST_QNAME)
index d00355f93e339de073fa598e7a38c6a41cc609a4..e7c75c364a1f20d6fb16ff17d85a135602e86c85 100644 (file)
@@ -29,7 +29,7 @@ public class TreeNodeFactoryTest {
     public void testNormalizedNodeContainer() {
         final ContainerNode data = Mockito.mock(ContainerNode.class);
         final Version version = Version.initial();
-        final TreeNode node = TreeNodeFactory.createTreeNode(data, version);
+        final TreeNode node = TreeNode.of(data, version);
 
         assertTrue(node instanceof SimpleContainerNode);
         checkTreeNode(node, data, version);
@@ -39,7 +39,7 @@ public class TreeNodeFactoryTest {
     public void testOrderedNodeContainer() {
         final UserMapNode data = Mockito.mock(UserMapNode.class);
         final Version version = Version.initial();
-        final TreeNode node = TreeNodeFactory.createTreeNode(data, version);
+        final TreeNode node = TreeNode.of(data, version);
 
         assertTrue(node instanceof SimpleContainerNode);
         checkTreeNode(node, data, version);
@@ -49,7 +49,7 @@ public class TreeNodeFactoryTest {
     public void testLeaf() {
         final LeafNode<?> data = Mockito.mock(LeafNode.class);
         final Version version = Version.initial();
-        final TreeNode node = TreeNodeFactory.createTreeNode(data, version);
+        final TreeNode node = TreeNode.of(data, version);
 
         assertTrue(node instanceof ValueNode);
         checkTreeNode(node, data, version);