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.ASM9 );
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 @Override
64 public AnnotationVisitor visitAnnotation( String desc, boolean visible )
65 {
66 String annotationClassName = Type.getType( desc ).getClassName();
67 if ( !MojoAnnotationsScanner.FIELD_LEVEL_ANNOTATIONS.contains( annotationClassName ) )
68 {
69 return null;
70 }
71 mojoAnnotationVisitor = new MojoAnnotationVisitor( logger, annotationClassName );
72 return mojoAnnotationVisitor;
73 }
74
75 @Override
76 public void visitAttribute( Attribute attribute )
77 {
78
79 }
80
81 @Override
82 public void visitEnd()
83 {
84
85 }
86
87 public String getClassName()
88 {
89 return className;
90 }
91
92 public void setClassName( String className )
93 {
94 this.className = className;
95 }
96 }