List of usage examples for org.objectweb.asm FieldVisitor FieldVisitor
FieldVisitor
From source file:com.getperka.cli.classpath.FieldSearch.java
License:Apache License
@Override protected ClassVisitor getVisitor() { return new ClassAdapter(new EmptyVisitor()) { private Type currentType; @Override//from www . j ava2 s .c o m public void visit(int version, int access, String name, String signature, String superName, String[] interfaces) { currentType = Type.getObjectType(name); } @Override public FieldVisitor visitField(int access, final String fieldName, String desc, String signature, Object value) { // Test the field's assignability to the desired type if (!testAssignable(Type.getType(desc)) || !testModifiers(access)) { return null; } return new FieldVisitor() { private boolean matches = testAnnotation(null); @Override public AnnotationVisitor visitAnnotation(String desc, boolean visible) { // Test for the desired annotation matches |= testAnnotation(desc); return null; } @Override public void visitAttribute(Attribute arg0) { } @Override public void visitEnd() { if (matches) { getAccumulator().add(loadField(currentType, fieldName)); } } }; } }; }
From source file:org.codehaus.plexus.metadata.ann.AnnReader.java
License:Apache License
public FieldVisitor visitField(int access, final String name, final String desc, String signature, Object value) {//w ww .j a va2s. c o m final AnnField field = new AnnField(annClass, access, name, desc); annClass.addField(field); return new FieldVisitor() { public AnnotationVisitor visitAnnotation(String desc, boolean visible) { Ann ann = new Ann(desc); field.addAnn(ann); return new AnnAnnReader(ann); } public void visitAttribute(Attribute attr) { } public void visitEnd() { } }; }