Add BoundStmtCtxCompat 87/93987/13
authormiroslav.kovac <miroslav.kovac@pantheon.tech>
Tue, 1 Dec 2020 14:20:53 +0000 (15:20 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 3 Dec 2020 00:56:56 +0000 (01:56 +0100)
This is a compatibility interface between StmtContext and
EffectiveStmtCtx.Current, hosting the declared instance (for now).

JIRA: YANGTOOLS-1185
Change-Id: Ie1526b7447d9935c8f21910cd4aff298a385103f
Signed-off-by: miroslav.kovac <miroslav.kovac@pantheon.tech>
12 files changed:
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/AbstractResumedStatement.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BaseCurrentEffectiveStmtCtx.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/BuildGlobalContext.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ModifierImpl.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReactorStmtCtx.java
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/ReplicaStatementContext.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractDeclaredStatement.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/BoundStmtCtxCompat.java [new file with mode: 0644]
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/EffectiveStmtCtx.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StmtContext.java

index 0037d31c4a46e98e65bb683738f7ff51bb5fbb93..194f61f0ce4d9c4830c10b20607eabf9c6febcd2 100644 (file)
@@ -125,7 +125,7 @@ abstract class AbstractResumedStatement<A, D extends DeclaredStatement<A>, E ext
     }
 
     @Override
-    public final D buildDeclared() {
+    public final D declared() {
         final D existing;
         return (existing = declaredInstance) != null ? existing : loadDeclared();
     }
index cd8950a29405fce416e676ff04ba37c7ec941baa..bdbbe0dc2e44296c474897a2c5aa27839ee47262 100644 (file)
@@ -66,7 +66,7 @@ final class BaseCurrentEffectiveStmtCtx<A, D extends DeclaredStatement<A>> imple
 
     @Override
     public D declared() {
-        return delegate.buildDeclared();
+        return delegate.declared();
     }
 
     @Override
index 5f0d52ac72100e37de93a2cb8edea07fb2423759..9ceacb93227757c40085814d4df57469d060f534 100644 (file)
@@ -238,7 +238,7 @@ final class BuildGlobalContext extends NamespaceStorageSupport implements Regist
         checkState(finishedPhase == ModelProcessingPhase.EFFECTIVE_MODEL);
         final List<DeclaredStatement<?>> rootStatements = new ArrayList<>(sources.size());
         for (final SourceSpecificContext source : sources) {
-            rootStatements.add(source.getRoot().buildDeclared());
+            rootStatements.add(source.getRoot().declared());
         }
         return new ReactorDeclaredModel(rootStatements);
     }
@@ -281,7 +281,7 @@ final class BuildGlobalContext extends NamespaceStorageSupport implements Regist
             for (final SourceSpecificContext source : sources) {
                 final RootStatementContext<?, ?, ?> root = source.getRoot();
                 try {
-                    rootStatements.add(root.buildDeclared());
+                    rootStatements.add(root.declared());
                     rootEffectiveStatements.add(root.buildEffective());
                 } catch (final RuntimeException ex) {
                     throw propagateException(source, ex);
index ffc510290f93baaf8023465b56f847047f781e1d..14efedcb21d43373a336eee294c085367c2f580c 100644 (file)
@@ -144,12 +144,12 @@ final class InferredStatementContext<A, D extends DeclaredStatement<A>, E extend
     }
 
     @Override
-    public D buildDeclared() {
+    public D declared() {
         /*
          * Share original instance of declared statement between all effective statements which have been copied or
          * derived from this original declared statement.
          */
-        return originalCtx.buildDeclared();
+        return originalCtx.declared();
     }
 
     @Override
index 5edde2ffd80a3b391b6c6d86331cce5b11fb27a7..a4e5067c19d0743637589b678ec5cea899f82127 100644 (file)
@@ -181,7 +181,7 @@ final class ModifierImpl implements ModelActionBuilder {
     @Override
     public <D extends DeclaredStatement<?>> Prerequisite<D> requiresDeclared(
             final StmtContext<?, ? extends D, ?> context) {
-        return requiresCtxImpl(context, FULL_DECLARATION).transform(StmtContext::buildDeclared);
+        return requiresCtxImpl(context, FULL_DECLARATION).transform(StmtContext::declared);
     }
 
     @Override
@@ -190,7 +190,7 @@ final class ModifierImpl implements ModelActionBuilder {
             requiresDeclared(final StmtContext<?, ?, ?> context, final Class<N> namespace, final K key) {
         final AbstractPrerequisite<StmtContext<?, D, ?>> rawContext = requiresCtxImpl(context, namespace, key,
             FULL_DECLARATION);
-        return rawContext.transform(StmtContext::buildDeclared);
+        return rawContext.transform(StmtContext::declared);
     }
 
     @Override
index 1f4ba0355af8413940a69d862db369f4dd40e0ac..2abf8315b1416d61747bb220199ed63506cad827 100644 (file)
@@ -59,7 +59,7 @@ abstract class ReactorStmtCtx<A, D extends DeclaredStatement<A>, E extends Effec
     /**
      * Substatement refcount tracking. This mechanics deals with retaining substatements for the purposes of
      * instantiating their lazy copies in InferredStatementContext. It works in concert with {@link #buildEffective()}
-     * and {@link #buildDeclared()}: declared/effective statement views hold an implicit reference and refcount-based
+     * and {@link #declared()}: declared/effective statement views hold an implicit reference and refcount-based
      * sweep is not activated until they are done (or this statement is not {@link #isSupportedToBuildEffective}).
      *
      * <p>
@@ -283,7 +283,7 @@ abstract class ReactorStmtCtx<A, D extends DeclaredStatement<A>, E extends Effec
         // 'input', which are implicitly defined.
         // Our implementation design makes an invariant assumption that buildDeclared() has been called by the time
         // we attempt to create effective statement:
-        buildDeclared();
+        declared();
 
         final E ret = effectiveInstance = createEffective();
         // we have called createEffective(), substatements are no longer guarded by us. Let's see if we can clear up
index 9a9360f8fc40bbc7a04bdcf40c99474183180d80..c6ae880d95c9fcbd5c1801d36795a54191f2d57c 100644 (file)
@@ -53,8 +53,8 @@ final class ReplicaStatementContext<A, D extends DeclaredStatement<A>, E extends
     }
 
     @Override
-    public D buildDeclared() {
-        return source.buildDeclared();
+    public D declared() {
+        return source.declared();
     }
 
     @Override
index 2c01e00025be22ee569d289ad10c45fef41252a8..785a1f194be32f6b0e385a0d915abdbf5cedfa9c 100644 (file)
@@ -48,7 +48,7 @@ public abstract class BaseStatementSupport<A, D extends DeclaredStatement<A>,
     @Override
     public final D createDeclared(final StmtContext<A, D, ?> ctx) {
         final ImmutableList<? extends DeclaredStatement<?>> substatements = ctx.declaredSubstatements().stream()
-                .map(StmtContext::buildDeclared)
+                .map(StmtContext::declared)
                 .collect(ImmutableList.toImmutableList());
         return substatements.isEmpty() ? createEmptyDeclared(ctx) : createDeclared(ctx, substatements);
     }
index d2128d199c44394b6a8ad3cc1e0dafc621c82c1a..1fae1326a313c476816725953b00e04dd363a079 100644 (file)
@@ -39,7 +39,7 @@ public abstract class AbstractDeclaredStatement<A> implements DeclaredStatement<
          * original collection, which may contains references to mutable context.
          */
         substatements = ImmutableList.copyOf(Collections2.transform(context.declaredSubstatements(),
-            StmtContext::buildDeclared));
+            StmtContext::declared));
     }
 
     @Override
diff --git a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/BoundStmtCtxCompat.java b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/BoundStmtCtxCompat.java
new file mode 100644 (file)
index 0000000..52b16bf
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (c) 2020 PANTHEON.tech, 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.parser.spi.meta;
+
+import com.google.common.annotations.Beta;
+import org.eclipse.jdt.annotation.NonNull;
+import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
+
+/**
+ * Intermediate compatibility interface between {@link StmtContext} and {@link EffectiveStmtCtx.Current}.
+ *
+ * @param <A> Argument type
+ * @param <D> Class representing declared version of this statement
+ */
+@Beta
+public interface BoundStmtCtxCompat<A, D extends DeclaredStatement<A>> extends BoundStmtCtx<A>, StmtContextCompat {
+    /**
+     * Returns the {@link DeclaredStatement} view of this statement.
+     */
+    @NonNull D declared();
+}
index 5e52a77f29810535d47315f7aa7e08243479b651..4e9576706f2697b5ec60b3c8f2f1968cd4d362fa 100644 (file)
@@ -77,12 +77,10 @@ public interface EffectiveStmtCtx extends CommonStmtCtx, StmtContextCompat, Immu
      * @param <D> Class representing declared version of this statement
      */
     @Beta
-    interface Current<A, D extends DeclaredStatement<A>> extends Parent, BoundStmtCtx<A>, NamespaceStmtCtx {
+    interface Current<A, D extends DeclaredStatement<A>> extends Parent, NamespaceStmtCtx, BoundStmtCtxCompat<A, D> {
 
         @NonNull CommonStmtCtx root();
 
-        @NonNull D declared();
-
         @Nullable EffectiveStatement<?, ?> original();
 
         /**
index f8a537394ed2f886514390f319a2524a6bff8863..706a3aa4974f0d744d03759d272d09af4395e7f0 100644 (file)
@@ -36,7 +36,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.StatementSourceReferenc
  * @param <E> Effective Statement representation
  */
 public interface StmtContext<A, D extends DeclaredStatement<A>, E extends EffectiveStatement<A, D>>
-        extends BoundStmtCtx<A>, NamespaceStmtCtx, StmtContextCompat {
+        extends NamespaceStmtCtx, BoundStmtCtxCompat<A, D> {
     @Deprecated(forRemoval = true)
     default @NonNull StatementDefinition getPublicDefinition() {
         return publicDefinition();
@@ -149,11 +149,6 @@ public interface StmtContext<A, D extends DeclaredStatement<A>, E extends Effect
         return Streams.concat(declaredSubstatements().stream(), effectiveSubstatements().stream());
     }
 
-    /**
-     * Builds {@link DeclaredStatement} for statement context.
-     */
-    D buildDeclared();
-
     /**
      * Builds {@link EffectiveStatement} for statement context.
      */