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. *
15 * Note: we should introduce our own format instead of txt *
16 ***********************************************************@
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
34 @generateYangSnippet(node)
37 @generateYangSnippet(node: SchemaNode) = {
38 @if(node.isInstanceOf[DataSchemaNode]) {
39 @yangTemplateWriteDataSchemaNode(node.asInstanceOf[DataSchemaNode])
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()};
50 @if(node.isInstanceOf[ExtensionDefinition]) {
51 @yangTemplateWriteExtension(node.asInstanceOf[ExtensionDefinition])
53 @if(node.isInstanceOf[FeatureDefinition]) {
54 @yangTemplateWriteFeature(node.asInstanceOf[FeatureDefinition])
56 @if(node.isInstanceOf[GroupingDefinition]) {
57 @yangTemplateWriteGroupingDef(node.asInstanceOf[GroupingDefinition])
59 @if(node.isInstanceOf[IdentitySchemaNode]) {
60 @yangTemplateWriteIdentity(node.asInstanceOf[IdentitySchemaNode])
62 @if(node.isInstanceOf[NotificationDefinition]) {
63 @yangTemplateWriteNotification(node.asInstanceOf[NotificationDefinition])
65 @if(node.isInstanceOf[RpcDefinition]) {
66 @yangTemplateWriteRPC(node.asInstanceOf[RpcDefinition])
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()};
76 @if(node.isInstanceOf[UnknownSchemaNode]) {
77 @yangTemplateWriteUnknownSchemaNode(node.asInstanceOf[UnknownSchemaNode])