package com.tns;
import java.io.IOException;
class ClassResolver {
private final Runtime runtime;
public ClassResolver(Runtime runtime) {
this.runtime = runtime;
}
public Class<?> resolveClass(String fullClassName, DexFactory dexFactory, String[] methodOverrides, String[] implementedInterfaces, boolean isInterface) throws ClassNotFoundException, IOException {
String cannonicalClassName = fullClassName.replace('/', '.');
String name = null;
String className = cannonicalClassName;
int classExtendSeparatorIndex = cannonicalClassName.indexOf("_f");
if (classExtendSeparatorIndex != -1) {
className = cannonicalClassName.substring(0, classExtendSeparatorIndex);
name = cannonicalClassName.substring(classExtendSeparatorIndex + 1);
} else {
classExtendSeparatorIndex = cannonicalClassName.indexOf("_unknown_location");
if (classExtendSeparatorIndex != -1) {
className = cannonicalClassName.substring(0, classExtendSeparatorIndex);
name = cannonicalClassName.substring(classExtendSeparatorIndex + 1);
}
}
Class<?> clazz = null;
boolean isBindingClass = cannonicalClassName.startsWith("com.tns.gen") && !cannonicalClassName.startsWith("com.tns.tests.");
// if binding generate proxy or load pregenerated
if (isBindingClass) {
if (name == null || name == "") {
if (isInterface) {
name = "";
} else {
name = "0";
}
}
clazz = dexFactory.resolveClass(name, className, methodOverrides, implementedInterfaces, isInterface);
}
if (clazz == null) {
clazz = Runtime.getClassForName(className);
}
return clazz;
}
}