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%2Ftree%2FMinMaxElementsValidation.java;h=c9a9cbea997499b3b8f24652b07c9d0c00620132;hb=970923b5f47f7507ec78021965fa5df1a878af48;hp=f5c75a6524eafc0d2b56ed2ccc19025f79aa9450;hpb=ffe8f4ea13bd2bab97514aa1d6ee257a1d7b39ff;p=yangtools.git diff --git a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java index f5c75a6524..c9a9cbea99 100644 --- a/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java +++ b/yang/yang-data-impl/src/main/java/org/opendaylight/yangtools/yang/data/impl/schema/tree/MinMaxElementsValidation.java @@ -7,13 +7,14 @@ */ package org.opendaylight.yangtools.yang.data.impl.schema.tree; +import static com.google.common.base.Preconditions.checkArgument; + import com.google.common.base.MoreObjects.ToStringHelper; import java.util.Optional; import org.eclipse.jdt.annotation.NonNull; import org.eclipse.jdt.annotation.NonNullByDefault; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNodeContainer; -import org.opendaylight.yangtools.yang.data.api.schema.UnkeyedListNode; import org.opendaylight.yangtools.yang.data.api.schema.tree.RequiredElementCountException; import org.opendaylight.yangtools.yang.model.api.DataSchemaNode; import org.opendaylight.yangtools.yang.model.api.ElementCountConstraint; @@ -43,13 +44,12 @@ final class MinMaxElementsValidation data) { - enforceOnData(data, (actual, message) -> new IllegalArgumentException(message)); + void enforceOnData(final NormalizedNode data) { + enforceOnData(data, (actual, message) -> new MinMaxElementsValidationFailedException(message)); } @Override - void enforceOnData(final ModificationPath path, final NormalizedNode data) - throws RequiredElementCountException { + void enforceOnData(final ModificationPath path, final NormalizedNode data) throws RequiredElementCountException { enforceOnData(data, (actual, message) -> new RequiredElementCountException(path.toInstanceIdentifier(), minElements, maxElements, actual, message)); } @@ -60,9 +60,10 @@ final class MinMaxElementsValidation void enforceOnData(final NormalizedNode value, + private void enforceOnData(final NormalizedNode value, final ExceptionSupplier exceptionSupplier) throws X { - final int children = numOfChildrenFromValue(value); + checkArgument(value instanceof NormalizedNodeContainer, "Value %s is not a NormalizedNodeContainer", value); + final int children = ((NormalizedNodeContainer) value).size(); if (minElements > children) { throw exceptionSupplier.get(children, value.getIdentifier() + " does not have enough elements (" + children + "), needs at least " + minElements); @@ -77,16 +78,4 @@ final class MinMaxElementsValidation value) { - if (value instanceof NormalizedNodeContainer) { - return ((NormalizedNodeContainer) value).size(); - } else if (value instanceof UnkeyedListNode) { - return ((UnkeyedListNode) value).getSize(); - } - - throw new IllegalArgumentException(String.format( - "Unexpected type '%s', expected types are NormalizedNodeContainer and UnkeyedListNode", - value.getClass())); - } }