Home | History | Annotate | Download | only in internal
      1 package org.testng.internal;
      2 
      3 import org.testng.collections.Maps;
      4 import org.testng.xml.XmlClass;
      5 
      6 import java.util.List;
      7 import java.util.Map;
      8 import java.util.Set;
      9 
     10 public class ClassInfoMap {
     11   private Map<Class<?>, XmlClass> m_map = Maps.newLinkedHashMap();
     12   private boolean includeNestedClasses;
     13 
     14   public ClassInfoMap() {
     15   }
     16 
     17   public ClassInfoMap(List<XmlClass> classes) {
     18     this(classes, true);
     19   }
     20 
     21   public ClassInfoMap(List<XmlClass> classes, boolean includeNested) {
     22     includeNestedClasses = includeNested;
     23     for (XmlClass xmlClass : classes) {
     24       try {
     25         Class c = xmlClass.getSupportClass();
     26         registerClass(c, xmlClass);
     27       } catch (NoClassDefFoundError e) {
     28         Utils.log("[ClassInfoMap]", 1, "Unable to open class " + xmlClass.getName()
     29             + " - unable to resolve class reference " + e.getMessage());
     30         if (xmlClass.loadClasses()) {
     31           throw e;
     32         }
     33       }
     34     }
     35   }
     36 
     37   private void registerClass(Class cl, XmlClass xmlClass) {
     38     m_map.put(cl, xmlClass);
     39     if (includeNestedClasses) {
     40       for (Class c : cl.getClasses()) {
     41         if (! m_map.containsKey(c)) registerClass(c, xmlClass);
     42       }
     43     }
     44   }
     45 
     46   public void addClass(Class<?> cls) {
     47     m_map.put(cls, null);
     48   }
     49 
     50   public XmlClass getXmlClass(Class<?> cls) {
     51     return m_map.get(cls);
     52   }
     53 
     54   public void put(Class<?> cls, XmlClass xmlClass) {
     55     m_map.put(cls, xmlClass);
     56   }
     57 
     58   public Set<Class<?>> getClasses() {
     59     return m_map.keySet();
     60   }
     61 
     62   public int getSize() {
     63     return m_map.size();
     64   }
     65 }
     66