001 package org.shiftone.jrat.inject.bytecode.asm;
002
003
004 import org.objectweb.asm.MethodAdapter;
005 import org.objectweb.asm.MethodVisitor;
006 import org.objectweb.asm.Opcodes;
007 import org.shiftone.jrat.util.log.Logger;
008
009
010 /**
011 * All this visitor does is add a single instruction to the start of the static
012 * intitializer to call the JRat initializer method.
013 *
014 * @author jeff@shiftone.org (Jeff Drost)
015 */
016 public class ClassInitMethodVisitor extends MethodAdapter implements Constants {
017
018 private static final Logger LOG = Logger.getLogger(ClassInitMethodVisitor.class);
019 private String className;
020
021 public ClassInitMethodVisitor(String className, MethodVisitor mv) {
022
023 super(mv);
024
025 this.className = className;
026 }
027
028
029 public void visitCode() {
030 super.visitMethodInsn(Opcodes.INVOKESTATIC, className, initializeName, "()V");
031 super.visitCode();
032 }
033 }