Remove EffectiveAugmentationSchema.create()
[yangtools.git] / data / yang-data-util / src / main / java / org / opendaylight / yangtools / yang / data / util / NormalizedNodeStreamWriterStack.java
index 19b4a5564b25c6600abfc490a779b8d7ccca813b..686e0d8739bdbdd8c5a769f13d9386d8e6c9fde7 100644 (file)
@@ -148,7 +148,7 @@ public final class NormalizedNodeStreamWriterStack implements LeafrefResolver {
     @Deprecated
     public static @NonNull NormalizedNodeStreamWriterStack of(final EffectiveModelContext context,
             final SchemaPath path) {
-        return new NormalizedNodeStreamWriterStack(SchemaInferenceStack.ofInstantiatedPath(context, path));
+        return new NormalizedNodeStreamWriterStack(SchemaInferenceStack.ofSchemaPath(context, path));
     }
 
     /**
@@ -247,9 +247,19 @@ public final class NormalizedNodeStreamWriterStack implements LeafrefResolver {
 
     public SchemaNode startContainerNode(final NodeIdentifier name) {
         LOG.debug("Enter container {}", name);
-        final SchemaNode schema = enterDataTree(name);
-        checkArgument(schema instanceof ContainerLike || schema instanceof NotificationDefinition,
-            "Node %s is not a container nor a notification", schema);
+
+        final SchemaNode schema;
+        if (schemaStack.isEmpty() && root instanceof NotificationDefinition) {
+            // Special case for stacks initialized at notification. We pretend the first container is contained within
+            // itself.
+            // FIXME: 8.0.0: factor this special case out to something more reasonable, like being initialized at the
+            //               Notification's parent and knowing to enterSchemaTree() instead of enterDataTree().
+            schema = (NotificationDefinition) root;
+        } else {
+            schema = enterDataTree(name);
+            checkArgument(schema instanceof ContainerLike, "Node %s is not a container", schema);
+        }
+
         schemaStack.push(schema);
         return schema;
     }
@@ -288,7 +298,7 @@ public final class NormalizedNodeStreamWriterStack implements LeafrefResolver {
         checkArgument(parent instanceof DataNodeContainer, "Augmentation allowed only in DataNodeContainer", parent);
         final AugmentationSchemaNode schema = findSchemaForAugment((AugmentationTarget) parent,
             identifier.getPossibleChildNames());
-        final AugmentationSchemaNode resolvedSchema = EffectiveAugmentationSchema.create(schema,
+        final AugmentationSchemaNode resolvedSchema = new EffectiveAugmentationSchema(schema,
             (DataNodeContainer) parent);
         schemaStack.push(resolvedSchema);
         return resolvedSchema;