From 9da96154d91b960ab17ed726a6764ebee260fa02 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Tue, 16 Jul 2019 11:56:50 +0200 Subject: [PATCH] Special-case schema-mount nodes We need to recognize yangmnt:schema-mounts before we start emitting the mount point data, as it may be required for nested mountpoint resolution. JIRA: YANGTOOLS-1007 Change-Id: Iee2b3ab7ddc4f2ae2416d01a8554fc7ec11cc6ce Signed-off-by: Robert Varga --- .../yangtools/yang/data/codec/xml/XmlParserStream.java | 4 ++++ .../yangtools/yang/data/util/MountPointData.java | 8 ++++++++ 2 files changed, 12 insertions(+) diff --git a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java index 0b016cb23a..a4ea945f6a 100644 --- a/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java +++ b/yang/yang-data-codec-xml/src/main/java/org/opendaylight/yangtools/yang/data/codec/xml/XmlParserStream.java @@ -47,6 +47,7 @@ import org.opendaylight.yangtools.rfc7952.model.api.AnnotationSchemaNode; import org.opendaylight.yangtools.rfc8528.data.api.YangLibraryConstants; import org.opendaylight.yangtools.rfc8528.data.api.YangLibraryConstants.ContainerName; import org.opendaylight.yangtools.rfc8528.model.api.MountPointSchemaNode; +import org.opendaylight.yangtools.rfc8528.model.api.SchemaMountConstants; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.data.api.schema.stream.NormalizedNodeStreamWriter; @@ -524,6 +525,9 @@ public final class XmlParserStream implements Closeable, Flushable { } LOG.warn("Encountered unknown element {} from YANG Library namespace", localName); + } else if (SchemaMountConstants.RFC8528_MODULE.getNamespace().equals(namespace)) { + mount.setSchemaMounts(child); + return; } mount.addChild(child); diff --git a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/MountPointData.java b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/MountPointData.java index 393da67922..f60a23ba46 100644 --- a/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/MountPointData.java +++ b/yang/yang-data-util/src/main/java/org/opendaylight/yangtools/yang/data/util/MountPointData.java @@ -46,6 +46,8 @@ public final class MountPointData extends AbstractIdentifiable yangLib = new EnumMap<>(ContainerName.class); private final List children = new ArrayList<>(); + private MountPointChild schemaMounts; + MountPointData(final QName label) { super(MountPointIdentifier.of(label)); } @@ -56,6 +58,12 @@ public final class MountPointData extends AbstractIdentifiable