From 712c3ae6a666023f8febb1c7eb7c72ede2e31022 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 27 Jan 2021 11:06:52 +0100 Subject: [PATCH] Make CopyHistory implement CopyableNode We have a few call sites checking the same thing. Make a strong connection between CopyableNode and CopyHistory -- centralizing checks and providing an opportunity for optimization. CopyHistory.contains() now exists only for testing purposes. JIRA: YANGTOOLS-1215 Change-Id: Ibc9cebe4bee6c5818570c52415c3d8a5ba1ff19d Signed-off-by: Robert Varga (cherry picked from commit 62c350eff478deeaa90ab0304cdc9c3623c01c83) --- .../stmt/EffectiveStatementMixins.java | 17 ++------------- .../stmt/UnknownEffectiveStatementBase.java | 10 ++------- .../yang/parser/spi/meta/CopyHistory.java | 21 ++++++++++++++++++- 3 files changed, 24 insertions(+), 24 deletions(-) diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java index e16d066b49..5e0331da7d 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/EffectiveStatementMixins.java @@ -56,7 +56,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ReferenceEffectiveStatemen import org.opendaylight.yangtools.yang.model.api.stmt.TypedefEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.WhenEffectiveStatement; import org.opendaylight.yangtools.yang.parser.spi.meta.CopyHistory; -import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType; import org.opendaylight.yangtools.yang.xpath.api.YangXPathExpression.QualifiedBound; /** @@ -482,20 +481,8 @@ public final class EffectiveStatementMixins { } public FlagsBuilder setHistory(final CopyHistory history) { - int bits; - if (history.contains(CopyType.ADDED_BY_USES_AUGMENTATION)) { - bits = AUGMENTING | ADDED_BY_USES; - } else { - bits = 0; - if (history.contains(CopyType.ADDED_BY_AUGMENTATION)) { - bits |= AUGMENTING; - } - if (history.contains(CopyType.ADDED_BY_USES)) { - bits |= ADDED_BY_USES; - } - } - - flags = flags & ~MASK_HISTORY | bits; + flags = flags & ~MASK_HISTORY + | (history.isAugmenting() ? AUGMENTING : 0) | (history.isAddedByUses() ? ADDED_BY_USES : 0); return this; } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java index c0c019d8ac..8c861a1d20 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/UnknownEffectiveStatementBase.java @@ -19,7 +19,6 @@ import org.opendaylight.yangtools.yang.model.api.stmt.ExtensionStatement; import org.opendaylight.yangtools.yang.model.api.stmt.UnknownStatement; import org.opendaylight.yangtools.yang.parser.spi.ExtensionNamespace; import org.opendaylight.yangtools.yang.parser.spi.meta.CopyHistory; -import org.opendaylight.yangtools.yang.parser.spi.meta.CopyType; import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext; public abstract class UnknownEffectiveStatementBase> @@ -54,13 +53,8 @@ public abstract class UnknownEffectiveStatementBase