package com.avaje.ebean.enhance.agent;
import com.avaje.ebean.enhance.asm.AnnotationVisitor;
import com.avaje.ebean.enhance.asm.Attribute;
import com.avaje.ebean.enhance.asm.FieldVisitor;
import com.avaje.ebean.enhance.asm.Opcodes;
/**
* Used to collect information about a field (specifically from field annotations).
*/
public class LocalFieldVisitor extends FieldVisitor {
private final FieldMeta fieldMeta;
/**
* Constructor used for subclass generation.
* @param fieldMeta the fieldMeta data
*/
public LocalFieldVisitor(FieldVisitor fv, FieldMeta fieldMeta) {
super(Opcodes.ASM5, fv);
this.fieldMeta = fieldMeta;
}
public boolean isPersistentSetter(String methodDesc){
return fieldMeta.isPersistentSetter(methodDesc);
}
public boolean isPersistentGetter(String methodDesc){
return fieldMeta.isPersistentGetter(methodDesc);
}
/**
* Return the field name.
*/
public String getName() {
return fieldMeta.getFieldName();
}
/**
* Return the Meta data for this field.
*/
public FieldMeta getFieldMeta() {
return fieldMeta;
}
public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
fieldMeta.addAnnotationDesc(desc);
if (fv != null){
return fv.visitAnnotation(desc, visible);
} else {
return null;
}
}
public void visitAttribute(Attribute attr) {
if (fv != null){
fv.visitAttribute(attr);
}
}
public void visitEnd() {
if (fv != null){
fv.visitEnd();
}
}
}