1package org.testng.internal; 2 3import org.testng.IClass; 4import org.testng.ITestClassFinder; 5import org.testng.ITestContext; 6import org.testng.ITestObjectFactory; 7import org.testng.collections.Maps; 8import org.testng.internal.annotations.IAnnotationFinder; 9import org.testng.xml.XmlClass; 10import org.testng.xml.XmlTest; 11 12import java.util.Map; 13 14/** 15 * This class 16 * 17 * @author <a href="mailto:cedric@beust.com">Cedric Beust</a> 18 */ 19abstract 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