YangStmtMapping.TYPE implies StatementPolicy.contextIndependent() 68/94868/2
authorRobert Varga <robert.varga@pantheon.tech>
Thu, 28 Jan 2021 20:44:33 +0000 (21:44 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Thu, 28 Jan 2021 21:01:59 +0000 (22:01 +0100)
InferredStatementContext has an explicit guard to get replicas of
statements which are YangStmtMapping.TYPE. This amounts to those
statements being context-independent. Express that fact in the
policy.

This exposes an issue with 'base' statements, which in fact can
be considered for copying and are really context-indepenent, not
uncopyable.

JIRA: YANGTOOLS-1208
Change-Id: I49f0454ad11a029d217bd7fb70d23e315f37072c
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
yang/yang-parser-reactor/src/main/java/org/opendaylight/yangtools/yang/parser/stmt/reactor/InferredStatementContext.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/base/BaseStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractIdentityRefSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractLeafrefSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/AbstractTypeStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/BitsSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/Decimal64SpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/EnumSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/InstanceIdentifierSpecificationSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/type/UnionSpecificationSupport.java

index 2ef267c091e0a9a1d41223cedda16fd997d22ef2..7f73fa0c7298480428d50eb4017a1ae7733762d0 100644 (file)
@@ -520,7 +520,6 @@ final class InferredStatementContext<A, D extends DeclaredStatement<A>, E extend
     //        StatementSupport.
     // FIXME: YANGTOOLS-652: this map looks very much like UsesStatementSupport.TOP_REUSED_DEF_SET
     private static final ImmutableSet<YangStmtMapping> REUSED_DEF_SET = ImmutableSet.of(
-        YangStmtMapping.TYPE,
         YangStmtMapping.TYPEDEF,
         YangStmtMapping.USES);
 
index ef9d4c992f2121896a79d97f04a139dac4217727..3cec5e02cc1359ca1dc489c27b7e0ca400a40913 100644 (file)
@@ -36,7 +36,7 @@ public final class BaseStatementSupport extends AbstractQNameStatementSupport<Ba
     private static final BaseStatementSupport INSTANCE = new BaseStatementSupport();
 
     private BaseStatementSupport() {
-        super(YangStmtMapping.BASE, StatementPolicy.reject());
+        super(YangStmtMapping.BASE, StatementPolicy.contextIndependent());
     }
 
     public static BaseStatementSupport getInstance() {
index 6307407e3f309166ad23a602212e8d46ccfeace2..d250d5d52a5883e44de2213b6db82d2ad458919b 100644 (file)
@@ -35,7 +35,7 @@ abstract class AbstractIdentityRefSpecificationSupport
         extends AbstractStatementSupport<String, IdentityRefSpecification,
             EffectiveStatement<String, IdentityRefSpecification>> {
     AbstractIdentityRefSpecificationSupport() {
-        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent());
     }
 
     @Override
index 1a2c910644ebec9cd4e800f446fadfa6158f343a..896e9ad7cce44957acac2f622f02e75998d7519c 100644 (file)
@@ -25,7 +25,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 abstract class AbstractLeafrefSpecificationSupport extends AbstractStatementSupport<String, LeafrefSpecification,
             EffectiveStatement<String, LeafrefSpecification>> {
     AbstractLeafrefSpecificationSupport() {
-        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent());
     }
 
     @Override
index 7885d26c53b71d416d0b3680a2e12c9a10dca336..959b21678520d160887b8e2cbdd81ac57ac7a4d3 100644 (file)
@@ -151,8 +151,7 @@ abstract class AbstractTypeStatementSupport
             .build();
 
     AbstractTypeStatementSupport() {
-        // FIXME: can a type statement be copied?
-        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent());
     }
 
     @Override
index 1c69abff5a8cec72b326051179b022fa6e7ad405..6b3a250f799666b3a645227471dc0d6596edbe38 100644 (file)
@@ -33,7 +33,7 @@ final class BitsSpecificationSupport
         .build();
 
     BitsSpecificationSupport() {
-        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent());
     }
 
     @Override
index 6075243965aeaf60b5c98d37c6cf0e41d7284aa5..da5868973f04160a3c0e0f2bc76f89c3c3fff935 100644 (file)
@@ -32,7 +32,7 @@ final class Decimal64SpecificationSupport extends AbstractStatementSupport<Strin
         .build();
 
     Decimal64SpecificationSupport() {
-        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent());
     }
 
     @Override
index ff6638933d66ca3c88286f2873a45a8a6bc2887d..a63fbb58e413e6e00d8be07276a634a30781aab7 100644 (file)
@@ -31,7 +31,7 @@ final class EnumSpecificationSupport
             SubstatementValidator.builder(YangStmtMapping.TYPE).addMultiple(YangStmtMapping.ENUM).build();
 
     EnumSpecificationSupport() {
-        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent());
     }
 
     @Override
index fa0d47572dd9b7ef0f93973afe5a3ab180723eb0..006b741f11f4b33e0f0bdfcaa171ff877e1ad141 100644 (file)
@@ -29,7 +29,7 @@ final class InstanceIdentifierSpecificationSupport extends AbstractStatementSupp
         .build();
 
     InstanceIdentifierSpecificationSupport() {
-        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent());
     }
 
     @Override
index f8bc0fbc896137e07b170534a63cf47630b7a87b..44caca9ac1c2208ed35ebef4e38e12daf90d5f82 100644 (file)
@@ -31,7 +31,7 @@ final class UnionSpecificationSupport
         .build();
 
     UnionSpecificationSupport() {
-        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
+        super(YangStmtMapping.TYPE, StatementPolicy.contextIndependent());
     }
 
     @Override