All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.opendaylight.yangtools.yang.common.CanonicalValueValidator Maven / Gradle / Ivy

The newest version!
/*
 * Copyright (c) 2018 Pantheon Technologies, s.r.o. 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.common;

import com.google.common.annotations.Beta;
import org.eclipse.jdt.annotation.NonNullByDefault;
import org.opendaylight.yangtools.concepts.Either;
import org.opendaylight.yangtools.concepts.Immutable;

/**
 * {@link CanonicalValue} validator interface. Implementations of this interface can perform further validation of
 * representation state such that it conforms to a YANG type derived from a type with a {@link CanonicalValue}
 * representation.
 *
 * 

Note: this interface should not be directly implemented. Use {@link AbstractCanonicalValueValidator} instead. * * @param canonical value type * @param validated canonical value type */ @Beta @NonNullByDefault public interface CanonicalValueValidator, V extends T> extends Immutable { /** * Returns the instantiated representation class. The representation class is a {@link CanonicalValue} which * understands the semantics of modeled data and has some internal representation of it. All {@link CanonicalValue}s * which share the same representation class are considered equal if their internal state would result in the * same canonical string representation as defined by the YANG data model. * * @return Representation {@link CanonicalValue} class. */ Class getRepresentationClass(); /** * Return the class which captures the fact it was validated by this validator. * * @return Validated capture of the representation class. */ Class getValidatedRepresentationClass(); /** * Validate a {@link CanonicalValue} representation. Implementations should override this method if they can * provide a validation algorithm which does not rely on canonical strings but works on representation state only. * * @param value Representation value * @return Validated representation or a {@link CanonicalValueViolation} * @throws NullPointerException if {@code value} is null */ default Either validateRepresentation(final T value) { return validateRepresentation(value, value.toCanonicalString()); } /** * Validate a {@link CanonicalValue} representation. Implementations can chose whether they operate on * representation state or canonical string -- both are considered equivalent. Users should call this method if they * have a representation readily available. * * @param value Representation value * @param canonicalString Canonical string matching the representation value * @return Validated representation or a {@link CanonicalValueViolation} * @throws NullPointerException if {@code value} or {@code canonicalString} is null. */ Either validateRepresentation(T value, String canonicalString); }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy