Example usage for org.objectweb.asm FieldVisitor FieldVisitor

List of usage examples for org.objectweb.asm FieldVisitor FieldVisitor

Introduction

In this page you can find the example usage for org.objectweb.asm FieldVisitor FieldVisitor.

Prototype

FieldVisitor

Source Link

Usage

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() {
        }
    };
}