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 java.util.HashMap;
23 import java.util.List;
24 import java.util.Map;
25
26 import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScanner;
27 import org.objectweb.asm.AnnotationVisitor;
28 import org.objectweb.asm.FieldVisitor;
29 import org.objectweb.asm.Opcodes;
30 import org.objectweb.asm.Type;
31
32
33
34
35
36
37
38 public class MojoFieldVisitor
39 extends FieldVisitor implements MojoParameterVisitor
40 {
41 private String fieldName;
42
43 private Map<String, MojoAnnotationVisitor> annotationVisitorMap = new HashMap<>();
44
45 private String className;
46
47 private final List<String> typeParameters;
48
49 MojoFieldVisitor( String fieldName, String className, List<String> typeParameters )
50 {
51 super( Opcodes.ASM9 );
52 this.fieldName = fieldName;
53 this.className = className;
54 this.typeParameters = typeParameters;
55 }
56
57 @Override
58 public Map<String, MojoAnnotationVisitor> getAnnotationVisitorMap()
59 {
60 return annotationVisitorMap;
61 }
62
63 @Override
64 public String getFieldName()
65 {
66 return fieldName;
67 }
68
69 @Override
70 public List<String> getTypeParameters()
71 {
72 return typeParameters;
73 }
74
75 @Override
76 public AnnotationVisitor visitAnnotation( String desc, boolean visible )
77 {
78 String annotationClassName = Type.getType( desc ).getClassName();
79 if ( !MojoAnnotationsScanner.FIELD_LEVEL_ANNOTATIONS.contains( annotationClassName ) )
80 {
81 return null;
82 }
83 MojoAnnotationVisitor mojoAnnotationVisitor = new MojoAnnotationVisitor( annotationClassName );
84 annotationVisitorMap.put( annotationClassName, mojoAnnotationVisitor );
85 return mojoAnnotationVisitor;
86 }
87
88 @Override
89 public String getClassName()
90 {
91 return className;
92 }
93
94 @Override
95 public boolean isAnnotationOnMethod()
96 {
97 return false;
98 }
99 }