Home | History | Annotate | Download | only in annotations
      1 package org.testng.internal.annotations;
      2 
      3 import java.lang.reflect.Constructor;
      4 import java.lang.reflect.Method;
      5 
      6 import org.testng.ITestNGMethod;
      7 import org.testng.annotations.IAnnotation;
      8 
      9 
     10 /**
     11  * This interface defines how annotations are found on classes, methods
     12  * and constructors.  It will be implemented by both JDK 1.4 and JDK 5
     13  * annotation finders.
     14  *
     15  * @author <a href="mailto:cedric (at) beust.com">Cedric Beust</a>
     16  */
     17 public interface IAnnotationFinder {
     18 
     19   /**
     20    * @param cls
     21    * @param annotationClass
     22    * @return The annotation on the class or null if none found.
     23    */
     24   public <A extends IAnnotation> A findAnnotation(Class<?> cls, Class<A> annotationClass);
     25 
     26   /**
     27    * @param m
     28    * @param annotationClass
     29    * @return The annotation on the method.
     30    * If not found, return the annotation on the declaring class.
     31    * If not found, return null.
     32    */
     33   public <A extends IAnnotation> A findAnnotation(Method m, Class<A> annotationClass);
     34   <A extends IAnnotation> A findAnnotation(ITestNGMethod m, Class<A> annotationClass);
     35 
     36   /**
     37    * @param cons
     38    * @param annotationClass
     39    * @return The annotation on the method.
     40    * If not found, return the annotation on the declaring class.
     41    * If not found, return null.
     42    */
     43   public <A extends IAnnotation> A findAnnotation(Constructor<?> cons, Class<A> annotationClass);
     44 
     45   /**
     46    * @return true if the ith parameter of the given method has the annotation @TestInstance.
     47    */
     48   public boolean hasTestInstance(Method method, int i);
     49 
     50   /**
     51    * @return the @Optional values of this method's parameters (<code>null</code>
     52    * if the parameter isn't optional)
     53    */
     54   public String[] findOptionalValues(Method method);
     55 
     56   /**
     57    * @return the @Optional values of this method's parameters (<code>null</code>
     58    * if the parameter isn't optional)
     59    */
     60   public String[] findOptionalValues(Constructor ctor);
     61 }
     62