-@*
- * 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. *
-***********************************************************@
-
-@import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.ChoiceSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.DataSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.DocumentedNode.WithStatus
-@import org.opendaylight.yangtools.yang.model.api.ElementCountConstraintAware
-@import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.ListSchemaNode
-@import org.opendaylight.yangtools.yang.model.api.MandatoryAware
-@import org.opendaylight.yangtools.yang.model.api.Module
-@import org.opendaylight.yangtools.yang.model.api.SchemaNode
-@import org.opendaylight.yangtools.yang.model.api.Status
-@import org.opendaylight.yangtools.yang.model.api.UnknownSchemaNode
-
-@(dataSchemaNode: DataSchemaNode, module: Module)
-@if(dataSchemaNode.isInstanceOf[ContainerSchemaNode]) {
- @container(dataSchemaNode.asInstanceOf[ContainerSchemaNode], module)
-}
-@if(dataSchemaNode.isInstanceOf[AnyXmlSchemaNode]) {
- anyxml @{dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getQName().getLocalName()}@if(dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].getStatus() == Status.CURRENT && !dataSchemaNode.asInstanceOf[AnyXmlSchemaNode].isMandatory()){;} else { {
- @mandatory(dataSchemaNode.asInstanceOf[AnyXmlSchemaNode])
- @status(dataSchemaNode)
- }}
-}
-@if(dataSchemaNode.isInstanceOf[AnyDataSchemaNode]) {
- anydata @{dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getQName().getLocalName()}@if(dataSchemaNode.asInstanceOf[AnyDataSchemaNode].getStatus() == Status.CURRENT && !dataSchemaNode.asInstanceOf[AnyDataSchemaNode].isMandatory()){;} else { {
- @mandatory(dataSchemaNode.asInstanceOf[AnyDataSchemaNode])
- @status(dataSchemaNode)
- }}
-}
-@if(dataSchemaNode.isInstanceOf[LeafSchemaNode]) {
- @if(!dataSchemaNode.asInstanceOf[LeafSchemaNode].isAddedByUses() && !dataSchemaNode.asInstanceOf[LeafSchemaNode].isAugmenting()){
- leaf @{dataSchemaNode.asInstanceOf[LeafSchemaNode].getQName().getLocalName()} {
- @if(dataSchemaNode.asInstanceOf[LeafSchemaNode].getDescription() != null){
- description "@{dataSchemaNode.asInstanceOf[LeafSchemaNode].getDescription()}";
- }
- @yangTemplateWriteType(dataSchemaNode.asInstanceOf[LeafSchemaNode].getType())
- @mandatory(dataSchemaNode.asInstanceOf[LeafSchemaNode])
- @status(dataSchemaNode)
- }
- }
-}
-@if(dataSchemaNode.isInstanceOf[LeafListSchemaNode]) {
- leaf-list @{dataSchemaNode.asInstanceOf[LeafListSchemaNode].getQName().getLocalName()} {
- @if(dataSchemaNode.asInstanceOf[LeafListSchemaNode].isUserOrdered()){
- ordered-by user;
- }
- type @{dataSchemaNode.asInstanceOf[LeafListSchemaNode].getType().getQName().getLocalName()};
- @minmaxelements(dataSchemaNode.asInstanceOf[LeafListSchemaNode])
- @status(dataSchemaNode)
- }
-}
-@if(dataSchemaNode.isInstanceOf[CaseSchemaNode]) {
- case @{dataSchemaNode.asInstanceOf[CaseSchemaNode].getQName().getLocalName()} {
- @for(childNode <- dataSchemaNode.asInstanceOf[CaseSchemaNode].getChildNodes()) {
- @yangTemplateWriteDataSchemaNode(childNode, module)
- }
- @status(dataSchemaNode)
- }
-}
-@if(dataSchemaNode.isInstanceOf[ChoiceSchemaNode]) {
- choice @{dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getQName().getLocalName()} {
- @mandatory(dataSchemaNode.asInstanceOf[ChoiceSchemaNode])
- @for(childNode <- dataSchemaNode.asInstanceOf[ChoiceSchemaNode].getCases().values()) {
- @yangTemplateWriteDataSchemaNode(childNode, module)
- }
- @status(dataSchemaNode)
- }
-}
-@if(dataSchemaNode.isInstanceOf[ListSchemaNode]) {
- @list(dataSchemaNode.asInstanceOf[ListSchemaNode], module)
-}
-
-@mandatory(aware: MandatoryAware) = {
- @if(aware.isMandatory()) {
- mandatory true;
- }
-}
-
-@minmaxelements(aware: ElementCountConstraintAware) = {
- @if(aware.getElementCountConstraint().isPresent()) {
- @defining(aware.getElementCountConstraint().get()) { constraint =>
- @if(constraint.getMinElements() != null) {
- min-elements @{constraint.getMinElements()}
- }
- @if(constraint.getMaxElements() != null) {
- max-elements @{constraint.getMaxElements()}
- }
- }
- }
-}
-
-@status(aware: WithStatus) = {
- @if(aware.getStatus() != Status.CURRENT) {
- status @{aware.getStatus()};
- }
-}
-@container(container: ContainerSchemaNode, module: Module) = {
- container @{container.getQName().getLocalName()} {
- @if(container.getChildNodes() != null && !container.getChildNodes().isEmpty()) {
- @yangTemplateWriteDataSchemaNodes(container.getChildNodes(), module)
- }
- @if(container.getGroupings() != null && !container.getGroupings().isEmpty()) {
- @yangTemplateWriteGroupingDefs(container.getGroupings(), module)
- }
- @if(container.getUses() != null && !container.getUses().isEmpty()) {
- @yangTemplateWriteUsesNodes(container.getUses(), module)
- }
- @if(container.getUnknownSchemaNodes() != null && !container.getUnknownSchemaNodes().isEmpty()) {
- @yangTemplateWriteUnknownSchemaNodes(container.getUnknownSchemaNodes(), module)
- }
- @if(container.getActions() != null && !container.getActions().isEmpty()) {
- @yangTemplateWriteActions(container.getActions(), module)
- }
- @status(container)
- }
-}
-
-@list(list: ListSchemaNode, module: Module) = {
- list @{list.getQName().getLocalName()} {
- @if(list.isUserOrdered()){
- ordered-by user;
- }
- @minmaxelements(list)
- key "@for(listKey <- list.getKeyDefinition()) {@{listKey.getLocalName()} }";
- @if(!list.getUniqueConstraints().isEmpty()){
- @for(listUnique <- list.getUniqueConstraints()){
- unique "@for(tagUnique <- listUnique.getTag()) {@{tagUnique.getLastComponent.getLocalName()} }";
- }
- }
- @if(list.getChildNodes() != null && !list.getChildNodes().isEmpty()) {
- @yangTemplateWriteDataSchemaNodes(list.getChildNodes(), module)
- }
- @if(list.getAvailableAugmentations() != null && !list.getAvailableAugmentations().isEmpty()) {
- @yangTemplateWriteAugments(list.getAvailableAugmentations(), module)
- }
- @if(list.getGroupings() != null && !list.getGroupings().isEmpty()) {
- @yangTemplateWriteGroupingDefs(list.getGroupings(), module)
- }
- @if(list.getUses() != null && !list.getUses().isEmpty()) {
- @yangTemplateWriteUsesNodes(list.getUses(), module)
- }
- @if(list.getUnknownSchemaNodes() != null && !list.getUnknownSchemaNodes().isEmpty()) {
- @yangTemplateWriteUnknownSchemaNodes(list.getUnknownSchemaNodes(), module)
- }
- @if(list.getActions() != null && !list.getActions().isEmpty()) {
- @yangTemplateWriteActions(list.getActions(), module)
- }
- @status(list)
- }
-}