Use StmtContext.findSubstatementArgument() for isConfiguration() 56/93556/1
authormiroslav.kovac <miroslav.kovac@pantheon.tech>
Fri, 30 Oct 2020 16:29:28 +0000 (17:29 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Mon, 2 Nov 2020 16:46:24 +0000 (17:46 +0100)
We are only interested in having the appropriate argument, hence
we can use provided utility to not force the StmtContext to be
materialized.

JIRA: YANGTOOLS-1156
Change-Id: Idf292794225792afd8df1019c9106362a94ed5a4
Signed-off-by: miroslav.kovac <miroslav.kovac@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
(cherry picked from commit 4929fb6d63325fcbcbd72c16758a44ba19c3d20d)

yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/StatementContextBase.java

index 3060eb7916f23e9a3a3e880fb80dd61fa83207ca..c1cab301b80d6cfdf68679d533332c5d58074d35 100644 (file)
@@ -44,7 +44,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.IdentifierNamespace;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
 import org.opendaylight.yangtools.yang.model.api.meta.StatementSource;
 import org.opendaylight.yangtools.yang.model.api.stmt.AugmentStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.ConfigStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.ConfigEffectiveStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.DeviationStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.RefineStatement;
 import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
@@ -968,11 +968,10 @@ public abstract class StatementContextBase<A, D extends DeclaredStatement<A>, E
             return true;
         }
 
-        final StmtContext<Boolean, ?, ?> configStatement = StmtContextUtils.findFirstSubstatement(this,
-            ConfigStatement.class);
         final boolean isConfig;
-        if (configStatement != null) {
-            isConfig = configStatement.coerceStatementArgument();
+        final Optional<Boolean> optConfig = findSubstatementArgument(ConfigEffectiveStatement.class);
+        if (optConfig.isPresent()) {
+            isConfig = optConfig.orElseThrow();
             if (isConfig) {
                 // Validity check: if parent is config=false this cannot be a config=true
                 InferenceException.throwIf(!parent.isConfiguration(), getStatementSourceReference(),