io.imqa.asm.HttpVisitor Maven / Gradle / Ivy
package io.imqa.asm;
import org.objectweb.asm.MethodVisitor;
import org.objectweb.asm.Opcodes;
public class HttpVisitor extends MethodVisitor {
private InjectMethod injectMethod;
protected HttpVisitor(int opcode, MethodVisitor mv, InjectMethod injectMethod) {
super(opcode, mv);
this.injectMethod = injectMethod;
}
@Override
public void visitMethodInsn(int opcode, String owner, String name,
String desc, boolean itf) {
onMethodBody();
}
protected void onMethodBody() {
mv.visitTypeInsn(Opcodes.NEW, injectMethod.className);
mv.visitInsn(Opcodes.DUP);
// openConnection
mv.visitTypeInsn(Opcodes.CHECKCAST, injectMethod.className);
mv.visitMethodInsn(
Opcodes.INVOKESPECIAL,
injectMethod.className,
injectMethod.methodName,
injectMethod.desc,
false);
// mv.visitInsn(Opcodes.ATHROW);
}
@Override
public void visitMaxs(int maxStack, int maxLocals) {
super.visitMaxs(maxStack, maxLocals);
}
}