package org.testng.internal.annotations; import java.lang.reflect.Constructor; import java.lang.reflect.Method; import org.testng.ITestNGMethod; import org.testng.annotations.IAnnotation; /** * 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 Cedric Beust */ public interface IAnnotationFinder { /** * @param cls * @param annotationClass * @return The annotation on the class or null if none found. */ public A findAnnotation(Class cls, Class annotationClass); /** * @param m * @param annotationClass * @return The annotation on the method. * If not found, return the annotation on the declaring class. * If not found, return null. */ public A findAnnotation(Method m, Class annotationClass); A findAnnotation(ITestNGMethod m, Class annotationClass); /** * @param cons * @param annotationClass * @return The annotation on the method. * If not found, return the annotation on the declaring class. * If not found, return null. */ public A findAnnotation(Constructor cons, Class annotationClass); /** * @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 (null * if the parameter isn't optional) */ public String[] findOptionalValues(Method method); /** * @return the @Optional values of this method's parameters (null * if the parameter isn't optional) */ public String[] findOptionalValues(Constructor ctor); }