blob: 4f2db4ef06e03dae10471a8933a6feee81346b91 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
package com.xtremelabs.robolectric.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() {
Class<? extends T> aClass;
if (looksFullyQualified(className)) {
aClass = safeClassForName(className);
} else {
aClass = safeClassForName(packageName + "." + className);
if (aClass == null) {
aClass = safeClassForName(packageName + className);
}
}
if (aClass == null) {
throw new RuntimeException("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;
}
}
}
|