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    }