1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.tools.plugin.extractor.annotations.scanner.visitors;
20
21 import java.util.HashMap;
22 import java.util.List;
23 import java.util.Map;
24
25 import org.apache.maven.tools.plugin.extractor.annotations.scanner.MojoAnnotationsScanner;
26 import org.objectweb.asm.AnnotationVisitor;
27 import org.objectweb.asm.MethodVisitor;
28 import org.objectweb.asm.Opcodes;
29 import org.objectweb.asm.Type;
30
31
32
33
34
35
36 public class MojoMethodVisitor extends MethodVisitor implements MojoParameterVisitor {
37 private final String className;
38 private final String fieldName;
39 private final List<String> typeParameters;
40 private Map<String, MojoAnnotationVisitor> annotationVisitorMap = new HashMap<>();
41
42 public MojoMethodVisitor(String fieldName, String className, List<String> typeParameters) {
43 super(Opcodes.ASM9);
44 this.fieldName = fieldName;
45 this.className = className;
46 this.typeParameters = typeParameters;
47 }
48
49 @Override
50 public AnnotationVisitor visitAnnotation(String desc, boolean visible) {
51 String annotationClassName = Type.getType(desc).getClassName();
52 if (!MojoAnnotationsScanner.METHOD_LEVEL_ANNOTATIONS.contains(annotationClassName)) {
53 return null;
54 }
55
56 MojoAnnotationVisitor mojoAnnotationVisitor = new MojoAnnotationVisitor(annotationClassName);
57 annotationVisitorMap.put(annotationClassName, mojoAnnotationVisitor);
58 return mojoAnnotationVisitor;
59 }
60
61 @Override
62 public String getFieldName() {
63 return fieldName;
64 }
65
66 @Override
67 public String getClassName() {
68 return className;
69 }
70
71 @Override
72 public List<String> getTypeParameters() {
73 return typeParameters;
74 }
75
76 @Override
77 public Map<String, MojoAnnotationVisitor> getAnnotationVisitorMap() {
78 return annotationVisitorMap;
79 }
80
81 @Override
82 public boolean isAnnotationOnMethod() {
83 return true;
84 }
85 }