Bug 1411-4: MDSAL Binding2 Generator Impl
[mdsal.git] / binding2 / mdsal-binding2-generator-impl / src / main / twirl / org / opendaylight / mdsal / binding2 / yangTemplateForNode.scala.txt
1 @*
2  * Copyright (c) 2016 Cisco Systems, Inc. and others.  All rights reserved.
3  *
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
7  *@
8
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 *                                                         *
15 * Note: we should introduce our own format instead of txt *
16 ***********************************************************@
17
18 @import org.opendaylight.yangtools.yang.model.api.DataSchemaNode
19 @import org.opendaylight.yangtools.yang.model.api.ExtensionDefinition
20 @import org.opendaylight.yangtools.yang.model.api.FeatureDefinition
21 @import org.opendaylight.yangtools.yang.model.api.GroupingDefinition
22 @import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode
23 @import org.opendaylight.yangtools.yang.model.api.NotificationDefinition
24 @import org.opendaylight.yangtools.yang.model.api.RpcDefinition
25 @import org.opendaylight.yangtools.yang.model.api.SchemaNode
26 @import org.opendaylight.yangtools.yang.model.api.TypeDefinition
27 @import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode
28 @import org.opendaylight.yangtools.yang.model.api.Status
29 @import org.opendaylight.yangtools.yang.model.api.`type`.EnumTypeDefinition
30 @import org.opendaylight.yangtools.yang.model.api.`type`.EnumTypeDefinition.EnumPair
31
32 @(node: SchemaNode)
33 @if(node != null) {
34     @generateYangSnippet(node)
35 }
36
37 @generateYangSnippet(node: SchemaNode) = {
38     @if(node.isInstanceOf[DataSchemaNode]) {
39         @yangTemplateWriteDataSchemaNode(node.asInstanceOf[DataSchemaNode])
40     }
41     @if(node.isInstanceOf[EnumTypeDefinition.EnumPair]) {
42         enum @{node.asInstanceOf[EnumTypeDefinition.EnumPair].getName()} {
43             @if(node.asInstanceOf[EnumTypeDefinition.EnumPair].getValue() != null) {
44                 value @{node.asInstanceOf[EnumTypeDefinition.EnumPair].getValue()};
45             } else {
46             ;
47             }
48         }
49     }
50     @if(node.isInstanceOf[ExtensionDefinition]) {
51         @yangTemplateWriteExtension(node.asInstanceOf[ExtensionDefinition])
52     }
53     @if(node.isInstanceOf[FeatureDefinition]) {
54         @yangTemplateWriteFeature(node.asInstanceOf[FeatureDefinition])
55     }
56     @if(node.isInstanceOf[GroupingDefinition]) {
57         @yangTemplateWriteGroupingDef(node.asInstanceOf[GroupingDefinition])
58     }
59     @if(node.isInstanceOf[IdentitySchemaNode]) {
60         @yangTemplateWriteIdentity(node.asInstanceOf[IdentitySchemaNode])
61     }
62     @if(node.isInstanceOf[NotificationDefinition]) {
63         @yangTemplateWriteNotification(node.asInstanceOf[NotificationDefinition])
64     }
65     @if(node.isInstanceOf[RpcDefinition]) {
66         @yangTemplateWriteRPC(node.asInstanceOf[RpcDefinition])
67     }
68     @if(node.isInstanceOf[TypeDefinition[_]]) {
69     type @{node.asInstanceOf[TypeDefinition[_]].getQName().getLocalName()}
70         @if(node.asInstanceOf[TypeDefinition[_]].getStatus() != Status.CURRENT) {
71             status @{node.asInstanceOf[TypeDefinition[_]].getStatus()};
72         } else {
73         ;
74         }
75     }
76     @if(node.isInstanceOf[UnknownSchemaNode]) {
77         @yangTemplateWriteUnknownSchemaNode(node.asInstanceOf[UnknownSchemaNode])
78     }
79 }