import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
+import com.google.common.collect.ImmutableSet;
import java.io.InputStream;
import java.net.URI;
import java.util.Collection;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaContext;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
import org.opendaylight.yangtools.yang.model.api.Status;
return contentSchema;
}
+ @Override
+ public Collection<MustDefinition> getMustConstraints() {
+ return ImmutableSet.of();
+ }
+
}
}
final int prime = 31;
int result = 1;
result = prime * result + Objects.hashCode(def.getWhenCondition());
- result = prime * result + Objects.hashCode(def.getMustConstraints());
result = prime * result + Objects.hashCode(def.getMinElements());
result = prime * result + Objects.hashCode(def.getMaxElements());
return result;
if (!Objects.equals(def.getWhenCondition(), other.getWhenCondition())) {
return false;
}
- if (!Objects.equals(def.getMustConstraints(), other.getMustConstraints())) {
- return false;
- }
if (!Objects.equals(def.getMinElements(), other.getMinElements())) {
return false;
}
public static String toString(final ConstraintDefinition def) {
return MoreObjects.toStringHelper(def).omitNullValues()
.add("whenCondition", def.getWhenCondition().orElse(null))
- .add("mustConstraints", def.getMustConstraints())
.add("minElements", def.getMinElements())
.add("maxElements", def.getMaxElements()).toString();
}
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaNode;
public List<UnknownSchemaNode> getUnknownSchemaNodes() {
return ImmutableList.of();
}
+
+ @Override
+ public Collection<MustDefinition> getMustConstraints() {
+ return ImmutableList.of();
+ }
}
private static final class RpcContainerSchemaNode extends AbstractContainerSchemaNode {
*/
package org.opendaylight.yangtools.yang.data.util;
-import com.google.common.collect.ImmutableSet;
import java.util.Optional;
-import java.util.Set;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
-import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
/**
return Optional.empty();
}
- @Override
- public Set<MustDefinition> getMustConstraints() {
- return ImmutableSet.of();
- }
-
@Override
public Integer getMinElements() {
return null;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
import org.opendaylight.yangtools.yang.model.api.SchemaPath;
public Set<NotificationDefinition> getNotifications() {
return ImmutableSet.of();
}
+
+ @Override
+ public Collection<MustDefinition> getMustConstraints() {
+ return ImmutableSet.of();
+ }
}
* of this document.
*/
@Beta
-public interface AnyDataSchemaNode extends DataSchemaNode, MandatoryAware {
+public interface AnyDataSchemaNode extends DataSchemaNode, MandatoryAware, MustConstraintAware {
/**
* Schema of data.
*
* This interface was modeled according to definition in
* <a href="https://tools.ietf.org/html/rfc6020#section-7.10">[RFC-6020] The anyxml Statement</a>
*/
-public interface AnyXmlSchemaNode extends DataSchemaNode, MandatoryAware {
+public interface AnyXmlSchemaNode extends DataSchemaNode, MandatoryAware, MustConstraintAware {
}
* YANG element therefore if the constraint doesn't have sense for some element
* then the method returns <code>null</code> value.
*/
-public interface ConstraintDefinition extends MustConstraintAware, WhenConditionAware {
+public interface ConstraintDefinition extends WhenConditionAware {
/**
* Returns the minimum required number of data elements for node where this
* constraint is specified.
* configuration has an explicit meaning.
*/
public interface ContainerSchemaNode extends DataNodeContainer,
- AugmentationTarget, DataSchemaNode, NotificationNodeContainer, ActionNodeContainer {
+ AugmentationTarget, DataSchemaNode, NotificationNodeContainer, ActionNodeContainer, MustConstraintAware {
/**
* Returns true if this container is marked as presence.
*
/**
* Interface describing YANG 'leaf-list' statement.
*/
-public interface LeafListSchemaNode extends TypedSchemaNode {
+public interface LeafListSchemaNode extends TypedSchemaNode, MustConstraintAware {
/**
* YANG 'ordered-by' statement. It defines whether the order of entries
* within this leaf-list are determined by the user or the system. If not
* Since we are presenting the effective model of the world, the information dictated by 'default' and 'units'
* substatements is captured in the type returned via {@link #getType()}.
*/
-public interface LeafSchemaNode extends TypedSchemaNode, MandatoryAware {
+public interface LeafSchemaNode extends TypedSchemaNode, MandatoryAware, MustConstraintAware {
}
* by the values of the list's keys, if defined.
*/
public interface ListSchemaNode extends DataNodeContainer, AugmentationTarget, DataSchemaNode,
- NotificationNodeContainer, ActionNodeContainer {
+ NotificationNodeContainer, ActionNodeContainer, MustConstraintAware {
/**
* Returns the list of leaf identifiers.
*
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
import java.net.URI;
+import java.util.Collection;
import java.util.Optional;
import java.util.Set;
import javax.annotation.Nullable;
default Optional<String> getReference() {
return Optional.empty();
}
+
+ @Override
+ default Collection<MustDefinition> getMustConstraints() {
+ return ImmutableSet.of();
+ }
}
* <dd>{@link org.opendaylight.yangtools.yang.model.api.Module}
*
* <dt>must
- * <dd>{@link org.opendaylight.yangtools.yang.model.api.ConstraintDefinition#getMustConstraints()}
+ * <dd>{@link org.opendaylight.yangtools.yang.model.api.MustConstraintAware#getMustConstraints()}
* <dd>{@link org.opendaylight.yangtools.yang.model.api.MustDefinition}
*
* <dt>namespace
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
import org.opendaylight.yangtools.yang.model.api.Module;
import org.opendaylight.yangtools.yang.model.api.ModuleImport;
+import org.opendaylight.yangtools.yang.model.api.MustConstraintAware;
import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.OperationDefinition;
private void emitContainer(final ContainerSchemaNode child) {
super.writer.startContainerNode(child.getQName());
+ child.getMustConstraints().forEach(this::emitMust);
emitConstraints(child.getConstraints());
// FIXME: BUG-2444: whenNode //:Optional
// FIXME: BUG-2444: *(ifFeatureNode )
private void emitConstraints(final ConstraintDefinition constraints) {
constraints.getWhenCondition().ifPresent(this::emitWhen);
- for (final MustDefinition mustCondition : constraints.getMustConstraints()) {
- emitMust(mustCondition);
- }
}
private void emitLeaf(final LeafSchemaNode child) {
// FIXME: BUG-2444: *(ifFeatureNode )
emitTypeNode(child.getPath(), child.getType());
child.getType().getUnits().ifPresent(this::emitUnitsNode);
- emitMustNodes(child.getConstraints().getMustConstraints());
+ child.getMustConstraints().forEach(this::emitMust);
child.getType().getDefaultValue().ifPresent(this::emitDefaultNode);
emitConfigNode(child.isConfiguration());
emitMandatoryNode(child.isMandatory());
emitTypeNode(child.getPath(), child.getType());
child.getType().getUnits().ifPresent(this::emitUnitsNode);
// FIXME: BUG-2444: unitsNode /Optional
- emitMustNodes(child.getConstraints().getMustConstraints());
+ child.getMustConstraints().forEach(this::emitMust);
emitConfigNode(child.isConfiguration());
emitDefaultNodes(child.getDefaults());
emitMinElementsNode(child.getConstraints().getMinElements());
child.getConstraints().getWhenCondition().ifPresent(this::emitWhen);
// FIXME: BUG-2444: *(ifFeatureNode )
- emitMustNodes(child.getConstraints().getMustConstraints());
+ child.getMustConstraints().forEach(this::emitMust);
emitKey(child.getKeyDefinition());
emitUniqueConstraints(child.getUniqueConstraints());
emitConfigNode(child.isConfiguration());
}
- private void emitMustNodes(final Collection<MustDefinition> mustConstraints) {
- for (final MustDefinition must : mustConstraints) {
- emitMust(must);
- }
- }
-
private void emitKey(final List<QName> keyList) {
if (keyList != null && !keyList.isEmpty()) {
super.writer.startKeyNode(keyList);
private void emitBodyOfDataSchemaNode(final DataSchemaNode dataSchemaNode) {
dataSchemaNode.getConstraints().getWhenCondition().ifPresent(this::emitWhen);
// FIXME: BUG-2444: *(ifFeatureNode )
- emitMustNodes(dataSchemaNode.getConstraints().getMustConstraints());
+ if (dataSchemaNode instanceof MustConstraintAware) {
+ ((MustConstraintAware) dataSchemaNode).getMustConstraints().forEach(this::emitMust);
+ }
emitConfigNode(dataSchemaNode.isConfiguration());
emitDocumentedNode(dataSchemaNode);
emitUnknownStatementNodes(dataSchemaNode.getUnknownSchemaNodes());
private void emitInput(@Nonnull final ContainerSchemaNode input) {
if (isExplicitStatement(input)) {
super.writer.startInputNode();
- emitConstraints(input.getConstraints());
+ input.getMustConstraints().forEach(this::emitMust);
emitDataNodeContainer(input);
emitUnknownStatementNodes(input.getUnknownSchemaNodes());
super.writer.endNode();
private void emitOutput(@Nonnull final ContainerSchemaNode output) {
if (isExplicitStatement(output)) {
super.writer.startOutputNode();
- emitConstraints(output.getConstraints());
+ output.getMustConstraints().forEach(this::emitMust);
emitDataNodeContainer(output);
emitUnknownStatementNodes(output.getUnknownSchemaNodes());
super.writer.endNode();
return modules;
}
- @Override
- public final String toString() {
- return addToStringAttributes(MoreObjects.toStringHelper(this)).toString();
- }
-
- protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
- return toStringHelper.add("modules", modules);
- }
-
-
@Override
protected final SetMultimap<URI, Module> getNamespaceToModules() {
return namespaceToModules;
protected final SetMultimap<String, Module> getNameToModules() {
return nameToModules;
}
+
+ @Override
+ public final String toString() {
+ return addToStringAttributes(MoreObjects.toStringHelper(this)).toString();
+ }
+
+ protected ToStringHelper addToStringAttributes(final ToStringHelper toStringHelper) {
+ return toStringHelper.add("modules", modules);
+ }
}
import com.google.common.annotations.Beta;
import com.google.common.base.MoreObjects;
+import com.google.common.collect.ImmutableSet;
+import java.util.Collection;
import java.util.Objects;
import java.util.Optional;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyDataSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.AnydataEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.AnydataStatement;
final class AnydataEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode<AnydataStatement>
implements AnydataEffectiveStatement, AnyDataSchemaNode, DerivableSchemaNode {
+ private final Collection<MustDefinition> mustConstraints;
private final AnyDataSchemaNode original;
private final ContainerSchemaNode schema;
private final boolean mandatory;
this.original = (AnyDataSchemaNode) ctx.getOriginalCtx().map(StmtContext::buildEffective).orElse(null);
final MandatoryEffectiveStatement mandatoryStmt = firstEffective(MandatoryEffectiveStatement.class);
mandatory = mandatoryStmt == null ? false : mandatoryStmt.argument().booleanValue();
+ mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
/*
* :TODO we need to determine a way how to set schema of AnyData
return mandatory;
}
+ @Override
+ public Collection<MustDefinition> getMustConstraints() {
+ return mustConstraints;
+ }
+
@Override
public int hashCode() {
return Objects.hash(getQName(),getPath());
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
+import com.google.common.collect.ImmutableSet;
+import java.util.Collection;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.DeclaredStatement;
-import org.opendaylight.yangtools.yang.model.api.stmt.PresenceEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
abstract class AbstractEffectiveContainerSchemaNode<D extends DeclaredStatement<QName>> extends
AbstractEffectiveSimpleDataNodeContainer<D> implements ContainerSchemaNode {
-
- private final boolean presence;
+ private final Collection<MustDefinition> mustConstraints;
AbstractEffectiveContainerSchemaNode(final StmtContext<QName, D, ?> ctx) {
super(ctx);
- this.presence = firstEffective(PresenceEffectiveStatement.class) != null;
+ mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
}
@Override
- public boolean isPresenceContainer() {
- return presence;
+ public final Collection<MustDefinition> getMustConstraints() {
+ return mustConstraints;
}
}
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
+import com.google.common.collect.ImmutableSet;
+import java.util.Collection;
import java.util.Objects;
import java.util.Optional;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.AnyXmlSchemaNode;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.AnyxmlStatement;
public class AnyxmlEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode<AnyxmlStatement>
implements AnyxmlEffectiveStatement, AnyXmlSchemaNode, DerivableSchemaNode {
+ private final Collection<MustDefinition> mustConstraints;
private final AnyXmlSchemaNode original;
private final boolean mandatory;
this.original = (AnyXmlSchemaNode) ctx.getOriginalCtx().map(StmtContext::buildEffective).orElse(null);
final MandatoryEffectiveStatement mandatoryStmt = firstEffective(MandatoryEffectiveStatement.class);
mandatory = mandatoryStmt == null ? false : mandatoryStmt.argument().booleanValue();
+ mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
}
@Override
return mandatory;
}
+ @Override
+ public Collection<MustDefinition> getMustConstraints() {
+ return mustConstraints;
+ }
+
@Override
public Optional<AnyXmlSchemaNode> getOriginal() {
return Optional.ofNullable(original);
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ContainerEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.ContainerStatement;
+import org.opendaylight.yangtools.yang.model.api.stmt.PresenceEffectiveStatement;
import org.opendaylight.yangtools.yang.parser.spi.meta.StmtContext;
public final class ContainerEffectiveStatementImpl extends AbstractEffectiveContainerSchemaNode<ContainerStatement>
private final Set<ActionDefinition> actions;
private final Set<NotificationDefinition> notifications;
private final ContainerSchemaNode original;
+ private final boolean presence;
public ContainerEffectiveStatementImpl(
final StmtContext<QName, ContainerStatement, EffectiveStatement<QName, ContainerStatement>> ctx) {
this.actions = actionsBuilder.build();
this.notifications = notificationsBuilder.build();
+ presence = firstEffective(PresenceEffectiveStatement.class) != null;
}
@Override
return notifications;
}
+ @Override
+ public boolean isPresenceContainer() {
+ return presence;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
-import static java.util.Objects.requireNonNull;
-
-import com.google.common.collect.ImmutableSet;
import java.util.Optional;
-import java.util.Set;
import org.opendaylight.yangtools.yang.data.util.ConstraintDefinitions;
import org.opendaylight.yangtools.yang.data.util.EmptyConstraintDefinition;
import org.opendaylight.yangtools.yang.model.api.ConstraintDefinition;
-import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
import org.opendaylight.yangtools.yang.model.api.stmt.MaxElementsEffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.MinElementsEffectiveStatement;
private static final String UNBOUNDED_STR = "unbounded";
private final RevisionAwareXPath whenCondition;
- private final Set<MustDefinition> mustConstraints;
private final Integer minElements;
private final Integer maxElements;
private EffectiveConstraintDefinitionImpl(final Integer minElements, final Integer maxElements,
- final RevisionAwareXPath whenCondition, final Set<MustDefinition> mustConstraints) {
+ final RevisionAwareXPath whenCondition) {
this.minElements = minElements;
this.maxElements = maxElements;
this.whenCondition = whenCondition;
- this.mustConstraints = requireNonNull(mustConstraints);
}
static ConstraintDefinition forParent(final EffectiveStatementBase<?, ?> parent) {
maxElements = null;
}
- final Set<MustDefinition> mustSubstatements = ImmutableSet.copyOf(parent.allSubstatementsOfType(
- MustDefinition.class));
final WhenEffectiveStatement firstWhenStmt = parent.firstEffective(WhenEffectiveStatement.class);
// Check for singleton instances
- if (minElements == null && maxElements == null && mustSubstatements.isEmpty() && firstWhenStmt == null) {
+ if (minElements == null && maxElements == null && firstWhenStmt == null) {
return EmptyConstraintDefinition.getInstance();
}
return new EffectiveConstraintDefinitionImpl(minElements, maxElements,
- firstWhenStmt == null ? null : firstWhenStmt.argument(), mustSubstatements);
+ firstWhenStmt == null ? null : firstWhenStmt.argument());
}
@Override
return Optional.ofNullable(whenCondition);
}
- @Override
- public Set<MustDefinition> getMustConstraints() {
- return mustConstraints;
- }
-
@Override
public Integer getMinElements() {
return minElements;
return ImmutableSet.of();
}
+ @Override
+ public boolean isPresenceContainer() {
+ // FIXME: this should not really be here
+ return false;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
*/
package org.opendaylight.yangtools.yang.parser.stmt.rfc6020.effective;
+import com.google.common.collect.ImmutableSet;
+import java.util.Collection;
import java.util.Objects;
import java.util.Optional;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement;
public final class LeafEffectiveStatementImpl extends AbstractEffectiveDataSchemaNode<LeafStatement>
implements LeafEffectiveStatement, LeafSchemaNode, DerivableSchemaNode {
+ private final Collection<MustDefinition> mustConstraints;
private final LeafSchemaNode original;
private final TypeDefinition<?> type;
private final String defaultStr;
type = builder.build();
final MandatoryEffectiveStatement mandatoryStmt = firstEffective(MandatoryEffectiveStatement.class);
mandatory = mandatoryStmt == null ? false : mandatoryStmt.argument().booleanValue();
+ mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
}
@Override
return type;
}
+ @Override
+ public Collection<MustDefinition> getMustConstraints() {
+ return mustConstraints;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
import org.opendaylight.yangtools.yang.common.QName;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
import org.opendaylight.yangtools.yang.model.api.stmt.DefaultEffectiveStatement;
private final LeafListSchemaNode original;
private final boolean userOrdered;
private final Set<String> defaultValues;
+ private final Collection<MustDefinition> mustConstraints;
public LeafListEffectiveStatementImpl(
final StmtContext<QName, LeafListStatement, EffectiveStatement<QName, LeafListStatement>> ctx) {
type = builder.build();
userOrdered = isUserOrdered;
+ mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
}
@Override
return userOrdered;
}
+ @Override
+ public Collection<MustDefinition> getMustConstraints() {
+ return mustConstraints;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
import org.opendaylight.yangtools.yang.model.api.DerivableSchemaNode;
import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.MustDefinition;
import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
import org.opendaylight.yangtools.yang.model.api.UniqueConstraint;
import org.opendaylight.yangtools.yang.model.api.meta.EffectiveStatement;
private final Set<ActionDefinition> actions;
private final Set<NotificationDefinition> notifications;
private final Collection<UniqueConstraint> uniqueConstraints;
+ private final Collection<MustDefinition> mustConstraints;
public ListEffectiveStatementImpl(
final StmtContext<QName, ListStatement, EffectiveStatement<QName, ListStatement>> ctx) {
this.actions = actionsBuilder.build();
this.notifications = notificationsBuilder.build();
+ mustConstraints = ImmutableSet.copyOf(allSubstatementsOfType(MustDefinition.class));
}
@Override
return userOrdered;
}
+ @Override
+ public Collection<MustDefinition> getMustConstraints() {
+ return mustConstraints;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
return ImmutableSet.of();
}
+ @Override
+ public boolean isPresenceContainer() {
+ // FIXME: this should not really be here
+ return false;
+ }
+
@Override
public int hashCode() {
final int prime = 31;
final LeafSchemaNode mandatoryLeaf5 = (LeafSchemaNode) testModule.getDataChildByName(
QName.create(testModule.getQNameModule(), "mandatory-leaf-5"));
assertNotNull(mandatoryLeaf5);
- final ConstraintDefinition constraints5 = mandatoryLeaf5.getConstraints();
-
- assertNotEquals(ConstraintDefinitions.hashCode(constraints4), ConstraintDefinitions.hashCode(constraints5));
- assertFalse(ConstraintDefinitions.equals(constraints4, constraints5));
final LeafListSchemaNode constrainedLeafList1 = (LeafListSchemaNode) testModule.getDataChildByName(
QName.create(testModule.getQNameModule(), "constrained-leaf-list-1"));
assertFalse(ConstraintDefinitions.equals(constraints3, constraints4));
final String constraintsString = ConstraintDefinitions.toString(constraints4);
- assertEquals("EffectiveConstraintDefinitionImpl{whenCondition=foo = 'bar', mustConstraints=[bar != 'foo'], "
- + "minElements=50, maxElements=100}", constraintsString);
+ assertEquals("EffectiveConstraintDefinitionImpl{whenCondition=foo = 'bar', minElements=50, maxElements=100}",
+ constraintsString);
}
}
\ No newline at end of file
final ContainerSchemaNode input = myRpc.getInput();
assertNotNull(input);
- mustConstraints = input.getConstraints().getMustConstraints();
+ mustConstraints = input.getMustConstraints();
assertEquals(2, mustConstraints.size());
final ContainerSchemaNode output = myRpc.getOutput();
assertNotNull(output);
- mustConstraints = output.getConstraints().getMustConstraints();
+ mustConstraints = output.getMustConstraints();
assertEquals(2, mustConstraints.size());
}
final DataSchemaNode dataChildByName = context.getDataChildByName(QName.create("foo", "root"));
assertTrue(dataChildByName instanceof ContainerSchemaNode);
final ContainerSchemaNode root = (ContainerSchemaNode) dataChildByName;
- final Collection<MustDefinition> mustConstraints = root.getConstraints().getMustConstraints();
+ final Collection<MustDefinition> mustConstraints = root.getMustConstraints();
assertEquals(1, mustConstraints.size());
final MustDefinition must = mustConstraints.iterator().next();
assertEquals("not(deref(.)/../same-pass)", must.getXpath().toString());
final RpcDefinition myRpc = barModule.getRpcs().iterator().next();
final ContainerSchemaNode input = myRpc.getInput();
- assertEquals(2, input.getConstraints().getMustConstraints().size());
+ assertEquals(2, input.getMustConstraints().size());
final ContainerSchemaNode output = myRpc.getOutput();
- assertEquals(2, output.getConstraints().getMustConstraints().size());
+ assertEquals(2, output.getMustConstraints().size());
final NotificationDefinition myNotification = barModule.getNotifications().iterator().next();
assertEquals(2, myNotification.getMustConstraints().size());
assertNotNull(myLeafList);
assertEquals(0, myLeafList.getDefaults().size());
- assertEquals(0, myLeafList.getConstraints().getMustConstraints().size());
+ assertEquals(0, myLeafList.getMustConstraints().size());
final ListSchemaNode myList = (ListSchemaNode) barModule.getDataChildByName(
QName.create(barModule.getQNameModule(), "my-list"));
assertNotNull(myAugLeaf);
assertEquals(Optional.empty(), myAugLeaf.getType().getDefaultValue());
assertEquals(Optional.empty(), myAugLeaf.getType().getUnits());
- assertEquals(0, myAugLeaf.getConstraints().getMustConstraints().size());
+ assertEquals(0, myAugLeaf.getMustConstraints().size());
assertEquals(0, myAugLeaf.getUnknownSchemaNodes().size());
final LeafSchemaNode myUsedLeaf = (LeafSchemaNode) myCont.getDataChildByName(
assertNotNull(myUsedLeaf);
assertEquals(Optional.empty(), myUsedLeaf.getType().getDefaultValue());
assertEquals(Optional.empty(), myUsedLeaf.getType().getUnits());
- assertEquals(0, myUsedLeaf.getConstraints().getMustConstraints().size());
+ assertEquals(0, myUsedLeaf.getMustConstraints().size());
assertEquals(0, myUsedLeaf.getUnknownSchemaNodes().size());
}
assertTrue(containerSchemaNode.isConfiguration());
assertFalse(containerSchemaNode.isPresenceContainer());
- ConstraintDefinition containerConstraints = containerSchemaNode.getConstraints();
- assertEquals(0, containerConstraints.getMustConstraints().size());
+ assertEquals(0, containerSchemaNode.getMustConstraints().size());
}
private static void checkOriginalChoice(final SchemaContext result, final SchemaPath path) {
ChoiceSchemaNode choiceSchemaNode = (ChoiceSchemaNode) choiceInContainerNode;
assertFalse(choiceSchemaNode.isMandatory());
-
- ConstraintDefinition choiceConstraints = choiceSchemaNode.getConstraints();
- assertTrue(choiceConstraints.getMustConstraints().isEmpty());
}
private static void checkOriginalList(final SchemaContext result, final SchemaPath path) {
ConstraintDefinition listConstraints = listSchemaNode.getConstraints();
assertEquals(10, listConstraints.getMinElements().intValue());
assertEquals(20, listConstraints.getMaxElements().intValue());
- assertEquals(1, listConstraints.getMustConstraints().size());
+ assertEquals(1, listSchemaNode.getMustConstraints().size());
}
private static void checkRefinedContainer(final SchemaContext result, final SchemaPath path) {
assertEquals(Optional.of("new description"), containerSchemaNode.getDescription());
assertTrue(containerSchemaNode.isConfiguration());
assertTrue(containerSchemaNode.isPresenceContainer());
-
- ConstraintDefinition containerConstraints = containerSchemaNode.getConstraints();
- assertEquals(1, containerConstraints.getMustConstraints().size());
+ assertEquals(1, containerSchemaNode.getMustConstraints().size());
}
private static void checkRefinedChoice(final SchemaContext result, final SchemaPath path) {
ChoiceSchemaNode choiceSchemaNode = (ChoiceSchemaNode) choiceInContainerNode;
assertTrue(choiceSchemaNode.isMandatory());
-
- ConstraintDefinition choiceConstraints = choiceSchemaNode.getConstraints();
- assertTrue(choiceConstraints.getMustConstraints().isEmpty());
}
private static void checkRefinedList(final SchemaContext result, final SchemaPath path) {
ConstraintDefinition listConstraints = listSchemaNode.getConstraints();
assertEquals(5, listConstraints.getMinElements().intValue());
assertEquals(7, listConstraints.getMaxElements().intValue());
- assertEquals(2, listConstraints.getMustConstraints().size());
+ assertEquals(2, listSchemaNode.getMustConstraints().size());
}
}
assertEquals(Optional.of("address reference added by refine"), refineLeaf.getReference());
assertFalse(refineLeaf.isConfiguration());
assertFalse(refineLeaf.isMandatory());
- final Collection<MustDefinition> leafMustConstraints = refineLeaf.getConstraints().getMustConstraints();
+ final Collection<MustDefinition> leafMustConstraints = refineLeaf.getMustConstraints();
assertEquals(1, leafMustConstraints.size());
final MustDefinition leafMust = leafMustConstraints.iterator().next();
assertEquals("ifType != 'ethernet' or (ifType = 'ethernet' and ifMTU = 1500)", leafMust.toString());
// container port
assertNotNull(refineContainer);
- final Collection<MustDefinition> mustConstraints = refineContainer.getConstraints().getMustConstraints();
+ final Collection<MustDefinition> mustConstraints = refineContainer.getMustConstraints();
assertTrue(mustConstraints.isEmpty());
assertEquals(Optional.of("description of port defined by refine"), refineContainer.getDescription());
assertEquals(Optional.of("port reference added by refine"), refineContainer.getReference());
assertNotNull(container);
assertTrue(container.isPresenceContainer());
- final Collection<MustDefinition> musts = container.getConstraints().getMustConstraints();
+ final Collection<MustDefinition> musts = container.getMustConstraints();
assertEquals(2, musts.size());
final Iterator<MustDefinition> mustsIterator = musts.iterator();
assertTrue(data.isMandatory());
final ConstraintDefinition constraints = data.getConstraints();
assertEquals("class != 'wheel'", constraints.getWhenCondition().get().toString());
- final Collection<MustDefinition> mustConstraints = constraints.getMustConstraints();
- assertEquals(2, constraints.getMustConstraints().size());
+ final Collection<MustDefinition> mustConstraints = data.getMustConstraints();
+ assertEquals(2, mustConstraints.size());
final String must1 = "ifType != 'ethernet' or (ifType = 'ethernet' and ifMTU = 1500)";
final String must2 = "ifType != 'atm' or (ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)";
// constraints
final ConstraintDefinition constraints = nodes.getConstraints();
assertEquals("class != 'wheel'", constraints.getWhenCondition().get().toString());
- final Collection<MustDefinition> mustConstraints = constraints.getMustConstraints();
- assertEquals(2, constraints.getMustConstraints().size());
+ final Collection<MustDefinition> mustConstraints = nodes.getMustConstraints();
+ assertEquals(2, mustConstraints.size());
final String must1 = "ifType != 'atm' or (ifType = 'atm' and ifMTU <= 17966 and ifMTU >= 64)";
final String errMsg1 = "An atm MTU must be 64 .. 17966";
// :TODO augment to ifEntry have when condition and so in consequence
// ifEntry should be a context node ?
// assertNull(constraints.getWhenCondition());
- assertEquals(0, constraints.getMustConstraints().size());
+ assertEquals(0, ifEntry.getMustConstraints().size());
assertEquals(1, (int) constraints.getMinElements());
assertEquals(11, (int) constraints.getMaxElements());
// test AugmentationTarget args
assertEquals(Optional.of("address reference added by refine"), refineLeaf.getReference());
assertFalse(refineLeaf.isConfiguration());
assertTrue(refineLeaf.isMandatory());
- final Collection<MustDefinition> leafMustConstraints = refineLeaf.getConstraints().getMustConstraints();
+ final Collection<MustDefinition> leafMustConstraints = refineLeaf.getMustConstraints();
assertEquals(1, leafMustConstraints.size());
final MustDefinition leafMust = leafMustConstraints.iterator().next();
assertEquals("ifType != 'ethernet' or (ifType = 'ethernet' and ifMTU = 1500)", leafMust.toString());
// container port
assertNotNull(refineContainer);
- final Collection<MustDefinition> mustConstraints = refineContainer.getConstraints().getMustConstraints();
+ final Collection<MustDefinition> mustConstraints = refineContainer.getMustConstraints();
assertTrue(mustConstraints.isEmpty());
assertEquals(Optional.of("description of port defined by refine"), refineContainer.getDescription());
assertEquals(Optional.of("port reference added by refine"), refineContainer.getReference());