* 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;
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;
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;
@Override
protected KeyEffectiveStatement createEffective(final Current<Set<QName>, KeyStatement> stmt,
final ImmutableList<? extends EffectiveStatement<?, ?>> substatements) {
- final Set<QName> 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<QName> set) {
- return set.size() == 1 ? set.iterator().next() : set;
- }
-
- @SuppressWarnings("unchecked")
- static @NonNull Set<QName> unmaskSet(final @NonNull Object masked) {
- if (masked instanceof Set) {
- return (Set<QName>) masked;
- }
- verify(masked instanceof QName, "Unexpected argument %s", masked);
- return ImmutableSet.of((QName) masked);
+ return EffectiveStatements.createKey(stmt.declared(), stmt.getArgument(), substatements);
}
}