--- /dev/null
+@*
+ * 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