Bug 1411-4: MDSAL Binding2 Generator Impl
[mdsal.git] / binding2 / mdsal-binding2-generator-impl / src / main / twirl / org / opendaylight / mdsal / binding2 / yangTemplateForNode.scala.txt
diff --git a/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding2/yangTemplateForNode.scala.txt b/binding2/mdsal-binding2-generator-impl/src/main/twirl/org/opendaylight/mdsal/binding2/yangTemplateForNode.scala.txt
new file mode 100644 (file)
index 0000000..805f223
--- /dev/null
@@ -0,0 +1,79 @@
+@*
+ * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *@
+
+@**********************************************************
+* Twirl YangTemplate for generating yang snippets.        *
+* Twirl is transformed to Scala and compiled. Then,       *
+* it can be called from Java with particular input        *
+* parameters to render desired output code.               *
+*                                                         *
+* Note: we should introduce our own format instead of txt *
+***********************************************************@
+
+@import org.opendaylight.yangtools.yang.model.api.DataSchemaNode
+@import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition
+@import org.opendaylight.yangtools.yang.model.api.FeatureDefinition
+@import org.opendaylight.yangtools.yang.model.api.GroupingDefinition
+@import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode
+@import org.opendaylight.yangtools.yang.model.api.NotificationDefinition
+@import org.opendaylight.yangtools.yang.model.api.RpcDefinition
+@import org.opendaylight.yangtools.yang.model.api.SchemaNode
+@import org.opendaylight.yangtools.yang.model.api.TypeDefinition
+@import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode
+@import org.opendaylight.yangtools.yang.model.api.Status
+@import org.opendaylight.yangtools.yang.model.api.`type`.EnumTypeDefinition
+@import org.opendaylight.yangtools.yang.model.api.`type`.EnumTypeDefinition.EnumPair
+
+@(node: SchemaNode)
+@if(node != null) {
+    @generateYangSnippet(node)
+}
+
+@generateYangSnippet(node: SchemaNode) = {
+    @if(node.isInstanceOf[DataSchemaNode]) {
+        @yangTemplateWriteDataSchemaNode(node.asInstanceOf[DataSchemaNode])
+    }
+    @if(node.isInstanceOf[EnumTypeDefinition.EnumPair]) {
+        enum @{node.asInstanceOf[EnumTypeDefinition.EnumPair].getName()} {
+            @if(node.asInstanceOf[EnumTypeDefinition.EnumPair].getValue() != null) {
+                value @{node.asInstanceOf[EnumTypeDefinition.EnumPair].getValue()};
+            } else {
+            ;
+            }
+        }
+    }
+    @if(node.isInstanceOf[ExtensionDefinition]) {
+        @yangTemplateWriteExtension(node.asInstanceOf[ExtensionDefinition])
+    }
+    @if(node.isInstanceOf[FeatureDefinition]) {
+        @yangTemplateWriteFeature(node.asInstanceOf[FeatureDefinition])
+    }
+    @if(node.isInstanceOf[GroupingDefinition]) {
+        @yangTemplateWriteGroupingDef(node.asInstanceOf[GroupingDefinition])
+    }
+    @if(node.isInstanceOf[IdentitySchemaNode]) {
+        @yangTemplateWriteIdentity(node.asInstanceOf[IdentitySchemaNode])
+    }
+    @if(node.isInstanceOf[NotificationDefinition]) {
+        @yangTemplateWriteNotification(node.asInstanceOf[NotificationDefinition])
+    }
+    @if(node.isInstanceOf[RpcDefinition]) {
+        @yangTemplateWriteRPC(node.asInstanceOf[RpcDefinition])
+    }
+    @if(node.isInstanceOf[TypeDefinition[_]]) {
+    type @{node.asInstanceOf[TypeDefinition[_]].getQName().getLocalName()}
+        @if(node.asInstanceOf[TypeDefinition[_]].getStatus() != Status.CURRENT) {
+            status @{node.asInstanceOf[TypeDefinition[_]].getStatus()};
+        } else {
+        ;
+        }
+    }
+    @if(node.isInstanceOf[UnknownSchemaNode]) {
+        @yangTemplateWriteUnknownSchemaNode(node.asInstanceOf[UnknownSchemaNode])
+    }
+}
\ No newline at end of file