2 * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
4 * This program and the accompanying materials are made available under the
5 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6 * and is available at http://www.eclipse.org/legal/epl-v10.html
9 @**********************************************************
10 * Twirl YangTemplate for generating yang snippets. *
11 * Twirl is transformed to Scala and compiled. Then, *
12 * it can be called from Java with particular input *
13 * parameters to render desired output code. *
14 ***********************************************************@
16 @import org.opendaylight.yangtools.yang.model.api.DataSchemaNode
17 @import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition
18 @import org.opendaylight.yangtools.yang.model.api.FeatureDefinition
19 @import org.opendaylight.yangtools.yang.model.api.GroupingDefinition
20 @import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode
21 @import org.opendaylight.yangtools.yang.model.api.Module
22 @import org.opendaylight.yangtools.yang.model.api.NotificationDefinition
23 @import org.opendaylight.yangtools.yang.model.api.RpcDefinition
24 @import org.opendaylight.yangtools.yang.model.api.SchemaNode
25 @import org.opendaylight.yangtools.yang.model.api.TypeDefinition
26 @import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode
27 @import org.opendaylight.yangtools.yang.model.api.Status
28 @import org.opendaylight.yangtools.yang.model.api.`type`.EnumTypeDefinition
29 @import org.opendaylight.yangtools.yang.model.api.`type`.EnumTypeDefinition.EnumPair
31 @(node: SchemaNode, module: Module)
33 @generateYangSnippet(node, module)
36 @generateYangSnippet(node: SchemaNode, module: Module) = {
37 @if(node.isInstanceOf[DataSchemaNode]) {
38 @yangTemplateWriteDataSchemaNode(node.asInstanceOf[DataSchemaNode], module)
40 @if(node.isInstanceOf[EnumTypeDefinition.EnumPair]) {
41 enum @{node.asInstanceOf[EnumTypeDefinition.EnumPair].getName()} {
42 @if(node.asInstanceOf[EnumTypeDefinition.EnumPair].getValue() != null) {
43 value @{node.asInstanceOf[EnumTypeDefinition.EnumPair].getValue()};
49 @if(node.isInstanceOf[ExtensionDefinition]) {
50 @yangTemplateWriteExtension(node.asInstanceOf[ExtensionDefinition])
52 @if(node.isInstanceOf[FeatureDefinition]) {
53 @yangTemplateWriteFeature(node.asInstanceOf[FeatureDefinition])
55 @if(node.isInstanceOf[GroupingDefinition]) {
56 @yangTemplateWriteGroupingDef(node.asInstanceOf[GroupingDefinition], module)
58 @if(node.isInstanceOf[IdentitySchemaNode]) {
59 @yangTemplateWriteIdentity(node.asInstanceOf[IdentitySchemaNode])
61 @if(node.isInstanceOf[NotificationDefinition]) {
62 @yangTemplateWriteNotification(node.asInstanceOf[NotificationDefinition], module)
64 @if(node.isInstanceOf[RpcDefinition]) {
65 @yangTemplateWriteRPC(node.asInstanceOf[RpcDefinition], module)
67 @if(node.isInstanceOf[TypeDefinition[_]]) {
68 type @{node.asInstanceOf[TypeDefinition[_]].getQName().getLocalName()}
69 @if(node.asInstanceOf[TypeDefinition[_]].getStatus() != Status.CURRENT) {
70 status @{node.asInstanceOf[TypeDefinition[_]].getStatus()};
75 @if(node.isInstanceOf[UnknownSchemaNode]) {
76 @yangTemplateWriteUnknownSchemaNode(node.asInstanceOf[UnknownSchemaNode], module)