org.testng.internal.ClassInfoMap Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of testng Show documentation
Show all versions of testng Show documentation
A testing framework for the JVM
package org.testng.internal;
import java.util.Collections;
import org.testng.collections.Maps;
import org.testng.xml.XmlClass;
import java.util.List;
import java.util.Map;
import java.util.Set;
public class ClassInfoMap {
private final Map, XmlClass> m_map = Maps.newLinkedHashMap();
private final boolean includeNestedClasses;
public ClassInfoMap() {
this(Collections.emptyList(), false);
}
public ClassInfoMap(List classes) {
this(classes, true);
}
public ClassInfoMap(List classes, boolean includeNested) {
includeNestedClasses = includeNested;
for (XmlClass xmlClass : classes) {
try {
Class c = xmlClass.getSupportClass();
registerClass(c, xmlClass);
} catch (NoClassDefFoundError e) {
Utils.log("[ClassInfoMap]", 1, "Unable to open class " + xmlClass.getName()
+ " - unable to resolve class reference " + e.getMessage());
if (xmlClass.loadClasses()) {
throw e;
}
}
}
}
private void registerClass(Class cl, XmlClass xmlClass) {
m_map.put(cl, xmlClass);
if (includeNestedClasses) {
for (Class c : cl.getClasses()) {
if (!m_map.containsKey(c)) {
registerClass(c, xmlClass);
}
}
}
}
public void addClass(Class cls) {
m_map.put(cls, null);
}
public XmlClass getXmlClass(Class cls) {
return m_map.get(cls);
}
public void put(Class cls, XmlClass xmlClass) {
m_map.put(cls, xmlClass);
}
public Set> getClasses() {
return m_map.keySet();
}
public boolean isEmpty() {
return m_map.isEmpty();
}
}