Revert "Fix mandatory enforcer failure on augmented nodes"
[yangtools.git] / yang / yang-data-impl / src / main / java / org / opendaylight / yangtools / yang / data / impl / schema / tree / InMemoryDataTreeFactory.java
index d997c5ffa52b12c516b21a7ba517ed80c1b7da36..17e330eb09e544c6c5ea11f4ca1ebc66140cb35b 100644 (file)
@@ -10,6 +10,7 @@ package org.opendaylight.yangtools.yang.data.impl.schema.tree;
 import static com.google.common.base.Preconditions.checkArgument;
 
 import java.util.Optional;
+import javax.inject.Inject;
 import javax.inject.Singleton;
 import org.eclipse.jdt.annotation.NonNull;
 import org.kohsuke.MetaInfServices;
@@ -31,9 +32,11 @@ import org.opendaylight.yangtools.yang.data.impl.schema.ImmutableNodes;
 import org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.ImmutableContainerNodeBuilder;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode;
 import org.opendaylight.yangtools.yang.data.util.DataSchemaContextTree;
+import org.opendaylight.yangtools.yang.model.api.ContainerLike;
 import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
 import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.EffectiveModelContext;
 import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
 import org.opendaylight.yangtools.yang.model.api.SchemaContext;
 import org.osgi.service.component.annotations.Activate;
@@ -54,6 +57,11 @@ public final class InMemoryDataTreeFactory implements DataTreeFactory {
     private static final @NonNull NormalizedNode<?, ?> ROOT_CONTAINER =
             ImmutableNodes.containerNode(SchemaContext.NAME);
 
+    @Inject
+    public InMemoryDataTreeFactory() {
+        // Exposed for DI
+    }
+
     @Override
     public DataTree create(final DataTreeConfiguration treeConfig) {
         return new InMemoryDataTree(TreeNodeFactory.createTreeNode(createRoot(treeConfig.getRootPath()),
@@ -61,12 +69,12 @@ public final class InMemoryDataTreeFactory implements DataTreeFactory {
     }
 
     @Override
-    public DataTree create(final DataTreeConfiguration treeConfig, final SchemaContext initialSchemaContext) {
+    public DataTree create(final DataTreeConfiguration treeConfig, final EffectiveModelContext initialSchemaContext) {
         return createDataTree(treeConfig, initialSchemaContext, true);
     }
 
     @Override
-    public DataTree create(final DataTreeConfiguration treeConfig, final SchemaContext initialSchemaContext,
+    public DataTree create(final DataTreeConfiguration treeConfig, final EffectiveModelContext initialSchemaContext,
             final NormalizedNodeContainer<?, ?, ?> initialRoot) throws DataValidationFailedException {
         final DataTree ret = createDataTree(treeConfig, initialSchemaContext, false);
 
@@ -93,7 +101,7 @@ public final class InMemoryDataTreeFactory implements DataTreeFactory {
     }
 
     private static @NonNull DataTree createDataTree(final DataTreeConfiguration treeConfig,
-            final SchemaContext initialSchemaContext, final boolean maskMandatory) {
+            final EffectiveModelContext initialSchemaContext, final boolean maskMandatory) {
         final DataSchemaNode rootSchemaNode = getRootSchemaNode(initialSchemaContext, treeConfig.getRootPath());
         final NormalizedNode<?, ?> rootDataNode = createRoot((DataNodeContainer)rootSchemaNode,
             treeConfig.getRootPath());
@@ -104,7 +112,7 @@ public final class InMemoryDataTreeFactory implements DataTreeFactory {
     private static @NonNull NormalizedNode<?, ?> createRoot(final DataNodeContainer schemaNode,
             final YangInstanceIdentifier path) {
         if (path.isEmpty()) {
-            checkArgument(schemaNode instanceof ContainerSchemaNode,
+            checkArgument(schemaNode instanceof ContainerLike,
                 "Conceptual tree root has to be a container, not %s", schemaNode);
             return ROOT_CONTAINER;
         }
@@ -142,7 +150,7 @@ public final class InMemoryDataTreeFactory implements DataTreeFactory {
         throw new IllegalArgumentException("Unsupported root node " + arg);
     }
 
-    private static DataSchemaNode getRootSchemaNode(final SchemaContext schemaContext,
+    private static DataSchemaNode getRootSchemaNode(final EffectiveModelContext schemaContext,
             final YangInstanceIdentifier rootPath) {
         final DataSchemaContextTree contextTree = DataSchemaContextTree.from(schemaContext);
         final Optional<DataSchemaContextNode<?>> rootContextNode = contextTree.findChild(rootPath);