package com.sebastian_daschner.jaxrs_analyzer.analysis.classes; import com.sebastian_daschner.jaxrs_analyzer.model.results.MethodResult; import org.objectweb.asm.ClassVisitor; import org.objectweb.asm.MethodVisitor; import org.objectweb.asm.Type; import java.lang.reflect.Method; import static org.objectweb.asm.Opcodes.*; /** * @author Sebastian Daschner */ class JAXRSAnnotatedSuperMethodClassVisitor extends ClassVisitor { private final MethodResult methodResult; private final Method method; JAXRSAnnotatedSuperMethodClassVisitor(final MethodResult methodResult, final Method method) { super(ASM5); this.methodResult = methodResult; this.method = method; } @Override public MethodVisitor visitMethod(int access, String name, String desc, String signature, String[] exceptions) { final boolean legalModifiers = ((access & ACC_SYNTHETIC) | (access & ACC_STATIC) | (access & ACC_NATIVE)) == 0; final String descriptor = Type.getMethodDescriptor(method); if (legalModifiers && method.getName().equals(name) && (descriptor.equals(desc) || descriptor.equals(signature))) return new JAXRSAnnotatedSuperMethodVisitor(methodResult); return null; } }