As noted in the FIXME, this @Beta class has served its purpose.
Rather than bridging it, perform a direct replacement with
UniqueEffectiveStatement.
JIRA: YANGTOOLS-1119
Change-Id: I022f940b859224a58b5d706fa5a63e8acd7f6c5a
Signed-off-by: Robert Varga <robert.varga@pantheon.tech>
import com.google.common.annotations.Beta;
import java.util.Collection;
import org.opendaylight.yangtools.yang.model.api.stmt.DeviateEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement;
/**
* Interface describing YANG 'deviate' statement.
*
* @return collection of the deviated unique statements
*/
- Collection<? extends UniqueConstraint> getDeviatedUniques();
+ Collection<? extends UniqueEffectiveStatement> getDeviatedUniques();
/**
* Returns deviated units statement.
import org.eclipse.jdt.annotation.NonNull;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.stmt.ListEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement;
/**
* Interface describing YANG 'list' statement.
*
* @return Collection of unique constraints of this list schema node
*/
- @NonNull Collection<? extends UniqueConstraint> getUniqueConstraints();
+ @NonNull Collection<? extends UniqueEffectiveStatement> getUniqueConstraints();
}
+++ /dev/null
-/*
- * Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * 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.model.api;
-
-import com.google.common.annotations.Beta;
-import java.util.Set;
-import org.eclipse.jdt.annotation.NonNull;
-import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
-
-/**
- * Interface describing YANG 'unique' constraint.
- *
- * <p>
- * The 'unique' constraint specifies that the combined values of all the leaf instances specified in the argument
- * string, including leafs with default values, MUST be unique within all list entry instances in which all referenced
- * leafs exist (for more information see RFC-6020 section 7.8.3.).
- */
-@Beta
-// FIXME: 6.0.0: YANGTOOLS-1119: replace all usages of this class with UniqueEffectiveStatement and remove this
-public interface UniqueConstraint {
- @NonNull Set<Descendant> getTag();
-}
* <dd>{@link org.opendaylight.yangtools.yang.model.api.TypeDefinition}
*
* <dt>unique
- * <dd>{@link org.opendaylight.yangtools.yang.model.api.UniqueConstraint}
+ * <dd>{@link org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement}
*
* <dt>units
* <dd>{@link org.opendaylight.yangtools.yang.model.api.TypeDefinition#getUnits()}
import org.opendaylight.yangtools.yang.model.api.meta.StatementDefinition;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
+/**
+ * Interface describing YANG 'unique' constraint.
+ *
+ * <p>
+ * The 'unique' constraint specifies that the combined values of all the leaf instances specified in the argument
+ * string, including leafs with default values, MUST be unique within all list entry instances in which all referenced
+ * leafs exist (for more information see RFC-6020 section 7.8.3.).
+ */
@Beta
public interface UniqueEffectiveStatement extends EffectiveStatement<Set<Descendant>, UniqueStatement> {
@Override
import org.opendaylight.yangtools.yang.model.api.DeviateKind;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
-import org.opendaylight.yangtools.yang.model.api.UniqueConstraint;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ConfigEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.TypeEffectiveStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.UnitsEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument.WithSubstatements;
}
@Override
- public Collection<? extends UniqueConstraint> getDeviatedUniques() {
- return allSubstatementsOfType(UniqueConstraint.class);
+ public Collection<? extends UniqueEffectiveStatement> getDeviatedUniques() {
+ return allSubstatementsOfType(UniqueEffectiveStatement.class);
}
@Override
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
-import org.opendaylight.yangtools.yang.model.api.UniqueConstraint;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ListEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ListStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.compat.ActionNodeContainerCompat;
import org.opendaylight.yangtools.yang.model.api.stmt.compat.NotificationNodeContainerCompat;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultWithDataTree;
}
@Override
- public final Collection<UniqueConstraint> getUniqueConstraints() {
+ public final Collection<? extends UniqueEffectiveStatement> getUniqueConstraints() {
return effectiveSubstatements().stream()
- .filter(UniqueConstraint.class::isInstance)
- .map(UniqueConstraint.class::cast)
+ .filter(UniqueEffectiveStatement.class::isInstance)
+ .map(UniqueEffectiveStatement.class::cast)
.collect(ImmutableList.toImmutableList());
}
*/
package org.opendaylight.yangtools.yang.parser.rfc7950.stmt.unique;
-import static com.google.common.base.Verify.verifyNotNull;
-
import java.util.Set;
-import org.opendaylight.yangtools.yang.model.api.UniqueConstraint;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.UniqueStatement;
import org.opendaylight.yangtools.yang.parser.rfc7950.stmt.AbstractDeclaredEffectiveStatement.DefaultArgument;
class EmptyUniqueEffectiveStatement extends DefaultArgument<Set<Descendant>, UniqueStatement>
- implements UniqueEffectiveStatement, UniqueConstraint {
+ implements UniqueEffectiveStatement {
EmptyUniqueEffectiveStatement(final UniqueStatement declared) {
super(declared);
}
-
- @Override
- public final Set<Descendant> getTag() {
- // FIXME: YANGTOOLS-908: verifyNotNull() should not be needed here
- return verifyNotNull(argument());
- }
}
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
-import org.opendaylight.yangtools.yang.model.api.UniqueConstraint;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier;
import org.opendaylight.yangtools.yang.model.api.stmt.SchemaNodeIdentifier.Descendant;
+import org.opendaylight.yangtools.yang.model.api.stmt.UniqueEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.ReactorException;
public class Bug5946Test {
.getResource("/bugs/bug5946/foo.yang").toURI()));
assertNotNull(context);
- Collection<? extends UniqueConstraint> uniqueConstraints = getListConstraints(context, WITHOUT_UNIQUE);
+ Collection<? extends UniqueEffectiveStatement> uniqueConstraints = getListConstraints(context, WITHOUT_UNIQUE);
assertNotNull(uniqueConstraints);
assertTrue(uniqueConstraints.isEmpty());
- Collection<? extends UniqueConstraint> simpleUniqueConstraints = getListConstraints(context, SIMPLE_UNIQUE);
+ Collection<? extends UniqueEffectiveStatement> simpleUniqueConstraints =
+ getListConstraints(context, SIMPLE_UNIQUE);
assertNotNull(simpleUniqueConstraints);
assertEquals(1, simpleUniqueConstraints.size());
- Collection<Descendant> simpleUniqueConstraintTag = simpleUniqueConstraints.iterator().next().getTag();
+ Collection<Descendant> simpleUniqueConstraintTag = simpleUniqueConstraints.iterator().next().argument();
assertTrue(simpleUniqueConstraintTag.contains(L1_ID));
assertTrue(simpleUniqueConstraintTag.contains(C_L3_ID));
- Collection<? extends UniqueConstraint> multipleUniqueConstraints = getListConstraints(context, MULTIPLE_UNIQUE);
+ Collection<? extends UniqueEffectiveStatement> multipleUniqueConstraints =
+ getListConstraints(context, MULTIPLE_UNIQUE);
assertNotNull(multipleUniqueConstraints);
assertEquals(3, multipleUniqueConstraints.size());
boolean l1l2 = false;
boolean l1cl3 = false;
boolean cl3l2 = false;
- for (UniqueConstraint uniqueConstraint : multipleUniqueConstraints) {
- Collection<Descendant> uniqueConstraintTag = uniqueConstraint.getTag();
+ for (UniqueEffectiveStatement uniqueConstraint : multipleUniqueConstraints) {
+ Collection<Descendant> uniqueConstraintTag = uniqueConstraint.argument();
if (uniqueConstraintTag.contains(L1_ID) && uniqueConstraintTag.contains(L2_ID)) {
l1l2 = true;
} else if (uniqueConstraintTag.contains(L1_ID) && uniqueConstraintTag.contains(C_L3_ID)) {
}
}
- private static @NonNull Collection<? extends UniqueConstraint> getListConstraints(final SchemaContext context,
- final QName listQName) {
+ private static @NonNull Collection<? extends UniqueEffectiveStatement> getListConstraints(
+ final SchemaContext context, final QName listQName) {
DataSchemaNode dataChildByName = context.getDataChildByName(listQName);
assertTrue(dataChildByName instanceof ListSchemaNode);
return ((ListSchemaNode) dataChildByName).getUniqueConstraints();