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