All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.imqa.asm.FindClassVisitor Maven / Gradle / Ivy

There is a newer version: 2.25.11
Show newest version
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;
    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy