io.imqa.asm.FindClassVisitor Maven / Gradle / Ivy
package io.imqa.asm;
import org.objectweb.asm.ClassVisitor;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
import io.imqa.injector.util.Logger;
public class FindClassVisitor extends ClassVisitor {
private String superClass = "";
private boolean isRoot = false;
private boolean isFind = false;
private String findName = "";
private String findDesc = "";
public FindClassVisitor(ClassVisitor cv, String findName, String findDesc) {
super(Opcodes.ASM6, cv);
this.findName = findName;
this.findDesc = findDesc;
Logger.d("METHOD > " + findName + ", " +findDesc);
}
@Override
public void visit(int version, int access, String name,
String signature, String superName, String[] interfaces) {
cv.visit(version, access, name, signature, superName, interfaces);
this.superClass = superName;
Logger.d("SUPER NAME : " + superName);
if (superClass == null || superClass.equals("")) {
Logger.d("SUPER EMPTY");
isRoot = true;
}
}
@Override
public MethodVisitor visitMethod(int access, String name,
String desc, String signature, String[] exceptions) {
Logger.d("METHOD < " + name + ", " +desc);
if (name.equals(findName) && desc.equals(findDesc)) {
Logger.d("METHOD FIND");
isFind = true;
}
return super.visitMethod(access, name, desc, signature, exceptions);
}
@Override
public void visitEnd() {
cv.visitEnd();
}
public String getSuperClass() {
return superClass;
}
public boolean isRoot() {
return isRoot;
}
public boolean isFind() {
return isFind;
}
}