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 }