1 package jp.sourceforge.stigmata.birthmarks.smc;
3 import jp.sourceforge.stigmata.Birthmark;
4 import jp.sourceforge.stigmata.BirthmarkContext;
5 import jp.sourceforge.stigmata.birthmarks.BirthmarkExtractVisitor;
7 import org.objectweb.asm.ClassVisitor;
8 import org.objectweb.asm.MethodVisitor;
9 import org.objectweb.asm.Opcodes;
15 * @author Haruaki TAMADA
17 public class SequentialMethodCallBirthmarkExtractVisitor extends BirthmarkExtractVisitor{
18 public SequentialMethodCallBirthmarkExtractVisitor(ClassVisitor visitor, Birthmark birthmark, BirthmarkContext context){
19 super(visitor, birthmark, context);
23 public MethodVisitor visitMethod(int access, String name, String desc,
24 String signature, String[] exceptions){
26 MethodVisitor visitor = super.visitMethod(access, name, desc, signature, exceptions);
28 return new MethodVisitor(Opcodes.ASM4, visitor){
30 public void visitMethodInsn(int opcode, String owner, String name, String desc){
31 String className = owner.replace('/', '.');
32 if(getEnvironment().getWellknownClassManager().isWellKnownClass(className)){
33 addElement(className, name, desc);
35 super.visitMethodInsn(opcode, owner, name, desc);
40 protected void addElement(String className, String methodName, String description){
41 addElement(new MethodCallBirthmarkElement(className, methodName, description));