Bug 2444 - add missing API of some declared statements 07/59507/13
authorPeter Kajsa <pkajsa@cisco.com>
Mon, 26 Jun 2017 09:09:27 +0000 (11:09 +0200)
committerRobert Varga <nite@hq.sk>
Tue, 3 Oct 2017 09:19:19 +0000 (09:19 +0000)
Fix of missing API of some declared statements according to
RFC7950. This API is necessary to proper export of declared statements
to Yin.

Change-Id: Icc0209656751b00c5cc7401f7b95d8979af0fa0d
Signed-off-by: Peter Kajsa <pkajsa@cisco.com>
16 files changed:
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ActionStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AugmentStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/DeviationStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/IncludeStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/NotificationStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/OperationGroup.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RpcStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/TypedefStatement.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/AugmentStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/DeviationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/IncludeStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/NotificationStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/RefineStatementImpl.java
yang/yang-parser-impl/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/rfc6020/TypedefStatementImpl.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractDeclaredStatement.java

index 916539b3518cd456844e8bc96872ec49d5f9e6cc..c1bb951b6cfc8f30d38c02817b8cfd5d9164f847 100644 (file)
@@ -22,6 +22,6 @@ import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
  * detailed action information.  The argument is the name of the action.
  */
 @Beta
-public interface ActionStatement extends DeclaredStatement<QName>, OperationGroup, ConditionalFeature {
+public interface ActionStatement extends DeclaredStatement<QName>, OperationGroup {
 
 }
index f611578f0ad7e34cc8d7979b853df92b251ef753..a3c17c56132ace6f8393167ea37488e757619812 100644 (file)
@@ -7,11 +7,17 @@
  */
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
+import java.util.Collection;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
-public interface AugmentStatement extends DeclaredStatement<SchemaNodeIdentifier>, DataDefinitionContainer,
-        NotificationStatementContainer, ActionStatementContainer {
+public interface AugmentStatement
+        extends DeclaredStatement<SchemaNodeIdentifier>, DataDefinitionContainer, NotificationStatementContainer,
+        ActionStatementContainer, DocumentationGroup.WithStatus, ConditionalDataDefinition, ConditionalFeature {
 
-    @Nonnull SchemaNodeIdentifier getTargetNode();
+    @Nonnull
+    SchemaNodeIdentifier getTargetNode();
+
+    @Nonnull
+    Collection<? extends CaseStatement> getCases();
 }
index d52aadbc4f1fb7682b70802c08318e8eaa38fb60..0434afbca158bcbd0f3927d00d18d233d0aace22 100644 (file)
@@ -7,10 +7,13 @@
  */
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
+import java.util.Collection;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
-public interface DeviationStatement extends DeclaredStatement<SchemaNodeIdentifier> {
+public interface DeviationStatement extends DeclaredStatement<SchemaNodeIdentifier>, DocumentationGroup {
 
     @Nonnull SchemaNodeIdentifier getTargetNode();
+
+    @Nonnull Collection<? extends DeviateStatement> getDeviateStatements();
 }
index 2a5bda1b292c43294470e305200fa7e8d7a3ac70..efbfa36ac970124b18d450e57624314a8f2beb14 100644 (file)
@@ -15,8 +15,6 @@ public interface IncludeStatement extends DeclaredStatement<String>, Documentati
 
     @Nonnull String getModule();
 
-    @Nonnull PrefixStatement getPrefix();
-
     @Nullable RevisionDateStatement getRevisionDate();
 }
 
index c27342e4f970fe5824688730e51ebb2c7d4bc11e..4632f3855c885b9e3817389d9f42e95c8c985a95 100644 (file)
@@ -14,7 +14,7 @@ import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
 public interface NotificationStatement extends DeclaredStatement<QName>,
-       DataDefinitionContainer.WithReusableDefinitions, DocumentationGroup.WithStatus {
+       DataDefinitionContainer.WithReusableDefinitions, DocumentationGroup.WithStatus, ConditionalFeature {
 
     @Nonnull QName getName();
 
index a17004f246fa0440e35e48de08d4692668aef218..3a6f4bbfb58bb2511200d08ed9b60de794798719 100644 (file)
@@ -11,21 +11,22 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 import com.google.common.annotations.Beta;
 import java.util.Collection;
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 
 /**
  * Common interface for action and rpc statements.
  */
 @Beta
-public interface OperationGroup extends DocumentationGroup.WithStatus {
+public interface OperationGroup extends DocumentationGroup.WithStatus, ConditionalFeature {
 
-    QName getName();
+    @Nonnull QName getName();
 
     @Nonnull Collection<? extends TypedefStatement> getTypedefs();
 
     @Nonnull Collection<? extends GroupingStatement> getGroupings();
 
-    InputStatement getInput();
+    @Nullable InputStatement getInput();
 
-    OutputStatement getOutput();
+    @Nullable OutputStatement getOutput();
 }
index da8be7f714d2d07d2e13f6bbddf5053a182e0ac6..61d646c02880b82cd5eb5eb79822b36fe5159270 100644 (file)
@@ -12,28 +12,28 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
-public interface RefineStatement extends DeclaredStatement<SchemaNodeIdentifier>, DocumentationGroup,
-       ConditionalFeature {
+public interface RefineStatement
+        extends DeclaredStatement<SchemaNodeIdentifier>, DocumentationGroup, ConditionalFeature {
     String getTargetNode();
 
-    interface RefineContainerStatement extends RefineStatement {
+    @Nonnull
+    Collection<? extends MustStatement> getMusts();
 
-        @Nonnull Collection<? extends MustStatement> getMusts();
+    @Nonnull
+    Collection<? extends DefaultStatement> getDefaults();
 
-        @Nullable ConfigStatement getConfig();
+    @Nullable
+    ConfigStatement getConfig();
 
-        @Nullable PresenceStatement getPresence();
-    }
+    @Nullable
+    PresenceStatement getPresence();
 
-    interface RefineLeafStatement extends RefineStatement {
+    @Nullable
+    MandatoryStatement getMandatory();
 
-        @Nonnull Collection<? extends MustStatement> getMusts();
+    @Nullable
+    MinElementsStatement getMinElements();
 
-        @Nullable DefaultStatement getDefault();
-
-        @Nullable ConfigStatement getConfig();
-
-        @Nullable PresenceStatement getPresence();
-    }
+    @Nullable
+    MaxElementsStatement getMaxElements();
 }
-
index 33c9d5c08609f789b086820cdc0b137ad0af4b09..1300ed32d578f543c218be59d8ad70891d30428e 100644 (file)
@@ -10,6 +10,6 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
-public interface RpcStatement extends DeclaredStatement<QName>, OperationGroup, ConditionalFeature {
+public interface RpcStatement extends DeclaredStatement<QName>, OperationGroup {
 
 }
index b4d9ca2a0f8e14569d26dde7ee9991d337d905ba..55ef0019c6111ddc0a0eb57d0995db3c9c6cd42a 100644 (file)
@@ -8,11 +8,14 @@
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
 
 public interface TypedefStatement extends DeclaredStatement<QName>,DocumentationGroup.WithStatus, TypeGroup {
 
     @Nonnull QName getName();
+
+    @Nullable DefaultStatement getDefault();
 }
 
index 9bceed925ad8c6782df94fa43fcf4eb39a8fafd3..7ecd95cbe012d35e2d71a921c32ddfb41bb2126f 100644 (file)
@@ -15,15 +15,21 @@ import java.util.Objects;
 import java.util.Set;
 import java.util.regex.Pattern;
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.common.YangVersion;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
+import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.UsesStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.WhenStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
@@ -400,8 +406,45 @@ public class AugmentStatementImpl extends AbstractDeclaredStatement<SchemaNodeId
         return allDeclared(ActionStatement.class);
     }
 
+    @Nonnull
     @Override
     public final Collection<? extends NotificationStatement> getNotifications() {
         return allDeclared(NotificationStatement.class);
     }
+
+    @Nullable
+    @Override
+    public ReferenceStatement getReference() {
+        return firstDeclared(ReferenceStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public DescriptionStatement getDescription() {
+        return firstDeclared(DescriptionStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public StatusStatement getStatus() {
+        return firstDeclared(StatusStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public WhenStatement getWhenStatement() {
+        return firstDeclared(WhenStatement.class);
+    }
+
+    @Nonnull
+    @Override
+    public Collection<? extends CaseStatement> getCases() {
+        return allDeclared(CaseStatement.class);
+    }
+
+    @Nonnull
+    @Override
+    public Collection<? extends IfFeatureStatement> getIfFeatures() {
+        return allDeclared(IfFeatureStatement.class);
+    }
 }
index 7b819af88655aacd9946af0f7d511e973b6db96e..65846e401f811a82462143ce7b40033711696938 100644 (file)
@@ -7,11 +7,16 @@
  */
 package org.opendaylight.yangtools.yang.parser.stmt.rfc6020;
 
+import java.util.Collection;
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QNameModule;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.DeviateStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractDeclaredStatement;
 import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport;
@@ -82,4 +87,22 @@ public class DeviationStatementImpl extends AbstractDeclaredStatement<SchemaNode
     public SchemaNodeIdentifier getTargetNode() {
         return argument();
     }
+
+    @Nullable
+    @Override
+    public DescriptionStatement getDescription() {
+        return firstDeclared(DescriptionStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public ReferenceStatement getReference() {
+        return firstDeclared(ReferenceStatement.class);
+    }
+
+    @Nonnull
+    @Override
+    public Collection<? extends DeviateStatement> getDeviateStatements() {
+        return allDeclared(DeviateStatement.class);
+    }
 }
index 3e411257b43bde7cead6b5b894eaa245c4561922..f698d2359097ec2227a77de0ff634ae914c1647f 100644 (file)
@@ -20,7 +20,6 @@ import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.PrefixStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RevisionDateStatement;
 import org.opendaylight.yangtools.yang.model.util.ModuleIdentifierImpl;
@@ -129,12 +128,6 @@ public class IncludeStatementImpl extends AbstractDeclaredStatement<String> impl
         return argument();
     }
 
-    @Nonnull
-    @Override
-    public PrefixStatement getPrefix() {
-        return firstDeclared(PrefixStatement.class);
-    }
-
     @Override
     public RevisionDateStatement getRevisionDate() {
         return firstDeclared(RevisionDateStatement.class);
index d3563282709f51fc2afc12fa716c5293246b2c17..a18a528fe90d239d1e9671797793efdc8c2dfc36 100644 (file)
@@ -16,6 +16,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.GroupingStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.NotificationStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
@@ -137,4 +138,10 @@ public class NotificationStatementImpl extends AbstractDeclaredStatement<QName>
     public ReferenceStatement getReference() {
         return firstDeclared(ReferenceStatement.class);
     }
+
+    @Nonnull
+    @Override
+    public Collection<? extends IfFeatureStatement> getIfFeatures() {
+        return allDeclared(IfFeatureStatement.class);
+    }
 }
index 12cc40e91d31b8286ccfa89795da9b88c88ab6fc..336fb2636a5b853f8a19216b61d1f4607958ed02 100644 (file)
@@ -13,8 +13,15 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.DefaultStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.IfFeatureStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MandatoryStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.MustStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.PresenceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
@@ -94,4 +101,46 @@ public class RefineStatementImpl extends AbstractDeclaredStatement<SchemaNodeIde
     public ReferenceStatement getReference() {
         return firstDeclared(ReferenceStatement.class);
     }
+
+    @Nonnull
+    @Override
+    public Collection<? extends MustStatement> getMusts() {
+        return allDeclared(MustStatement.class);
+    }
+
+    @Nonnull
+    @Override
+    public Collection<? extends DefaultStatement> getDefaults() {
+        return allDeclared(DefaultStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public ConfigStatement getConfig() {
+        return firstDeclared(ConfigStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public PresenceStatement getPresence() {
+        return firstDeclared(PresenceStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public MandatoryStatement getMandatory() {
+        return firstDeclared(MandatoryStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public MinElementsStatement getMinElements() {
+        return firstDeclared(MinElementsStatement.class);
+    }
+
+    @Nullable
+    @Override
+    public MaxElementsStatement getMaxElements() {
+        return firstDeclared(MaxElementsStatement.class);
+    }
 }
index 7b62514244384eff1efc9608ecff835cd0e55c0e..e149b628cf2c5e780ddca18dc7c44e73b3cbd8cd 100644 (file)
@@ -12,6 +12,7 @@ import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.YangStmtMapping;
 import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.DefaultStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.StatusStatement;
@@ -122,4 +123,9 @@ public class TypedefStatementImpl extends AbstractDeclaredStatement<QName> imple
         return argument();
     }
 
+    @Nullable
+    @Override
+    public DefaultStatement getDefault() {
+        return firstDeclared(DefaultStatement.class);
+    }
 }
index 081ed56967a58f5a0af14e4dbc4ce0f52d392cab..db066080df2999a7e3d9ffb09187e703c8604c46 100644 (file)
@@ -8,6 +8,7 @@
 
 package org.opendaylight.yangtools.yang.parser.spi.meta;
 
+import com.google.common.base.Optional;
 import com.google.common.base.Predicates;
 import com.google.common.collect.Collections2;
 import com.google.common.collect.ImmutableList;
@@ -44,7 +45,9 @@ public abstract class AbstractDeclaredStatement<A> implements DeclaredStatement<
     }
 
     protected final <S extends DeclaredStatement<?>> S firstDeclared(final Class<S> type) {
-        return type.cast(Iterables.find(substatements, Predicates.instanceOf(type)));
+        final Optional<? extends DeclaredStatement<?>> declaredSubstmt = Iterables.tryFind(substatements,
+                Predicates.instanceOf(type));
+        return declaredSubstmt.isPresent() ? type.cast(declaredSubstmt.get()) : null;
     }
 
     @Override