    001    package org.junit.validator;
    002
    003    import org.junit.runners.model.FrameworkField;
    004    import org.junit.runners.model.FrameworkMethod;
    005    import org.junit.runners.model.TestClass;
    006
    007    import static java.util.Collections.emptyList;
    008
    009    import java.util.List;
    010
    011    /**
    012     * Validates annotations on classes and methods. To be validated,
    013     * an annotation should be annotated with {@link ValidateWith}
    014     *
    015     * Instances of this class are shared by multiple test runners, so they should
    016     * be immutable and thread-safe.
    017     *
    018     * @since 4.12
    019     */
    020    public abstract class AnnotationValidator {
    021
    022        private static final List<Exception> NO_VALIDATION_ERRORS = emptyList();
    023
    024        /**
    025         * Validates annotation on the given class.
    026         *
    027         * @param testClass that is being validated
    028         * @return A list of exceptions. Default behavior is to return an empty list.
    029         *
    030         * @since 4.12
    031         */
    032        public List<Exception> validateAnnotatedClass(TestClass testClass) {
    033            return NO_VALIDATION_ERRORS;
    034        }
    035
    036        /**
    037         * Validates annotation on the given field.
    038         *
    039         * @param field that is being validated
    040         * @return A list of exceptions. Default behavior is to return an empty list.
    041         *
    042         * @since 4.12
    043         */
    044        public List<Exception> validateAnnotatedField(FrameworkField field) {
    045            return NO_VALIDATION_ERRORS;
    046
    047        }
    048
    049        /**
    050         * Validates annotation on the given method.
    051         *
    052         * @param method that is being validated
    053         * @return A list of exceptions. Default behavior is to return an empty list.
    054         *
    055         * @since 4.12
    056         */
    057        public List<Exception> validateAnnotatedMethod(FrameworkMethod method) {
    058            return NO_VALIDATION_ERRORS;
    059        }
    060    }