Use StatementPolicy instead of CopyPolicy 89/94089/52
authorRobert Varga <robert.varga@pantheon.tech>
Tue, 19 Jan 2021 22:16:40 +0000 (23:16 +0100)
committerRobert Varga <robert.varga@pantheon.tech>
Wed, 20 Jan 2021 07:31:32 +0000 (08:31 +0100)
All of the outstanding CopyPolicy users need a careful audit,
this patch creates a focal point in
StatementPolicy.legacyDeclaredCopy() and its modern equivalent
in StatementPolicy.alwaysCopyDeclared().

Statements will be gradually migrated away to the appropriate
policy in follow-up patches.

JIRA: YANGTOOLS-1195
Change-Id: I1c97ecb625528971e4ee7493c01d68ab852a03d4
Signed-off-by: miroslav.kovac <miroslav.kovac@pantheon.tech>
Signed-off-by: Michal Banik <michal.banik@pantheon.tech>
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
36 files changed:
yang/odlext-parser-support/src/main/java/org/opendaylight/yangtools/odlext/parser/AnyxmlSchemaLocationStatementSupport.java
yang/rfc8528-parser-support/src/main/java/org/opendaylight/yangtools/rfc8528/parser/MountPointStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseImplicitStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseOperationContainerStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/BaseSchemaTreeStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/action/ActionStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anydata/AnydataStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/anyxml/AnyxmlStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/augment/AbstractAugmentStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/case_/CaseStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/choice/ChoiceStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/container/ContainerStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/ModelDefinedStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/extension/UnrecognizedStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/grouping/GroupingStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/input/InputStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf/LeafStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/leaf_list/LeafListStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/list/ListStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/notification/AbstractNotificationStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/output/OutputStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/refine/RefineStatementSupport.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
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/unique/UniqueStatementSupport.java
yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/uses/UsesStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractQNameStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/AbstractStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/ForwardingStatementSupport.java
yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java

index 40d6bce0435327741e955e73be001fc49dab192f..2fc2284d854a0977521aa29e9e1ef150234edb5f 100644 (file)
@@ -32,7 +32,7 @@ public final class AnyxmlSchemaLocationStatementSupport
     private final SubstatementValidator validator;
 
     private AnyxmlSchemaLocationStatementSupport(final StatementDefinition definition) {
-        super(definition, CopyPolicy.DECLARED_COPY);
+        super(definition, StatementPolicy.legacyDeclaredCopy());
         validator = SubstatementValidator.builder(definition).build();
     }
 
index 28fba38eeb476ee1308fcc3d9761958978518cd7..c438f84662f669bd53bbe553f7d0c2b91820d828 100644 (file)
@@ -76,7 +76,7 @@ public final class MountPointStatementSupport
     private final SubstatementValidator validator;
 
     MountPointStatementSupport(final StatementDefinition definition) {
-        super(definition, CopyPolicy.DECLARED_COPY);
+        super(definition, StatementPolicy.legacyDeclaredCopy());
         this.validator = SubstatementValidator.builder(definition)
                 .addOptional(YangStmtMapping.CONFIG)
                 .addOptional(YangStmtMapping.DESCRIPTION)
index 5df985886dedaeba749148f6b7685af86c7474e2..34d9bce92365d34ff0c3b8d0a8e7945dd2cfb2bf 100644 (file)
@@ -28,8 +28,9 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 @Beta
 public abstract class BaseImplicitStatementSupport<D extends DeclaredStatement<QName>,
         E extends SchemaTreeEffectiveStatement<D>> extends BaseSchemaTreeStatementSupport<D, E> {
-    protected BaseImplicitStatementSupport(final StatementDefinition publicDefinition, final CopyPolicy copyPolicy) {
-        super(publicDefinition, copyPolicy);
+    protected BaseImplicitStatementSupport(final StatementDefinition publicDefinition,
+            final StatementPolicy<QName, D> policy) {
+        super(publicDefinition, policy);
     }
 
     @Override
index 0abe7eb308b6bbdff89e1a3c18c72a3ff64db17f..580b999540bb8a6abecaadef37da5b24e6aa3bd4 100644 (file)
@@ -37,8 +37,8 @@ public abstract class BaseOperationContainerStatementSupport<D extends DeclaredS
     private final Function<QNameModule, QName> createArgument;
 
     protected BaseOperationContainerStatementSupport(final StatementDefinition publicDefinition,
-            final Function<QNameModule, QName> createArgument, final CopyPolicy copyPolicy) {
-        super(publicDefinition, copyPolicy);
+            final Function<QNameModule, QName> createArgument) {
+        super(publicDefinition, StatementPolicy.legacyDeclaredCopy());
         this.createArgument = requireNonNull(createArgument);
     }
 
index 8145894fc735ea164e63d81e68186509b5d5aa51..70bc25ade362204cd883422d5fa804272a48fbbd 100644 (file)
@@ -31,11 +31,6 @@ public abstract class BaseSchemaTreeStatementSupport<D extends DeclaredStatement
         super(publicDefinition, policy);
     }
 
-    @Deprecated
-    protected BaseSchemaTreeStatementSupport(final StatementDefinition publicDefinition, final CopyPolicy copyPolicy) {
-        super(publicDefinition, copyPolicy);
-    }
-
     /**
      * {@inheritDoc}
      *
index 78497dd50b9dfaffdee455001c63b076cf093c7f..6e240e5596fc878cd53b53ee680681cde8470092 100644 (file)
@@ -54,7 +54,7 @@ public final class ActionStatementSupport extends
     private static final ActionStatementSupport INSTANCE = new ActionStatementSupport();
 
     private ActionStatementSupport() {
-        super(YangStmtMapping.ACTION, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.ACTION, StatementPolicy.legacyDeclaredCopy());
     }
 
     public static ActionStatementSupport getInstance() {
index 07aebbfa49667c6f188fd443e2a0944d0aeb14ab..fe166e057df9296b156fd9858cb18db853e17634 100644 (file)
@@ -42,7 +42,7 @@ public final class AnydataStatementSupport
     private static final AnydataStatementSupport INSTANCE = new AnydataStatementSupport();
 
     private AnydataStatementSupport() {
-        super(YangStmtMapping.ANYDATA, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.ANYDATA, StatementPolicy.legacyDeclaredCopy());
     }
 
     public static AnydataStatementSupport getInstance() {
index 7f907b513e0f69524ac9c9857a61aa8071fea380..1b57bbede76bda3a0b811a14e7d005dcfb50385a 100644 (file)
@@ -42,7 +42,7 @@ public final class AnyxmlStatementSupport
     private static final AnyxmlStatementSupport INSTANCE = new AnyxmlStatementSupport();
 
     private AnyxmlStatementSupport() {
-        super(YangStmtMapping.ANYXML, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.ANYXML, StatementPolicy.legacyDeclaredCopy());
     }
 
     public static AnyxmlStatementSupport getInstance() {
index 2431eb42992957e1250d925e09bc4c850154c070..92ba483d67e890284968132d128ccd12291534c0 100644 (file)
@@ -48,7 +48,7 @@ abstract class AbstractAugmentStatementSupport
     private static final Pattern PATH_REL_PATTERN2 = Pattern.compile("//.*");
 
     AbstractAugmentStatementSupport() {
-        super(YangStmtMapping.AUGMENT, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.AUGMENT, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index c03db49e7168683f0216855c4034d450416f9e1f..544a7c6cea99f624929b497a10b270c43537cb0d 100644 (file)
@@ -73,7 +73,7 @@ public final class CaseStatementSupport
     private final SubstatementValidator validator;
 
     private CaseStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.CASE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.CASE, StatementPolicy.legacyDeclaredCopy());
         this.validator = requireNonNull(validator);
     }
 
index c0fb3c77f9d22a233e44e7c2dc359ccdc8a40c69..9ec26068213a787fc8edb7ee390824d46b3896f2 100644 (file)
@@ -85,9 +85,8 @@ public final class ChoiceStatementSupport
     private final SubstatementValidator validator;
     private final CaseStatementSupport implicitCase;
 
-    private ChoiceStatementSupport(final SubstatementValidator validator,
-            final CaseStatementSupport implicitCase) {
-        super(YangStmtMapping.CHOICE, CopyPolicy.DECLARED_COPY);
+    private ChoiceStatementSupport(final SubstatementValidator validator, final CaseStatementSupport implicitCase) {
+        super(YangStmtMapping.CHOICE, StatementPolicy.legacyDeclaredCopy());
         this.validator = requireNonNull(validator);
         this.implicitCase = requireNonNull(implicitCase);
     }
index e99d65bcb3e2ff85f8b77ad5727d44ff4fe7cb62..f980c86d0244856f0fafabf6cd4aa711a9c99a11 100644 (file)
@@ -83,7 +83,7 @@ public final class ContainerStatementSupport
     private final SubstatementValidator validator;
 
     private ContainerStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.CONTAINER, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.CONTAINER, StatementPolicy.legacyDeclaredCopy());
         this.validator = requireNonNull(validator);
     }
 
index 02be149702b86cc5f7786a6b3060e0e3daac0260..c3e307da4a3f48fa73f8e1960e3e87bafa7aac7b 100644 (file)
@@ -28,7 +28,7 @@ final class ModelDefinedStatementSupport
     private final UnrecognizedStatementSupport definition;
 
     ModelDefinedStatementSupport(final ModelDefinedStatementDefinition publicDefinition) {
-        super(publicDefinition, CopyPolicy.DECLARED_COPY);
+        super(publicDefinition, StatementPolicy.legacyDeclaredCopy());
         this.definition = new UnrecognizedStatementSupport(publicDefinition);
     }
 
index b899b2c994d52f8e1a551d5f1b15169041c97543..fb13f4cead29b760ebe916fede3f46b13e9a7cec 100644 (file)
@@ -29,7 +29,7 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.SubstatementValidator;
 final class UnrecognizedStatementSupport
         extends AbstractStatementSupport<String, UnrecognizedStatement, UnrecognizedEffectiveStatement> {
     UnrecognizedStatementSupport(final StatementDefinition publicDefinition) {
-        super(publicDefinition, CopyPolicy.DECLARED_COPY);
+        super(publicDefinition, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index 8a5e4f162e110c92644e338bda47dd1d3fd8584c..68ab5afcd3986fe3e2037eae9a794b8c7f822a49 100644 (file)
@@ -75,7 +75,7 @@ public final class GroupingStatementSupport
     private final SubstatementValidator validator;
 
     GroupingStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.GROUPING, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.GROUPING, StatementPolicy.legacyDeclaredCopy());
         this.validator = requireNonNull(validator);
     }
 
index d0f778f5e32182639c49539536d8a4c57928533c..08864a13e5f1a84c1123b0e572d876ffb52e00fa 100644 (file)
@@ -60,7 +60,7 @@ public final class InputStatementSupport
     private final SubstatementValidator validator;
 
     private InputStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.INPUT, YangConstants::operationInputQName, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.INPUT, YangConstants::operationInputQName);
         this.validator = requireNonNull(validator);
     }
 
index 0b89b5b5c3ee970edc512c3324b2b407e72d8ea5..d24b6f3e111d9e8c2ca4d2f4aa7c01a9e5d826ad 100644 (file)
@@ -49,7 +49,7 @@ public final class LeafStatementSupport extends BaseSchemaTreeStatementSupport<L
     private static final LeafStatementSupport INSTANCE = new LeafStatementSupport();
 
     private LeafStatementSupport() {
-        super(YangStmtMapping.LEAF, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.LEAF, StatementPolicy.legacyDeclaredCopy());
     }
 
     public static LeafStatementSupport getInstance() {
index 24ab927a2965f60b6238da025b84f677e00bfcbf..6726343a33ee9e1ee45164e563a076e7bdf0ead4 100644 (file)
@@ -76,7 +76,7 @@ public final class LeafListStatementSupport
     private final SubstatementValidator validator;
 
     private LeafListStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.LEAF_LIST, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.LEAF_LIST, StatementPolicy.legacyDeclaredCopy());
         this.validator = requireNonNull(validator);
     }
 
index 2fa286c3f2ade34fb03a53e26e101f766e64b552..8a450c84683a2f2945814f91680035fdd6afcb78 100644 (file)
@@ -113,7 +113,7 @@ public final class ListStatementSupport extends BaseSchemaTreeStatementSupport<L
     private final SubstatementValidator validator;
 
     ListStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.LIST, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.LIST, StatementPolicy.legacyDeclaredCopy());
         this.validator = requireNonNull(validator);
     }
 
index 5e3eec0439010f99214333ab23bd2529658bf6fa..fb587a1f2c3705e75cdc15a80d48f0093ab6ae06 100644 (file)
@@ -24,7 +24,7 @@ import org.opendaylight.yangtools.yang.parser.spi.source.SourceException;
 abstract class AbstractNotificationStatementSupport
         extends BaseSchemaTreeStatementSupport<NotificationStatement, NotificationEffectiveStatement> {
     AbstractNotificationStatementSupport() {
-        super(YangStmtMapping.NOTIFICATION, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.NOTIFICATION, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index 7905ac09256c7fbd6ab0dd1d97f528bfe117d144..9ac6b4a7c6fd8b5446313f3303624f3a1b3b7490 100644 (file)
@@ -60,7 +60,7 @@ public final class OutputStatementSupport
     private final SubstatementValidator validator;
 
     private OutputStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.OUTPUT, YangConstants::operationOutputQName, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.OUTPUT, YangConstants::operationOutputQName);
         this.validator = requireNonNull(validator);
     }
 
index 2a54689d101bc4130d8e6fea22d08c5de07d7051..96781bd12f9115a00b42a296b8b2fea857b6342e 100644 (file)
@@ -59,7 +59,7 @@ public final class RefineStatementSupport
     private final SubstatementValidator validator;
 
     private RefineStatementSupport(final SubstatementValidator validator) {
-        super(YangStmtMapping.REFINE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.REFINE, StatementPolicy.legacyDeclaredCopy());
         this.validator = requireNonNull(validator);
     }
 
index 4eb169076680ec5c933fb28e6a204cf4ac8a0db9..a6dfe7c8433182971bb8138c091d2b76ab6d5583 100644 (file)
@@ -35,7 +35,7 @@ abstract class AbstractIdentityRefSpecificationSupport
         extends AbstractStatementSupport<String, IdentityRefSpecification,
             EffectiveStatement<String, IdentityRefSpecification>> {
     AbstractIdentityRefSpecificationSupport() {
-        super(YangStmtMapping.TYPE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index d76d4e61c91236073176fb4f541ccf927246d2df..fc9c79a6fd798bd7d7e35a60e360b503c262e6dc 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, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index bf1ff1a91d7e7e59c8a14c03dfa5ead29b902826..cc8059af9e3527b5765e6b674b6dc6dbff4f76b1 100644 (file)
@@ -155,7 +155,7 @@ abstract class AbstractTypeStatementSupport
 
     AbstractTypeStatementSupport() {
         // FIXME: can a type statement be copied?
-        super(YangStmtMapping.TYPE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index f4fe82db3aa96ec796602bfd013fd21a0164b530..182d247d3da85af7f9e79e1487cde2464e25f912 100644 (file)
@@ -33,7 +33,7 @@ final class BitsSpecificationSupport
         .build();
 
     BitsSpecificationSupport() {
-        super(YangStmtMapping.TYPE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index 5853c038979c4301f2152293b4d541225bf20efc..3280daf2100b110a690a1024d9d39ee2b7ff0b17 100644 (file)
@@ -32,7 +32,7 @@ final class Decimal64SpecificationSupport extends AbstractStatementSupport<Strin
         .build();
 
     Decimal64SpecificationSupport() {
-        super(YangStmtMapping.TYPE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index ff174e86b79496739c2147ab6c425a52f99175af..7267e0590aea76bbb5f5c9808184c5cd8883934c 100644 (file)
@@ -31,7 +31,7 @@ final class EnumSpecificationSupport
             SubstatementValidator.builder(YangStmtMapping.TYPE).addMultiple(YangStmtMapping.ENUM).build();
 
     EnumSpecificationSupport() {
-        super(YangStmtMapping.TYPE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index 5e4dca022ba5b3a7ce89106f0dbb732d1595c84e..faf68b70da4025409fbbe5bfe8788c770a7ccf2c 100644 (file)
@@ -29,7 +29,7 @@ final class InstanceIdentifierSpecificationSupport extends AbstractStatementSupp
         .build();
 
     InstanceIdentifierSpecificationSupport() {
-        super(YangStmtMapping.TYPE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index 3ddcb878864a993d57ee49dafa6b446aa33dc8b4..a28d9e7943658bee34d94d3b70a6e6b29842d524 100644 (file)
@@ -31,7 +31,7 @@ final class UnionSpecificationSupport
         .build();
 
     UnionSpecificationSupport() {
-        super(YangStmtMapping.TYPE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.TYPE, StatementPolicy.legacyDeclaredCopy());
     }
 
     @Override
index ee4a467369e87cf6afa9f271286865883aa9418c..179c7d2516ff9f22448152f365b086e55d41ad45 100644 (file)
@@ -45,7 +45,7 @@ public final class UniqueStatementSupport
     private static final UniqueStatementSupport INSTANCE = new UniqueStatementSupport();
 
     private UniqueStatementSupport() {
-        super(YangStmtMapping.UNIQUE, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.UNIQUE, StatementPolicy.legacyDeclaredCopy());
     }
 
     public static UniqueStatementSupport getInstance() {
index 778353b69c28abc59592a8ff6478c48d9bcc418c..72cf842b13a026791285276115cff06a49ccd1e0 100644 (file)
@@ -79,7 +79,7 @@ public final class UsesStatementSupport
     private static final UsesStatementSupport INSTANCE = new UsesStatementSupport();
 
     private UsesStatementSupport() {
-        super(YangStmtMapping.USES, CopyPolicy.DECLARED_COPY);
+        super(YangStmtMapping.USES, StatementPolicy.legacyDeclaredCopy());
     }
 
     public static UsesStatementSupport getInstance() {
index 1de79efc36395c5e7cd65fbbe6bd43be64ab10df..23497bf77c8737032905f2beda96bf54d89b2ca9 100644 (file)
@@ -28,11 +28,6 @@ public abstract class AbstractQNameStatementSupport<D extends DeclaredStatement<
         super(publicDefinition, policy);
     }
 
-    @Deprecated
-    protected AbstractQNameStatementSupport(final StatementDefinition publicDefinition, final CopyPolicy copyPolicy) {
-        super(publicDefinition, copyPolicy);
-    }
-
     @Override
     public QName adaptArgumentValue(final StmtContext<QName, D, E> ctx, final QNameModule targetModule) {
         return ctx.getArgument().bindTo(targetModule).intern();
index de120775d3191a86178159ebedbbe9dc9125304b..e564e68ac4498da70667388e92413b65960928da 100644 (file)
@@ -34,11 +34,6 @@ import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current;
 @Beta
 public abstract class AbstractStatementSupport<A, D extends DeclaredStatement<A>,
         E extends EffectiveStatement<A, D>> extends StatementSupport<A, D, E> {
-    @Deprecated
-    protected AbstractStatementSupport(final StatementDefinition publicDefinition, final CopyPolicy copyPolicy) {
-        super(publicDefinition, copyPolicy);
-    }
-
     protected AbstractStatementSupport(final StatementDefinition publicDefinition, final StatementPolicy<A, D> policy) {
         super(publicDefinition, policy);
     }
index 7597410e4119a58d75ccc0a54486dc932a4f1b68..8f2cdb9a48f02b8a7ff485847d3299aed04bc414 100644 (file)
@@ -30,7 +30,7 @@ public abstract class ForwardingStatementSupport<A, D extends DeclaredStatement<
     private final StatementSupport<A, D, E> delegate;
 
     protected ForwardingStatementSupport(final StatementSupport<A, D, E> delegate) {
-        super(delegate.getPublicView(), delegate.copyPolicy());
+        super(delegate);
         this.delegate = delegate;
     }
 
index 51cf20b158c7565b0500e3ebaee6599e4adfcf9b..241e208aa545cfa0c373cb1b30d27a0d2cf6b387 100644 (file)
@@ -55,7 +55,7 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
         }
 
         /**
-         * Return an {@link StatementPolicy} for {@link CopyPolicy#CONTEXT_INDEPENDENT}.
+         * Return a {@link StatementPolicy} for {@link CopyPolicy#CONTEXT_INDEPENDENT}.
          *
          * @param <A> Argument type
          * @param <D> Declared Statement representation
@@ -63,11 +63,11 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
          */
         @SuppressWarnings("unchecked")
         public static final <A, D extends DeclaredStatement<A>> @NonNull StatementPolicy<A, D> contextIndependent() {
-            return (StatementPolicy<A, D>) AlwaysReuse.CONTEXT_INDEPENDENT;
+            return (StatementPolicy<A, D>) EqualSemantics.CONTEXT_INDEPENDENT;
         }
 
         /**
-         * Return an {@link StatementPolicy} for {@link CopyPolicy#IGNORE}.
+         * Return a {@link StatementPolicy} for {@link CopyPolicy#IGNORE}.
          *
          * @param <A> Argument type
          * @param <D> Declared Statement representation
@@ -79,7 +79,7 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
         }
 
         /**
-         * Return an {@link StatementPolicy} for {@link CopyPolicy#REJECT}.
+         * Return a {@link StatementPolicy} for {@link CopyPolicy#REJECT}.
          *
          * @param <A> Argument type
          * @param <D> Declared Statement representation
@@ -91,68 +91,39 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
         }
 
         /**
-         * Return an {@link StatementPolicy} for {@link CopyPolicy#DECLARED_COPY}, deferring to a
+         * Return a {@link StatementPolicy} for {@link CopyPolicy#DECLARED_COPY}, deferring to a
          * {@link StatementEquality} for individual decisions.
          *
          * @param <A> Argument type
          * @param <D> Declared Statement representation
          * @param equality {@link StatementEquality} to apply to effective statements
-         * @return Rejecting statement policy
+         * @return Equality-based statement policy
          */
         public static final <A, D extends DeclaredStatement<A>> @NonNull StatementPolicy<A, D> copyDeclared(
                 final @NonNull StatementEquality<A, D> equality) {
             return new EqualSemantics<>(equality);
         }
 
-        abstract boolean canReuseCurrent(@NonNull Current<A, D> copy, @NonNull Current<A, D> current,
-            @NonNull Collection<? extends EffectiveStatement<?, ?>> substatements);
-
-        @Deprecated
+        /**
+         * Return a {@link StatementPolicy} for {@link CopyPolicy#DECLARED_COPY}, always performing a copy operation.
+         *
+         * @param <A> Argument type
+         * @param <D> Declared Statement representation
+         * @return Rejecting statement policy
+         */
         @SuppressWarnings("unchecked")
-        static <A, D extends DeclaredStatement<A>> StatementPolicy<A, D> compat(final CopyPolicy copyPolicy) {
-            switch (copyPolicy) {
-                case CONTEXT_INDEPENDENT:
-                    return contextIndependent();
-                case DECLARED_COPY:
-                    return (StatementPolicy<A, D>) AlwaysCopy.DECLARED_COPY;
-                case IGNORE:
-                    return ignore();
-                case REJECT:
-                    return reject();
-                default:
-                    throw new IllegalStateException("Unsupported policy " + copyPolicy);
-            }
+        public static final <A, D extends DeclaredStatement<A>> @NonNull StatementPolicy<A, D> alwaysCopyDeclared() {
+            return (StatementPolicy<A, D>) EqualSemantics.ALWAYS_COPY;
         }
 
-        private static final class AlwaysCopy<A, D extends DeclaredStatement<A>> extends StatementPolicy<A, D> {
-            @Deprecated
-            static final @NonNull AlwaysCopy<?, ?> DECLARED_COPY = new AlwaysCopy<>(CopyPolicy.DECLARED_COPY);
-
-            AlwaysCopy(final CopyPolicy copyPolicy) {
-                super(copyPolicy);
-            }
-
-            @Override
-            boolean canReuseCurrent(final Current<A, D> copy, final Current<A, D> current,
-                    final Collection<? extends EffectiveStatement<?, ?>> substatements) {
-                return false;
-            }
+        @Deprecated(forRemoval = true)
+        // FIXME: 7.0.0: remove this method
+        public static final <A, D extends DeclaredStatement<A>> @NonNull StatementPolicy<A, D> legacyDeclaredCopy() {
+            return alwaysCopyDeclared();
         }
 
-        private static final class AlwaysReuse<A, D extends DeclaredStatement<A>> extends StatementPolicy<A, D> {
-            static final @NonNull AlwaysReuse<?, ?> CONTEXT_INDEPENDENT =
-                new AlwaysReuse<>(CopyPolicy.CONTEXT_INDEPENDENT);
-
-            private AlwaysReuse(final CopyPolicy copyPolicy) {
-                super(copyPolicy);
-            }
-
-            @Override
-            boolean canReuseCurrent(final Current<A, D> copy, final Current<A, D> current,
-                    final Collection<? extends EffectiveStatement<?, ?>> substatements) {
-                return true;
-            }
-        }
+        abstract boolean canReuseCurrent(@NonNull Current<A, D> copy, @NonNull Current<A, D> current,
+            @NonNull Collection<? extends EffectiveStatement<?, ?>> substatements);
 
         private static final class AlwaysFail<A, D extends DeclaredStatement<A>> extends StatementPolicy<A, D> {
             static final @NonNull AlwaysFail<?, ?> IGNORE = new AlwaysFail<>(CopyPolicy.IGNORE);
@@ -170,13 +141,22 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
         }
 
         private static final class EqualSemantics<A, D extends DeclaredStatement<A>> extends StatementPolicy<A, D> {
+            static final @NonNull EqualSemantics<?, ?> ALWAYS_COPY =
+                new EqualSemantics<>((copy, stmt, substatements) -> false);
+            static final @NonNull EqualSemantics<?, ?> CONTEXT_INDEPENDENT =
+                new EqualSemantics<>(CopyPolicy.CONTEXT_INDEPENDENT, (copy, stmt, substatements) -> true);
+
             private final @NonNull StatementEquality<A, D> equality;
 
-            EqualSemantics(final @NonNull StatementEquality<A, D> equality) {
-                super(CopyPolicy.DECLARED_COPY);
+            private EqualSemantics(final CopyPolicy copyPolicy, final StatementEquality<A, D> equality) {
+                super(copyPolicy);
                 this.equality = requireNonNull(equality);
             }
 
+            EqualSemantics(final StatementEquality<A, D> equality) {
+                this(CopyPolicy.DECLARED_COPY, equality);
+            }
+
             @Override
             boolean canReuseCurrent(final Current<A, D> copy, final Current<A, D> current,
                     final Collection<? extends EffectiveStatement<?, ?>> substatements) {
@@ -211,6 +191,14 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
     private final @NonNull StatementDefinition def;
     private final @NonNull CopyPolicy copyPolicy;
 
+    @Beta
+    protected StatementSupport(final StatementSupport<A, D, E> delegate) {
+        checkArgument(delegate != this);
+        this.def = delegate.def;
+        this.policy = delegate.policy;
+        this.copyPolicy = delegate.copyPolicy;
+    }
+
     @Beta
     protected StatementSupport(final StatementDefinition publicDefinition, final StatementPolicy<A, D> policy) {
         checkArgument(publicDefinition != this);
@@ -219,13 +207,6 @@ public abstract class StatementSupport<A, D extends DeclaredStatement<A>, E exte
         this.copyPolicy = policy.copyPolicy;
     }
 
-    @Beta
-    @Deprecated
-    // FIXME: remove this constructor
-    protected StatementSupport(final StatementDefinition publicDefinition, final CopyPolicy copyPolicy) {
-        this(publicDefinition, StatementPolicy.compat(copyPolicy));
-    }
-
     /**
      * Returns public statement definition, which will be present in built statements.
      *