package org.robolectric.android.internal;
public class ClassNameResolver<T> {
private String packageName;
private String className;
public ClassNameResolver(String packageName, String className) {
this.packageName = packageName;
this.className = className;
}
public Class<? extends T> resolve() throws ClassNotFoundException {
Class<? extends T> aClass;
if (looksFullyQualified(className)) {
aClass = safeClassForName(className);
} else {
if (className.startsWith(".")) {
aClass = safeClassForName(packageName + className);
} else {
aClass = safeClassForName(packageName + "." + className);
}
}
if (aClass == null) {
throw new ClassNotFoundException("Could not find a class for package: "
+ packageName + " and class name: " + className);
}
return aClass;
}
private boolean looksFullyQualified(String className) {
return className.contains(".") && !className.startsWith(".");
}
private Class<? extends T> safeClassForName(String classNamePath) {
try {
return (Class<? extends T>) Class.forName(classNamePath);
} catch (ClassNotFoundException e) {
return null;
}
}
}