@* * 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]) } }