From bbcebc2f24fb0f989f3ed1c6dbcb7797017699ba Mon Sep 17 00:00:00 2001 From: Igor Foltin Date: Mon, 31 Oct 2016 10:52:53 +0100 Subject: [PATCH] Bug 6869: [YANG 1.1] Allow if-feature in bit, enum, identity and refine statements API changes in yang-model-api Change-Id: I5aa4de28e0014e16d1349469024f016f25442635 Signed-off-by: Igor Foltin --- .../yang/model/api/stmt/BitStatement.java | 2 +- .../yang/model/api/stmt/ConditionalFeature.java | 14 +++++++++++++- .../yang/model/api/stmt/EnumStatement.java | 2 +- .../yang/model/api/stmt/IdentityStatement.java | 2 +- .../yang/model/api/stmt/RefineStatement.java | 2 +- 5 files changed, 17 insertions(+), 5 deletions(-) diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java index 058f8e85cc..2aa1f9ecd0 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java @@ -13,7 +13,7 @@ import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; -public interface BitStatement extends DeclaredStatement, DocumentationGroup.WithStatus { +public interface BitStatement extends DeclaredStatement, DocumentationGroup.WithStatus, ConditionalFeature { @Nonnull String getName(); diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java index 0c85dc8fb6..3f47371e85 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java @@ -7,11 +7,23 @@ */ package org.opendaylight.yangtools.yang.model.api.stmt; +import com.google.common.collect.ImmutableList; import java.util.Collection; import javax.annotation.Nonnull; @Rfc6020AbnfRule("*(if-feature-stmt)") public interface ConditionalFeature { - @Nonnull Collection getIfFeatures(); + /** + * All implementations should override this method. + * The default definition of this method is used only in YANG 1.0 (RFC6020) implementations of + * BitStatement, EnumStatement, IdentityStatement and RefineStatement which do not allow if-feature statements. + * These YANG statements have been changed in YANG 1.1 (RFC7950) and can now contain if-feature statements. + * + * @return collection of if-feature statements + */ + // FIXME: version 2.0.0: make this method non-default + @Nonnull default Collection getIfFeatures() { + return ImmutableList.of(); + } } diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java index 23fd49d2c0..9e5ed54aa6 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java @@ -11,7 +11,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; -public interface EnumStatement extends DeclaredStatement, DocumentationGroup.WithStatus { +public interface EnumStatement extends DeclaredStatement, DocumentationGroup.WithStatus, ConditionalFeature { @Nonnull String getName(); diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java index da3c362e1f..f5678b6ff3 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java @@ -12,7 +12,7 @@ import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; -public interface IdentityStatement extends DeclaredStatement, DocumentationGroup.WithStatus { +public interface IdentityStatement extends DeclaredStatement, DocumentationGroup.WithStatus, ConditionalFeature { @Nonnull QName getName(); diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java index 83d09f2195..bf268074e2 100644 --- a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java +++ b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java @@ -12,7 +12,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement; -public interface RefineStatement extends DeclaredStatement, DocumentationGroup { +public interface RefineStatement extends DeclaredStatement, DocumentationGroup, ConditionalFeature { String getTargetNode(); interface RefineContainerStatement extends RefineStatement { -- 2.36.6