Bug 6869: [YANG 1.1] Allow if-feature in bit, enum, identity and refine statements 73/47773/5
authorIgor Foltin <ifoltin@cisco.com>
Mon, 31 Oct 2016 09:52:53 +0000 (10:52 +0100)
committerRobert Varga <nite@hq.sk>
Mon, 14 Nov 2016 12:55:49 +0000 (12:55 +0000)
API changes in yang-model-api

Change-Id: I5aa4de28e0014e16d1349469024f016f25442635
Signed-off-by: Igor Foltin <ifoltin@cisco.com>
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/BitStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConditionalFeature.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/EnumStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IdentityStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java

index 058f8e85cc430b6c839c579de1581a99c72d9d13..2aa1f9ecd0e01dbcf359a1f4eb3e0281e7b7753e 100644 (file)
@@ -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<QName>, DocumentationGroup.WithStatus {
+public interface BitStatement extends DeclaredStatement<QName>, DocumentationGroup.WithStatus, ConditionalFeature {
 
     @Nonnull
     String getName();
index 0c85dc8fb66d77938420b395f79bf7b2567e026a..3f47371e856a2a7ac11a93b64899f68706b4990d 100644 (file)
@@ -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<? extends IfFeatureStatement> 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<? extends IfFeatureStatement> getIfFeatures() {
+        return ImmutableList.of();
+    }
 }
index 23fd49d2c090a87d801bf60a2a39c1273c716ddf..9e5ed54aa6a7701e93bb74eb44102e81927747be 100644 (file)
@@ -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<String>, DocumentationGroup.WithStatus {
+public interface EnumStatement extends DeclaredStatement<String>, DocumentationGroup.WithStatus, ConditionalFeature {
 
     @Nonnull
     String getName();
index da3c362e1f9ed66ceba35ed4654acd9710e32280..f5678b6ff3548c22f48fc5e3d6165e17c36d116f 100644 (file)
@@ -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<QName>, DocumentationGroup.WithStatus {
+public interface IdentityStatement extends DeclaredStatement<QName>, DocumentationGroup.WithStatus, ConditionalFeature {
 
     @Nonnull QName getName();
 
index 83d09f2195de82097ff697115a92b4a3dcb75199..bf268074e2a69513768833d24aece3e14d6d0500 100644 (file)
@@ -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<SchemaNodeIdentifier>, DocumentationGroup {
+public interface RefineStatement extends DeclaredStatement<SchemaNodeIdentifier>, DocumentationGroup, ConditionalFeature {
     String getTargetNode();
 
     interface RefineContainerStatement extends RefineStatement {