org.shiftone.jrat.inject.bytecode.asm
Class MethodCriteriaClassVisitor

java.lang.Object
  extended by org.shiftone.jrat.inject.bytecode.asm.MethodCriteriaClassVisitor
All Implemented Interfaces:
org.objectweb.asm.ClassVisitor

public class MethodCriteriaClassVisitor
extends java.lang.Object
implements org.objectweb.asm.ClassVisitor

Author:
jeff@shiftone.org (Jeff Drost)

Constructor Summary
MethodCriteriaClassVisitor(org.objectweb.asm.ClassVisitor injector, org.objectweb.asm.ClassVisitor bypass)
           
 
Method Summary
 void setCriteria(MethodCriteria criteria)
           
 void visit(int version, int access, java.lang.String name, java.lang.String signature, java.lang.String superName, java.lang.String[] interfaces)
          when this method is called MethodCriteria.isMatch(className) is checked to see if any injection is necessary.
 org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String desc, boolean visible)
           
 void visitAttribute(org.objectweb.asm.Attribute attr)
           
 void visitEnd()
           
 org.objectweb.asm.FieldVisitor visitField(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.Object value)
           
 void visitInnerClass(java.lang.String name, java.lang.String outerName, java.lang.String innerName, int access)
           
 org.objectweb.asm.MethodVisitor visitMethod(int access, java.lang.String name, java.lang.String desc, java.lang.String signature, java.lang.String[] exceptions)
          when this method is called MethodCriteria.isMatch(className, methodName, ...) is checked to see if any injection is necessary for this method.
 void visitOuterClass(java.lang.String owner, java.lang.String name, java.lang.String desc)
           
 void visitSource(java.lang.String source, java.lang.String debug)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

MethodCriteriaClassVisitor

public MethodCriteriaClassVisitor(org.objectweb.asm.ClassVisitor injector,
                                  org.objectweb.asm.ClassVisitor bypass)
Method Detail

setCriteria

public void setCriteria(MethodCriteria criteria)

visit

public void visit(int version,
                  int access,
                  java.lang.String name,
                  java.lang.String signature,
                  java.lang.String superName,
                  java.lang.String[] interfaces)
when this method is called MethodCriteria.isMatch(className) is checked to see if any injection is necessary. If not, then the default visitor is set to bypass the injection process.

Specified by:
visit in interface org.objectweb.asm.ClassVisitor

visitMethod

public org.objectweb.asm.MethodVisitor visitMethod(int access,
                                                   java.lang.String name,
                                                   java.lang.String desc,
                                                   java.lang.String signature,
                                                   java.lang.String[] exceptions)
when this method is called MethodCriteria.isMatch(className, methodName, ...) is checked to see if any injection is necessary for this method. If not, then the bypass visitor is used. Otherwise, the default visitor is used (which was set in the class visit method).

Specified by:
visitMethod in interface org.objectweb.asm.ClassVisitor

visitSource

public void visitSource(java.lang.String source,
                        java.lang.String debug)
Specified by:
visitSource in interface org.objectweb.asm.ClassVisitor

visitOuterClass

public void visitOuterClass(java.lang.String owner,
                            java.lang.String name,
                            java.lang.String desc)
Specified by:
visitOuterClass in interface org.objectweb.asm.ClassVisitor

visitAnnotation

public org.objectweb.asm.AnnotationVisitor visitAnnotation(java.lang.String desc,
                                                           boolean visible)
Specified by:
visitAnnotation in interface org.objectweb.asm.ClassVisitor

visitAttribute

public void visitAttribute(org.objectweb.asm.Attribute attr)
Specified by:
visitAttribute in interface org.objectweb.asm.ClassVisitor

visitInnerClass

public void visitInnerClass(java.lang.String name,
                            java.lang.String outerName,
                            java.lang.String innerName,
                            int access)
Specified by:
visitInnerClass in interface org.objectweb.asm.ClassVisitor

visitField

public org.objectweb.asm.FieldVisitor visitField(int access,
                                                 java.lang.String name,
                                                 java.lang.String desc,
                                                 java.lang.String signature,
                                                 java.lang.Object value)
Specified by:
visitField in interface org.objectweb.asm.ClassVisitor

visitEnd

public void visitEnd()
Specified by:
visitEnd in interface org.objectweb.asm.ClassVisitor