Home | History | Annotate | Download | only in internal
      1 package org.testng.internal;
      2 
      3 import org.testng.IClass;
      4 import org.testng.ITestClassFinder;
      5 import org.testng.ITestContext;
      6 import org.testng.ITestObjectFactory;
      7 import org.testng.collections.Maps;
      8 import org.testng.internal.annotations.IAnnotationFinder;
      9 import org.testng.xml.XmlClass;
     10 import org.testng.xml.XmlTest;
     11 
     12 import java.util.Map;
     13 
     14 /**
     15  * This class
     16  *
     17  * @author <a href="mailto:cedric (at) beust.com">Cedric Beust</a>
     18  */
     19 abstract public class BaseClassFinder implements ITestClassFinder {
     20   private Map<Class, IClass> m_classes = Maps.newLinkedHashMap();
     21 
     22   @Override
     23   public IClass getIClass(Class cls) {
     24     return m_classes.get(cls);
     25   }
     26 
     27   protected void putIClass(Class cls, IClass iClass) {
     28     if (! m_classes.containsKey(cls)) {
     29       m_classes.put(cls, iClass);
     30     }
     31   }
     32 
     33   private void ppp(String s) {
     34     System.out.println("[BaseClassFinder] " + s);
     35   }
     36 
     37   /**
     38    * @param cls
     39    * @return An IClass for the given class, or null if we have
     40    * already treated this class.
     41    */
     42   protected IClass findOrCreateIClass(ITestContext context, Class cls, XmlClass xmlClass,
     43       Object instance, XmlTest xmlTest, IAnnotationFinder annotationFinder,
     44       ITestObjectFactory objectFactory)
     45   {
     46     IClass result = m_classes.get(cls);
     47     if (null == result) {
     48       result = new ClassImpl(context, cls, xmlClass, instance, m_classes, xmlTest, annotationFinder,
     49           objectFactory);
     50       m_classes.put(cls, result);
     51     }
     52 
     53     return result;
     54   }
     55 
     56   protected Map getExistingClasses() {
     57     return m_classes;
     58   }
     59 
     60   protected boolean classExists(Class cls) {
     61     return m_classes.containsKey(cls);
     62   }
     63 
     64   @Override
     65   public IClass[] findTestClasses() {
     66     return m_classes.values().toArray(new IClass[m_classes.size()]);
     67    }
     68 }
     69