Teach ModelGenerator about AnyDataSchemaNodes
[netconf.git] / restconf / sal-rest-docgen / src / main / java / org / opendaylight / netconf / sal / rest / doc / impl / ModelGenerator.java
index b76f75da6a68e0232181506aecd9cd995e97d0e9..b48754136baa95e24a8113569919c802553b6248 100644 (file)
@@ -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();