From: Robert Varga Date: Tue, 28 May 2019 16:29:15 +0000 (+0200) Subject: Teach ModelGenerator about AnyDataSchemaNodes X-Git-Tag: release/neon-sr2~13 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=netconf.git;a=commitdiff_plain;h=d6cc6c95d317f2c678278feb41235de8316f128f Teach ModelGenerator about AnyDataSchemaNodes anydata is a valid construct coming from YANG 1.1, effectively replacing anyxml. This patch adds the support for processing anydata nodes. JIRA: NETCONF-622 Change-Id: I71207f5a053d718daaeaa4f3dcd6aa9ab27e3d57 Signed-off-by: Robert Varga (cherry picked from commit 101d39b9a007c963a8f57ee4e2660abb63e33790) --- diff --git a/restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ModelGenerator.java b/restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ModelGenerator.java index b76f75da6a..b48754136b 100644 --- a/restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ModelGenerator.java +++ b/restconf/sal-rest-docgen/src/main/java/org/opendaylight/netconf/sal/rest/doc/impl/ModelGenerator.java @@ -26,6 +26,7 @@ import javax.annotation.concurrent.NotThreadSafe; import org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder; import org.opendaylight.netconf.sal.rest.doc.model.builder.OperationBuilder.Post; import org.opendaylight.yangtools.yang.common.QName; +import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode; import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode; import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode; @@ -343,6 +344,9 @@ public class ModelGenerator { } else if (node instanceof AnyXmlSchemaNode) { property = processAnyXMLNode((AnyXmlSchemaNode) node); + } else if (node instanceof AnyDataSchemaNode) { + property = processAnydataNode((AnyDataSchemaNode) node); + } else if (node instanceof ContainerSchemaNode) { property = processDataNodeContainer((ContainerSchemaNode) node, parentName, models, isConfig, schemaContext); @@ -412,6 +416,9 @@ public class ModelGenerator { } else if (node instanceof AnyXmlSchemaNode) { property = processAnyXMLNode((AnyXmlSchemaNode) node); + } else if (node instanceof AnyDataSchemaNode) { + property = processAnydataNode((AnyDataSchemaNode) node); + } else if (node instanceof ContainerSchemaNode) { property = processDataNodeContainer((ContainerSchemaNode) node, moduleName, models, isConfig, schemaContext); @@ -452,6 +459,19 @@ public class ModelGenerator { return property; } + private static ObjectNode processAnydataNode(final AnyDataSchemaNode leafNode) { + final ObjectNode property = JsonNodeFactory.instance.objectNode(); + + final String leafDescription = leafNode.getDescription().orElse(null); + putIfNonNull(property, DESCRIPTION_KEY, leafDescription); + + processMandatory(leafNode, property); + final String localName = leafNode.getQName().getLocalName(); + property.put(TYPE_KEY, "example of anydata " + localName); + + return property; + } + private static ObjectNode processAnyXMLNode(final AnyXmlSchemaNode leafNode) { final ObjectNode property = JsonNodeFactory.instance.objectNode();