X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-data-impl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fdata%2Fimpl%2Fschema%2Fbuilder%2Fimpl%2Fvalid%2FDataNodeContainerValidator.java;h=abdfaabd92722cbc7641acf19ebf0e8fb19d6c87;hb=970923b5f47f7507ec78021965fa5df1a878af48;hp=d2739d657f4f3644a2f24e7092849f7f72532e89;hpb=8492fabeed50c729d19c9657717905fdbc3fb93a;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java index d2739d657f..abdfaabd92 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/builder/impl/valid/DataNodeContainerValidator.java @@ -7,16 +7,18 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.builder.impl.valid; -import com.google.common.base.Preconditions; -import com.google.common.collect.Sets; +import static java.util.Objects.requireNonNull; + +import java.util.HashSet; import java.util.Set; import org.opendaylight.yangtools.yang.common.QName; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.AugmentationIdentifier; +import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier.PathArgument; import org.opendaylight.yangtools.yang.data.api.schema.DataContainerChild; -import org.opendaylight.yangtools.yang.data.impl.schema.SchemaUtils; -import org.opendaylight.yangtools.yang.model.api.AugmentationSchema; +import org.opendaylight.yangtools.yang.data.util.DataSchemaContextNode; +import org.opendaylight.yangtools.yang.model.api.AugmentationSchemaNode; import org.opendaylight.yangtools.yang.model.api.AugmentationTarget; -import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode; +import org.opendaylight.yangtools.yang.model.api.CaseSchemaNode; import org.opendaylight.yangtools.yang.model.api.DataNodeContainer; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; @@ -24,55 +26,53 @@ import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; * General validator for container like statements, e.g. container, list-entry, choice, augment */ public class DataNodeContainerValidator { - + private final Set augments = new HashSet<>(); private final DataNodeContainer schema; private final Set childNodes; - private final Set augments = Sets.newHashSet(); - - public DataNodeContainerValidator(DataNodeContainer schema) { - this.schema = Preconditions.checkNotNull(schema, "Schema was null"); + public DataNodeContainerValidator(final DataNodeContainer schema) { + this.schema = requireNonNull(schema, "Schema was null"); this.childNodes = getChildNodes(schema); - if(schema instanceof AugmentationTarget) { - for (AugmentationSchema augmentationSchema : ((AugmentationTarget) schema).getAvailableAugmentations()) { - augments.add(SchemaUtils.getNodeIdentifierForAugmentation(augmentationSchema)); + if (schema instanceof AugmentationTarget) { + for (AugmentationSchemaNode augmentation : ((AugmentationTarget) schema).getAvailableAugmentations()) { + augments.add(DataSchemaContextNode.augmentationIdentifierFrom(augmentation)); } } } - private boolean isKnownChild(YangInstanceIdentifier.PathArgument child) { - if(child instanceof YangInstanceIdentifier.AugmentationIdentifier) { + private boolean isKnownChild(final PathArgument child) { + if (child instanceof AugmentationIdentifier) { return augments.contains(child); } return childNodes.contains(child.getNodeType()); } - public void validateChild(YangInstanceIdentifier.PathArgument child) { + public void validateChild(final PathArgument child) { DataValidationException.checkLegalChild(isKnownChild(child), child, schema, childNodes, augments); } - public DataContainerChild validateChild(DataContainerChild child) { + public DataContainerChild validateChild(final DataContainerChild child) { validateChild(child.getIdentifier()); return child; } /** - * Map all direct child nodes. Skip augments since they have no qname. List cases since cases do not exist in NormalizedNode API. + * Map all direct child nodes. Skip augments since they have no qname. List cases since cases do not exist in + * NormalizedNode API. */ - private static Set getChildNodes(DataNodeContainer nodeContainer) { - Set allChildNodes = Sets.newHashSet(); + private static Set getChildNodes(final DataNodeContainer nodeContainer) { + Set allChildNodes = new HashSet<>(); for (DataSchemaNode childSchema : nodeContainer.getChildNodes()) { - if(childSchema instanceof ChoiceCaseNode) { + if (childSchema instanceof CaseSchemaNode) { allChildNodes.addAll(getChildNodes((DataNodeContainer) childSchema)); - } else if (!(childSchema instanceof AugmentationSchema)) { + } else if (!(childSchema instanceof AugmentationSchemaNode)) { allChildNodes.add(childSchema.getQName()); } } return allChildNodes; } - }