X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=yang%2Fyang-common%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fyangtools%2Fyang%2Fcommon%2FAbstractCanonicalValueValidator.java;h=2d6c247dd07f0542fbfd61600ca8a67a1348bb96;hb=c7e8081901536d97a12b141cbb538f70c7a93d61;hp=c1ef9519428ea614eef2b4d28679ddaf4829ed5e;hpb=1d2fe1ada4e60b4b64f7a2f61766196e1ec8d391;p=yangtools.git diff --git a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractCanonicalValueValidator.java b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractCanonicalValueValidator.java index c1ef951942..2d6c247dd0 100644 --- a/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractCanonicalValueValidator.java +++ b/yang/yang-common/src/main/java/org/opendaylight/yangtools/yang/common/AbstractCanonicalValueValidator.java @@ -10,8 +10,8 @@ package org.opendaylight.yangtools.yang.common; import static java.util.Objects.requireNonNull; import com.google.common.annotations.Beta; -import javax.annotation.concurrent.ThreadSafe; import org.eclipse.jdt.annotation.NonNullByDefault; +import org.opendaylight.yangtools.concepts.Variant; /** * Abstract base class for implementing validators. @@ -22,7 +22,6 @@ import org.eclipse.jdt.annotation.NonNullByDefault; */ @Beta @NonNullByDefault -@ThreadSafe public abstract class AbstractCanonicalValueValidator, V extends T> implements CanonicalValueValidator { private static final ClassValue IMPLEMENTATIONS = new AbstractCanonicalValueImplementationValidator() { @@ -53,15 +52,16 @@ public abstract class AbstractCanonicalValueValidator } @Override - public final V validateRepresentation(final T value) { + public final Variant validateRepresentation(final T value) { return validatedClass.isAssignableFrom(value.validator().getValidatedRepresentationClass()) - ? validatedClass.cast(value) : validate(value); + ? Variant.ofFirst(validatedClass.cast(value)) : validate(value); } @Override - public final V validateRepresentation(final T value, final String canonicalString) { + public final Variant validateRepresentation(final T value, + final String canonicalString) { return validatedClass.isAssignableFrom(value.validator().getValidatedRepresentationClass()) - ? validatedClass.cast(value) : validate(value, requireNonNull(canonicalString)); + ? Variant.ofFirst(validatedClass.cast(value)) : validate(value, requireNonNull(canonicalString)); } /** @@ -69,11 +69,10 @@ public abstract class AbstractCanonicalValueValidator * provide a validation algorithm which does not rely on canonical strings but works on representation state only. * * @param value Representation value - * @return Validated representation + * @return Validated representation or CanonicalValueViolation * @throws NullPointerException if {@code value} is null - * @throws IllegalArgumentException if the value does not meet validation criteria. */ - protected V validate(final T value) { + protected Variant validate(final T value) { return validate(value, value.toCanonicalString()); } @@ -85,7 +84,6 @@ public abstract class AbstractCanonicalValueValidator * @param canonicalString Canonical string matching the representation value * @return Validated representation * @throws NullPointerException if {@code value} or {@code canonicalString} is null. - * @throws IllegalArgumentException if the value does not meet validation criteria. */ - protected abstract V validate(T value, String canonicalString); + protected abstract Variant validate(T value, String canonicalString); }