package com.avaje.ebean.enhance.agent; import com.avaje.ebean.enhance.asm.AnnotationVisitor; import com.avaje.ebean.enhance.asm.Opcodes; /** * Reads the annotation information storing it in a AnnotationInfo. */ public class AnnotationInfoVisitor extends AnnotationVisitor { final AnnotationInfo info; final String prefix; public AnnotationInfoVisitor(String prefix, AnnotationInfo info, AnnotationVisitor av) { super(Opcodes.ASM5, av); this.info = info; this.prefix = prefix; } public void visit(String name, Object value) { info.add(prefix, name, value); } public AnnotationVisitor visitAnnotation(String name, String desc) { return create(name); } public AnnotationVisitor visitArray(String name) { return create(name); } private AnnotationInfoVisitor create(String name){ String newPrefix = prefix == null ? name: prefix+"."+name; return new AnnotationInfoVisitor(newPrefix, info, av); } public void visitEnd() { av.visitEnd(); } public void visitEnum(String name, String desc, String value) { info.addEnum(prefix, name, desc, value); av.visitEnum(name, desc, value); } }