X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=data%2Fyang-data-util%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Futil%2FNormalizedNodeStreamWriterStack.java;h=686e0d8739bdbdd8c5a769f13d9386d8e6c9fde7;hb=5fdd7a708740b9eea3a888bf86b979a75829c1a7;hp=19b4a5564b25c6600abfc490a779b8d7ccca813b;hpb=9728fe497bcb7349f7e6ef9d3d984202d7ac07e7;p=yangtools.git diff --git a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java index 19b4a5564b..686e0d8739 100644 --- a/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java +++ b/data/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/NormalizedNodeStreamWriterStack.java @@ -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;