in TransformCore/src/main/java/com/facebook/ads/injkit/ClassFileProcessorImpl.java [33:81]
public void process(InputStream input, OutputStream output)
throws IOException, AnnotationProcessingException {
ClassReader classReader = new ClassReader(input);
ClassNode node = new ClassNode();
classReader.accept(node, 0);
transformClassNode(node);
ClassWriter classWriter =
new ClassWriter(ClassWriter.COMPUTE_FRAMES | ClassWriter.COMPUTE_MAXS) {
@Override
protected ClassLoader getClassLoader() {
return classLoader;
}
@Override
protected String getCommonSuperClass(String type1, String type2) {
Class<?> class1;
try {
class1 = classLoader.loadClass(AsmNameUtils.classInternalNameToJavaName(type1));
} catch (Exception e) {
throw new TypeNotPresentException(type1, e);
}
Class<?> class2;
try {
class2 = classLoader.loadClass(AsmNameUtils.classInternalNameToJavaName(type2));
} catch (Exception e) {
throw new TypeNotPresentException(type2, e);
}
if (class1.isAssignableFrom(class2)) {
return type1;
}
if (class2.isAssignableFrom(class1)) {
return type2;
}
if (class1.isInterface() || class2.isInterface()) {
return "java/lang/Object";
} else {
do {
class1 = class1.getSuperclass();
} while (!class1.isAssignableFrom(class2));
return AsmNameUtils.classJavaNameToInternalName(class1.getName());
}
}
};
node.accept(classWriter);
output.write(classWriter.toByteArray());
}