From 1a3092a0df572b2abe407c66f068fb8b4a83e035 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 18 Mar 2021 12:54:10 +0100 Subject: [PATCH] Move KeyEffectiveStatement implementations We have 4 different implementations, but there is no reason why they'd need to reside in yang-parser-rfc7950. Move them to yang-model-ri. JIRA: YANGTOOLS-1241 Change-Id: Ibf0ac700bfb525fe4eefe28e6555cbf14a7551aa Signed-off-by: Robert Varga --- .../model/ri/stmt/EffectiveStatements.java | 18 ++++++++++++ .../eff}/AbstractKeyEffectiveStatement.java | 23 +++++++++++++-- .../EmptyForeignKeyEffectiveStatement.java | 6 ++-- .../eff}/EmptyLocalKeyEffectiveStatement.java | 6 ++-- .../RegularForeignKeyEffectiveStatement.java | 6 ++-- .../RegularLocalKeyEffectiveStatement.java | 6 ++-- .../rfc7950/reactor/RFC7950Reactors.java | 2 +- .../{key => meta}/KeyStatementSupport.java | 29 ++----------------- 8 files changed, 54 insertions(+), 42 deletions(-) rename yang/{yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key => yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff}/AbstractKeyEffectiveStatement.java (65%) rename yang/{yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key => yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff}/EmptyForeignKeyEffectiveStatement.java (65%) rename yang/{yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key => yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff}/EmptyLocalKeyEffectiveStatement.java (63%) rename yang/{yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key => yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff}/RegularForeignKeyEffectiveStatement.java (78%) rename yang/{yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key => yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff}/RegularLocalKeyEffectiveStatement.java (79%) rename yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/{key => meta}/KeyStatementSupport.java (81%) diff --git a/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java index 57d57c96b3..70510c3631 100644 --- a/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java +++ b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/EffectiveStatements.java @@ -12,9 +12,11 @@ import static com.google.common.base.Preconditions.checkArgument; import com.google.common.annotations.Beta; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; +import java.util.Set; import org.eclipse.jdt.annotation.NonNullByDefault; import org.eclipse.jdt.annotation.Nullable; import org.opendaylight.yangtools.concepts.Immutable; +import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.AnydataSchemaNode; import org.opendaylight.yangtools.yang.model.api.AnyxmlSchemaNode; @@ -84,6 +86,8 @@ import org.opendaylight.yangtools.yang.model.api.stmt.IncludeEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.IncludeStatement; import org.opendaylight.yangtools.yang.model.api.stmt.InputEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.InputStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.KeyEffectiveStatement; +import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; import org.opendaylight.yangtools.yang.model.api.stmt.LeafEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.LeafStatement; import org.opendaylight.yangtools.yang.model.api.stmt.LengthEffectiveStatement; @@ -175,12 +179,14 @@ import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyEnumEffective import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyErrorAppTagEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyErrorMessageEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyFeatureEffectiveStatement; +import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyForeignKeyEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyFractionDigitsEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyIdentityEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyIfFeatureEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyIncludeEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyLeafEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyLengthEffectiveStatement; +import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyLocalKeyEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyMandatoryEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyMaxElementsEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.EmptyMinElementsEffectiveStatement; @@ -224,12 +230,14 @@ import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularEnumEffecti import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularErrorAppTagEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularErrorMessageEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularFeatureEffectiveStatement; +import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularForeignKeyEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularFractionDigitsEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularIdentityEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularIfFeatureEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularIncludeEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularLeafEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularLengthEffectiveStatement; +import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularLocalKeyEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularMandatoryEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularMaxElementsEffectiveStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff.RegularMinElementsEffectiveStatement; @@ -547,6 +555,16 @@ public final class EffectiveStatements { return new DeclaredInputEffectiveStatement(declared, substatements, path, flags); } + public static KeyEffectiveStatement createKey(final KeyStatement declared, final Set argument, + final ImmutableList> substatements) { + if (substatements.isEmpty()) { + return argument.equals(declared.argument()) ? new EmptyLocalKeyEffectiveStatement(declared) + : new EmptyForeignKeyEffectiveStatement(declared, argument); + } + return argument.equals(declared.argument()) ? new RegularLocalKeyEffectiveStatement(declared, substatements) + : new RegularForeignKeyEffectiveStatement(declared, argument, substatements); + } + public static LeafEffectiveStatement copyLeaf(final LeafEffectiveStatement original, final Immutable path, final int flags, final @Nullable LeafSchemaNode newOriginal) { checkArgument(original instanceof AbstractLeafEffectiveStatement, "Unsupported original %s", original); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/AbstractKeyEffectiveStatement.java b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractKeyEffectiveStatement.java similarity index 65% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/AbstractKeyEffectiveStatement.java rename to yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractKeyEffectiveStatement.java index eb73cff963..c9f42a38c3 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/AbstractKeyEffectiveStatement.java +++ b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/AbstractKeyEffectiveStatement.java @@ -5,9 +5,13 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key; +package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; +import static com.google.common.base.Verify.verify; + +import com.google.common.collect.ImmutableSet; import java.util.Set; +import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.stmt.KeyEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; @@ -22,12 +26,25 @@ abstract class AbstractKeyEffectiveStatement Foreign(final KeyStatement declared, final Set argument) { super(declared); - this.argument = KeyStatementSupport.maskSet(argument); + this.argument = maskSet(argument); } @Override public final Set argument() { - return KeyStatementSupport.unmaskSet(argument); + return unmaskSet(argument); + } + + private static @NonNull Object maskSet(final @NonNull Set set) { + return set.size() == 1 ? set.iterator().next() : set; + } + + @SuppressWarnings("unchecked") + private static @NonNull Set unmaskSet(final @NonNull Object masked) { + if (masked instanceof Set) { + return (Set) masked; + } + verify(masked instanceof QName, "Unexpected argument %s", masked); + return ImmutableSet.of((QName) masked); } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/EmptyForeignKeyEffectiveStatement.java b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyForeignKeyEffectiveStatement.java similarity index 65% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/EmptyForeignKeyEffectiveStatement.java rename to yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyForeignKeyEffectiveStatement.java index b40717faf8..06e81cd705 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/EmptyForeignKeyEffectiveStatement.java +++ b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyForeignKeyEffectiveStatement.java @@ -5,14 +5,14 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key; +package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; -final class EmptyForeignKeyEffectiveStatement extends AbstractKeyEffectiveStatement.Foreign { - EmptyForeignKeyEffectiveStatement(final KeyStatement declared, final Set argument) { +public final class EmptyForeignKeyEffectiveStatement extends AbstractKeyEffectiveStatement.Foreign { + public EmptyForeignKeyEffectiveStatement(final KeyStatement declared, final Set argument) { super(declared, argument); } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/EmptyLocalKeyEffectiveStatement.java b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyLocalKeyEffectiveStatement.java similarity index 63% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/EmptyLocalKeyEffectiveStatement.java rename to yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyLocalKeyEffectiveStatement.java index 3919ece127..f77d3686dd 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/EmptyLocalKeyEffectiveStatement.java +++ b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/EmptyLocalKeyEffectiveStatement.java @@ -5,12 +5,12 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key; +package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; -final class EmptyLocalKeyEffectiveStatement extends AbstractKeyEffectiveStatement.Local { - EmptyLocalKeyEffectiveStatement(final KeyStatement declared) { +public final class EmptyLocalKeyEffectiveStatement extends AbstractKeyEffectiveStatement.Local { + public EmptyLocalKeyEffectiveStatement(final KeyStatement declared) { super(declared); } } diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/RegularForeignKeyEffectiveStatement.java b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularForeignKeyEffectiveStatement.java similarity index 78% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/RegularForeignKeyEffectiveStatement.java rename to yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularForeignKeyEffectiveStatement.java index 1cd6b6a4e5..fe8ed94bf9 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/RegularForeignKeyEffectiveStatement.java +++ b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularForeignKeyEffectiveStatement.java @@ -5,7 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key; +package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import com.google.common.collect.ImmutableList; import java.util.Set; @@ -14,10 +14,10 @@ import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; -final class RegularForeignKeyEffectiveStatement extends AbstractKeyEffectiveStatement.Foreign { +public final class RegularForeignKeyEffectiveStatement extends AbstractKeyEffectiveStatement.Foreign { private final @NonNull Object substatements; - RegularForeignKeyEffectiveStatement(final KeyStatement declared, final Set argument, + public RegularForeignKeyEffectiveStatement(final KeyStatement declared, final Set argument, final ImmutableList> substatements) { super(declared, argument); this.substatements = maskList(substatements); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/RegularLocalKeyEffectiveStatement.java b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLocalKeyEffectiveStatement.java similarity index 79% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/RegularLocalKeyEffectiveStatement.java rename to yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLocalKeyEffectiveStatement.java index 2667800dcd..a9dc3daa16 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/RegularLocalKeyEffectiveStatement.java +++ b/yang/yang-model-ri/src/main/java/org/opendaylight/yangtools/yang/model/ri/stmt/impl/eff/RegularLocalKeyEffectiveStatement.java @@ -5,17 +5,17 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key; +package org.opendaylight.yangtools.yang.model.ri.stmt.impl.eff; import com.google.common.collect.ImmutableList; import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; -final class RegularLocalKeyEffectiveStatement extends AbstractKeyEffectiveStatement.Local { +public final class RegularLocalKeyEffectiveStatement extends AbstractKeyEffectiveStatement.Local { private final @NonNull Object substatements; - RegularLocalKeyEffectiveStatement(final KeyStatement declared, + public RegularLocalKeyEffectiveStatement(final KeyStatement declared, final ImmutableList> substatements) { super(declared); this.substatements = maskList(substatements); diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java index 2bd7201c3f..928f61291c 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/reactor/RFC7950Reactors.java @@ -29,7 +29,6 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.IfFeatureS import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.IfFeatureStatementRFC7950Support; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.import_.ImportStatementSupport; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.import_.ImportedVersionNamespace; -import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key.KeyStatementSupport; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.leaf_list.LeafListStatementSupport; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list.ConfigListWarningNamespace; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.list.ListStatementSupport; @@ -57,6 +56,7 @@ import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.GroupingStatemen import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.IdentityStatementSupport; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.IncludeStatementSupport; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.InputStatementSupport; +import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.KeyStatementSupport; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.LeafStatementSupport; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.LengthStatementSupport; import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta.MandatoryStatementSupport; diff --git a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/KeyStatementSupport.java b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/KeyStatementSupport.java similarity index 81% rename from yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/KeyStatementSupport.java rename to yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/KeyStatementSupport.java index 3f4b5cf66d..c83f6920c6 100644 --- a/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/key/KeyStatementSupport.java +++ b/yang/yang-parser-rfc7950/src/main/java/org/opendaylight/yangtools/yang/parser/rfc7950/stmt/meta/KeyStatementSupport.java @@ -5,9 +5,7 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ -package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.key; - -import static com.google.common.base.Verify.verify; +package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.meta; import com.google.common.base.CharMatcher; import com.google.common.base.Splitter; @@ -15,7 +13,6 @@ import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableSet; import com.google.common.collect.ImmutableSet.Builder; import java.util.Set; -import org.eclipse.jdt.annotation.NonNull; import org.opendaylight.yangtools.yang.common.QName; import org.opendaylight.yangtools.yang.common.QNameModule; import org.opendaylight.yangtools.yang.model.api.YangStmtMapping; @@ -24,6 +21,7 @@ import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.KeyEffectiveStatement; import org.opendaylight.yangtools.yang.model.api.stmt.KeyStatement; import org.opendaylight.yangtools.yang.model.ri.stmt.DeclaredStatements; +import org.opendaylight.yangtools.yang.model.ri.stmt.EffectiveStatements; import org.opendaylight.yangtools.yang.parser.antlr.YangStatementLexer; import org.opendaylight.yangtools.yang.parser.spi.meta.AbstractStatementSupport; import org.opendaylight.yangtools.yang.parser.spi.meta.EffectiveStmtCtx.Current; @@ -117,27 +115,6 @@ public final class KeyStatementSupport @Override protected KeyEffectiveStatement createEffective(final Current, KeyStatement> stmt, final ImmutableList> substatements) { - final Set arg = stmt.getArgument(); - final KeyStatement declared = stmt.declared(); - if (substatements.isEmpty()) { - return arg.equals(declared.argument()) ? new EmptyLocalKeyEffectiveStatement(declared) - : new EmptyForeignKeyEffectiveStatement(declared, arg); - } - - return arg.equals(declared.argument()) ? new RegularLocalKeyEffectiveStatement(declared, substatements) - : new RegularForeignKeyEffectiveStatement(declared, arg, substatements); - } - - static @NonNull Object maskSet(final @NonNull Set set) { - return set.size() == 1 ? set.iterator().next() : set; - } - - @SuppressWarnings("unchecked") - static @NonNull Set unmaskSet(final @NonNull Object masked) { - if (masked instanceof Set) { - return (Set) masked; - } - verify(masked instanceof QName, "Unexpected argument %s", masked); - return ImmutableSet.of((QName) masked); + return EffectiveStatements.createKey(stmt.declared(), stmt.getArgument(), substatements); } } -- 2.36.6