X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-parser-spi%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fparser%2Fspi%2Fmeta%2FStatementSupport.java;h=23cd6c7d965c890286884c3a80c526a0d3cd88e9;hb=df326b64c49ebea6db0d7d644492faddf8c2d6de;hp=241e208aa545cfa0c373cb1b30d27a0d2cf6b387;hpb=0c1076e6048c576f6cf9064d9e2ee6d921711b98;p=yangtools.git diff --git a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java index 241e208aa5..23cd6c7d96 100644 --- a/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java +++ b/yang/yang-parser-spi/src/main/java/org/opendaylight/yangtools/yang/parser/spi/meta/StatementSupport.java @@ -66,6 +66,18 @@ public abstract class StatementSupport, E exte return (StatementPolicy) EqualSemantics.CONTEXT_INDEPENDENT; } + /** + * Return a {@link StatementPolicy} for {@link CopyPolicy#EXACT_REPLICA}. + * + * @param Argument type + * @param Declared Statement representation + * @return Exact-replica policy + */ + @SuppressWarnings("unchecked") + public static final > @NonNull StatementPolicy exactReplica() { + return (StatementPolicy) EqualSemantics.EXACT_REPLICA; + } + /** * Return a {@link StatementPolicy} for {@link CopyPolicy#IGNORE}. * @@ -116,12 +128,6 @@ public abstract class StatementSupport, E exte return (StatementPolicy) EqualSemantics.ALWAYS_COPY; } - @Deprecated(forRemoval = true) - // FIXME: 7.0.0: remove this method - public static final > @NonNull StatementPolicy legacyDeclaredCopy() { - return alwaysCopyDeclared(); - } - abstract boolean canReuseCurrent(@NonNull Current copy, @NonNull Current current, @NonNull Collection> substatements); @@ -145,6 +151,8 @@ public abstract class StatementSupport, E exte new EqualSemantics<>((copy, stmt, substatements) -> false); static final @NonNull EqualSemantics CONTEXT_INDEPENDENT = new EqualSemantics<>(CopyPolicy.CONTEXT_INDEPENDENT, (copy, stmt, substatements) -> true); + static final @NonNull EqualSemantics EXACT_REPLICA = + new EqualSemantics<>(CopyPolicy.EXACT_REPLICA, (copy, stmt, substatements) -> true); private final @NonNull StatementEquality equality; @@ -479,6 +487,13 @@ public abstract class StatementSupport, E exte */ // TODO: does this mean source must have transitioned to ModelProcessingPhase.EFFECTIVE_MODEL? CONTEXT_INDEPENDENT, + /** + * Reuse the source statement context in the new place completely. This policy is more stringent than + * {@link #CONTEXT_INDEPENDENT} in that the statement is dependent on circumstances of its original definition + * and any copy operation must replicate it exactly as is. This implies ignoring the usual policy of its + * substatements. A typical example of such a statement is {@code type}. + */ + EXACT_REPLICA, /** * Create a copy sharing declared instance, but otherwise having a separate disconnected lifecycle. */