1 package org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScanner;
23 import org.codehaus.plexus.logging.Logger;
24 import org.objectweb.asm.AnnotationVisitor;
25 import org.objectweb.asm.Attribute;
26 import org.objectweb.asm.FieldVisitor;
27 import org.objectweb.asm.Opcodes;
28 import org.objectweb.asm.Type;
29
30
31
32
33
34 public class MojoFieldVisitor
35 extends FieldVisitor
36 {
37 private Logger logger;
38
39 private String fieldName;
40
41 private MojoAnnotationVisitor mojoAnnotationVisitor;
42
43 private String className;
44
45 MojoFieldVisitor( Logger logger, String fieldName, String className )
46 {
47 super( Opcodes.ASM5 );
48 this.logger = logger;
49 this.fieldName = fieldName;
50 this.className = className;
51 }
52
53 public MojoAnnotationVisitor getMojoAnnotationVisitor()
54 {
55 return mojoAnnotationVisitor;
56 }
57
58 public String getFieldName()
59 {
60 return fieldName;
61 }
62
63 public AnnotationVisitor visitAnnotation( String desc, boolean visible )
64 {
65 String annotationClassName = Type.getType( desc ).getClassName();
66 if ( !MojoAnnotationsScanner.FIELD_LEVEL_ANNOTATIONS.contains( annotationClassName ) )
67 {
68 return null;
69 }
70 mojoAnnotationVisitor = new MojoAnnotationVisitor( logger, annotationClassName );
71 return mojoAnnotationVisitor;
72 }
73
74 public void visitAttribute( Attribute attribute )
75 {
76
77 }
78
79 public void visitEnd()
80 {
81
82 }
83
84 public String getClassName()
85 {
86 return className;
87 }
88
89 public void setClassName( String className )
90 {
91 this.className = className;
92 }
93 }