1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.shared.dependency.analyzer.asm;
20
21 import java.util.HashSet;
22 import java.util.Set;
23
24 import org.objectweb.asm.Type;
25
26
27
28
29
30
31 public class ResultCollector {
32
33 private final Set<String> classes = new HashSet<>();
34
35
36
37
38
39
40 public Set<String> getDependencies() {
41 return classes;
42 }
43
44
45
46
47
48
49 public void addName(String name) {
50 if (name == null) {
51 return;
52 }
53
54
55 if (name.charAt(0) == '[') {
56 int i = 0;
57 do {
58 ++i;
59 } while (name.charAt(i) == '[');
60 if (name.charAt(i) != 'L') {
61
62 return;
63 }
64 name = name.substring(i + 1, name.length() - 1);
65 }
66
67
68 add(name.replace('/', '.'));
69 }
70
71 void addDesc(final String desc) {
72 addType(Type.getType(desc));
73 }
74
75 void addType(final Type t) {
76 switch (t.getSort()) {
77 case Type.ARRAY:
78 addType(t.getElementType());
79 break;
80
81 case Type.OBJECT:
82 addName(t.getClassName());
83 break;
84
85 default:
86 }
87 }
88
89
90
91
92
93
94 public void add(String name) {
95
96 if (name.indexOf('$') < 0) {
97 classes.add(name);
98 }
99 }
100
101 void addNames(final String[] names) {
102 if (names == null) {
103 return;
104 }
105
106 for (String name : names) {
107 addName(name);
108 }
109 }
110
111 void addMethodDesc(final String desc) {
112 addType(Type.getReturnType(desc));
113
114 Type[] types = Type.getArgumentTypes(desc);
115
116 for (Type type : types) {
117 addType(type);
118 }
119 }
120 }