package org.testng.internal.annotations; import org.testng.annotations.IAnnotation; import java.lang.reflect.Constructor; import java.lang.reflect.Method; /** * This interface defines how annotations are found on classes, methods * and constructors. It will be implemented by both JDK 1.4 and JDK 5 * annotation finders. * * @author <a href="mailto:cedric@beust.com">Cedric Beust</a> */ public interface IAnnotationFinder { /** * @param cls * @param annotationName * @return The annotation on the class or null if none found. */ public IAnnotation findAnnotation(Class cls, Class annotationClass); /** * @param m * @param annotationName * @return The annotation on the method. * If not found, return the annotation on the declaring class. * If not found, return null. */ public IAnnotation findAnnotation(Method m, Class annotationClass); /** * @param m * @param annotationName * @return The annotation on the method. * If not found, return the annotation on the declaring class. * If not found, return null. */ public IAnnotation findAnnotation(Constructor m, Class annotationClass); // No op for JDK15 public void addSourceDirs(String[] dirs); /** * @return true if the ith parameter of the given method has the annotation @TestInstance. */ public boolean hasTestInstance(Method method, int i); /** * @return the @Optional values of this method's parameters (<code>null</code> * if the parameter isn't optional) */ public String[] findOptionalValues(Method method); /** * @return the @Optional values of this method's parameters (<code>null</code> * if the parameter isn't optional) */ public String[] findOptionalValues(Constructor ctor); }