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 extends EffectiveStatement, ?>> 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.
*/