Add ConfigStatementContainerDeclaredStatement 53/74053/2
authorRobert Varga <robert.varga@pantheon.tech>
Sun, 15 Jul 2018 23:38:16 +0000 (01:38 +0200)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 16 Jul 2018 03:28:01 +0000 (05:28 +0200)
The missing link between ConfigContainerStatement and DeclaredStatement
is filled in, providing a default implementation getConfig().

Change-Id: Icc9c65b0d74bcb0a8a8d1db13514c3ffca86038d
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
18 files changed:
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AnydataStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/AnyxmlStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ChoiceStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConfigStatementContainer.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConfigStatementContainerDeclaredStatement.java [new file with mode: 0644]
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ContainerStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafListStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/LeafStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ListStatement.java
yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/RefineStatement.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/choice/ChoiceStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/container/ContainerStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementImpl.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineStatementImpl.java

index fa7aa8aa57b9726bef7ce68951c0459ee00772e3..326d31fd94b350c72b465bce5ffac3456c6cc5d4 100644 (file)
@@ -5,10 +5,10 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import com.google.common.annotations.Beta;
+import org.opendaylight.yangtools.yang.common.QName;
 
 /**
  * The "anydata" statement defines an interior node in the schema tree. It takes one argument, which is an identifier,
@@ -21,7 +21,7 @@ import com.google.common.annotations.Beta;
  * of this document.
  */
 @Beta
-public interface AnydataStatement extends DataDefinitionStatement, ConfigStatementContainer,
+public interface AnydataStatement extends DataDefinitionStatement, ConfigStatementContainerDeclaredStatement<QName>,
         MandatoryStatementContainer, MustStatementContainer {
 
 }
index 951492f601f5dd16ccbecb463bdf858f0501fe4b..b16cb00e249156b76ca96acd4603df6d5b2bf8e5 100644 (file)
@@ -7,7 +7,9 @@
  */
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
-public interface AnyxmlStatement extends DataDefinitionStatement, ConfigStatementContainer, MandatoryStatementContainer,
-        MustStatementContainer {
+import org.opendaylight.yangtools.yang.common.QName;
+
+public interface AnyxmlStatement extends DataDefinitionStatement, ConfigStatementContainerDeclaredStatement<QName>,
+        MandatoryStatementContainer, MustStatementContainer {
 
 }
index 5ecc60440d6d50b67c881dac557e56590fafc984..5750a3ae14d9934043d19dc09a76e1dbeb184a51 100644 (file)
@@ -9,9 +9,10 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import java.util.Collection;
 import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.common.QName;
 
-public interface ChoiceStatement extends DataDefinitionStatement, ConfigStatementContainer, DefaultStatementContainer,
-        MandatoryStatementContainer {
+public interface ChoiceStatement extends DataDefinitionStatement, ConfigStatementContainerDeclaredStatement<QName>,
+        DefaultStatementContainer, MandatoryStatementContainer {
 
     @Nonnull Collection<? extends CaseStatement> getCases();
 }
index d1c80b130084a7fe7613305fe60fc4c021d47c55..a8ecdc6952931a04fe7501a11a212b70aed86664 100644 (file)
@@ -11,7 +11,10 @@ import javax.annotation.Nullable;
 
 /**
  * Marker interface for statements which may contain a 'config' statement, as defined in RFC7950.
+ *
+ * @deprecated Use {@link ConfigStatementContainerDeclaredStatement} instead.
  */
+@Deprecated
 public interface ConfigStatementContainer {
     /**
      * Return a {@link ConfigStatement} child, if present.
diff --git a/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConfigStatementContainerDeclaredStatement.java b/yang/yang-model-api/src/main/java/org/opendaylight/yangtools/yang/model/api/stmt/ConfigStatementContainerDeclaredStatement.java
new file mode 100644 (file)
index 0000000..336c743
--- /dev/null
@@ -0,0 +1,21 @@
+/*
+ * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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
+ */
+package org.opendaylight.yangtools.yang.model.api.stmt;
+
+import com.google.common.annotations.Beta;
+import java.util.Optional;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+
+@Beta
+public interface ConfigStatementContainerDeclaredStatement<A> extends DeclaredStatement<A>, ConfigStatementContainer {
+    @Override
+    default ConfigStatement getConfig() {
+        final Optional<ConfigStatement> opt = findFirstDeclaredSubstatement(ConfigStatement.class);
+        return opt.isPresent() ? opt.get() : null;
+    }
+}
index 67834c7f8f8a5bbeba06002c9b5fb5b4a45b91b2..be68439e4e5791ff94111d56ef7a3236c0afc00e 100644 (file)
@@ -8,9 +8,11 @@
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import javax.annotation.Nullable;
+import org.opendaylight.yangtools.yang.common.QName;
 
 public interface ContainerStatement extends DataDefinitionStatement, DataDefinitionContainer.WithReusableDefinitions,
-        ActionStatementContainer, ConfigStatementContainer, NotificationStatementContainer, MustStatementContainer {
+        ActionStatementContainer, ConfigStatementContainerDeclaredStatement<QName>, NotificationStatementContainer,
+        MustStatementContainer {
 
     @Nullable PresenceStatement getPresence();
 }
index 1907dfa563172a50c7736b51b39225cc9e46119e..3e20a19fb64017ab52f7eb13079b2df22aa8885b 100644 (file)
@@ -9,9 +9,10 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 
 import java.util.Collection;
 import javax.annotation.Nonnull;
+import org.opendaylight.yangtools.yang.common.QName;
 
 public interface LeafListStatement extends DataDefinitionStatement, MultipleElementsGroup, TypeGroup,
-        ConfigStatementContainer, MustStatementContainer {
+        ConfigStatementContainerDeclaredStatement<QName>, MustStatementContainer {
     /**
      * Return default statements defined in this leaf-list. For RFC6020 semantics, this method returns an empty
      * collection.
index 92a8c786fab2a297dbf082cc4ebb0eb3694d988a..70dff3ec93ecc9e7b0fb1dd4bc04e0da2462e26f 100644 (file)
@@ -7,7 +7,10 @@
  */
 package org.opendaylight.yangtools.yang.model.api.stmt;
 
-public interface LeafStatement extends DataDefinitionStatement, TypeGroup, ConfigStatementContainer,
-        DefaultStatementContainer, MandatoryStatementContainer, MustStatementContainer {
+import org.opendaylight.yangtools.yang.common.QName;
+
+public interface LeafStatement extends DataDefinitionStatement, TypeGroup,
+        ConfigStatementContainerDeclaredStatement<QName>, DefaultStatementContainer, MandatoryStatementContainer,
+        MustStatementContainer {
 
 }
index 4838b643eaf3570d0145d5d6337e77dc68c61dc2..f2598bc4b0152ed7edf93dbe468c02a4059caf2e 100644 (file)
@@ -10,10 +10,11 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
+import org.opendaylight.yangtools.yang.common.QName;
 
 public interface ListStatement extends DataDefinitionStatement, MultipleElementsGroup,
-        DataDefinitionContainer.WithReusableDefinitions, ConfigStatementContainer, ActionStatementContainer,
-        MustStatementContainer, NotificationStatementContainer {
+        DataDefinitionContainer.WithReusableDefinitions, ConfigStatementContainerDeclaredStatement<QName>,
+        ActionStatementContainer, MustStatementContainer, NotificationStatementContainer {
 
     @Nullable KeyStatement getKey();
 
index d288ddaf6bb0f5ab20e5787b8936ff52433b92dd..376d5b8c80e84dd568e7acee42aee2c09727b23b 100644 (file)
@@ -10,10 +10,9 @@ package org.opendaylight.yangtools.yang.model.api.stmt;
 import java.util.Collection;
 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, ConfigStatementContainer, MandatoryStatementContainer, MustStatementContainer {
+public interface RefineStatement extends ConfigStatementContainerDeclaredStatement<SchemaNodeIdentifier>,
+        DocumentationGroup, ConditionalFeature, MandatoryStatementContainer, MustStatementContainer {
     String getTargetNode();
 
     @Nonnull
index 5f81a2fb3f91e0b98f87dc342f215964369d28cb..e7b61a9914fdcda10c23bb0eac43bd82c209532d 100644 (file)
@@ -11,7 +11,6 @@ import com.google.common.annotations.Beta;
 import java.util.Collection;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
 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;
@@ -51,11 +50,6 @@ final class AnydataStatementImpl extends AbstractDeclaredStatement<QName> implem
         return allDeclared(MustStatement.class);
     }
 
-    @Override
-    public ConfigStatement getConfig() {
-        return firstDeclared(ConfigStatement.class);
-    }
-
     @Override
     public StatusStatement getStatus() {
         return firstDeclared(StatusStatement.class);
index ff7c98b1c4f228ec2e31f1108e3b617f0825530c..930c802b4fa81bee195d61fed1e46432e6896782 100644 (file)
@@ -11,7 +11,6 @@ import java.util.Collection;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
 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;
@@ -50,11 +49,6 @@ final class AnyxmlStatementImpl extends AbstractDeclaredStatement<QName> impleme
         return allDeclared(MustStatement.class);
     }
 
-    @Override
-    public ConfigStatement getConfig() {
-        return firstDeclared(ConfigStatement.class);
-    }
-
     @Override
     public StatusStatement getStatus() {
         return firstDeclared(StatusStatement.class);
index 132ea7d84ff52fa516d042412d658ba19b769d6e..4fa2b09d104cb64de4d7ff8bca7b690ab2c6af22 100644 (file)
@@ -13,7 +13,6 @@ import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.CaseStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ChoiceStatement;
-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;
@@ -42,12 +41,6 @@ final class ChoiceStatementImpl extends AbstractDeclaredStatement<QName>
         return firstDeclared(DefaultStatement.class);
     }
 
-    @Nullable
-    @Override
-    public ConfigStatement getConfig() {
-        return firstDeclared(ConfigStatement.class);
-    }
-
     @Nullable
     @Override
     public MandatoryStatement getMandatory() {
index ecdca9761a9b6961c55f296d0790d117662c1263..42e6e48e0b078c8e45e1a9d1ab98a034cbd37dcd 100644 (file)
@@ -11,7 +11,6 @@ import java.util.Collection;
 import javax.annotation.Nonnull;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DataDefinitionStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DescriptionStatement;
@@ -59,11 +58,6 @@ final class ContainerStatementImpl extends AbstractDeclaredStatement<QName> impl
         return firstDeclared(PresenceStatement.class);
     }
 
-    @Override
-    public ConfigStatement getConfig() {
-        return firstDeclared(ConfigStatement.class);
-    }
-
     @Override
     public StatusStatement getStatus() {
         return firstDeclared(StatusStatement.class);
index 389429c6aab43040e35b38a4b1980307e757bcfb..b1b137e65475ff0c0129458f8d8f8d1d8961ca4e 100644 (file)
@@ -11,7 +11,6 @@ import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
-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;
@@ -43,12 +42,6 @@ final class LeafStatementImpl extends AbstractDeclaredStatement<QName> implement
         return firstDeclared(DefaultStatement.class);
     }
 
-    @Nullable
-    @Override
-    public ConfigStatement getConfig() {
-        return firstDeclared(ConfigStatement.class);
-    }
-
     @Nullable
     @Override
     public MandatoryStatement getMandatory() {
index 0a720f7f2b2f550bad4037fd6b02bdcdb600e1b7..9c4d0cea0e95488b44c6c2f72cd76b07c6516170 100644 (file)
@@ -11,7 +11,6 @@ import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
-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;
@@ -39,12 +38,6 @@ final class LeafListStatementImpl extends AbstractDeclaredStatement<QName> imple
         return argument();
     }
 
-    @Nullable
-    @Override
-    public ConfigStatement getConfig() {
-        return firstDeclared(ConfigStatement.class);
-    }
-
     @Override
     public WhenStatement getWhenStatement() {
         return firstDeclared(WhenStatement.class);
index 26b7d75bc9356725669b3accd420d25813c0df82..f00e33ff4cb5c392305f9c74e9133dfab70d10a7 100644 (file)
@@ -12,7 +12,6 @@ import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
 import org.opendaylight.yangtools.yang.common.QName;
 import org.opendaylight.yangtools.yang.model.api.stmt.ActionStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
 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;
@@ -43,12 +42,6 @@ final class ListStatementImpl extends AbstractDeclaredStatement<QName> implement
         return argument();
     }
 
-    @Nullable
-    @Override
-    public ConfigStatement getConfig() {
-        return firstDeclared(ConfigStatement.class);
-    }
-
     @Override
     public WhenStatement getWhenStatement() {
         return firstDeclared(WhenStatement.class);
index 61b7a52d5ea7cf27a71b2d1b14f446629195de9a..597e9e99bc69e550dbf3f871b330e3d07c0ff6f6 100644 (file)
@@ -10,7 +10,6 @@ package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.refine;
 import java.util.Collection;
 import javax.annotation.Nonnull;
 import javax.annotation.Nullable;
-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;
@@ -65,12 +64,6 @@ final class RefineStatementImpl extends AbstractDeclaredStatement<SchemaNodeIden
         return allDeclared(DefaultStatement.class);
     }
 
-    @Nullable
-    @Override
-    public ConfigStatement getConfig() {
-        return firstDeclared(ConfigStatement.class);
-    }
-
     @Nullable
     @Override
     public PresenceStatement getPresence() {