1a943f51729774dce9c39f4fd9d7917265573418
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / ClassReference.java
1 package eu.svjatoslav.inspector.java.methods;
2
3 import java.util.ArrayList;
4 import java.util.List;
5
6 import eu.svjatoslav.inspector.tokenizer.InvalidSyntaxException;
7 import eu.svjatoslav.inspector.tokenizer.Tokenizer;
8
9 public class ClassReference {
10
11         public String name;
12
13         List<ClassReference> typeParameters = new ArrayList<ClassReference>();
14
15         public ClassReference(final Tokenizer tokenizer)
16                         throws InvalidSyntaxException {
17                 name = tokenizer.getNextToken().token;
18
19                 if (!tokenizer.probeNextToken("<"))
20                         return;
21
22                 while (true) {
23                         final ClassReference parameterType = new ClassReference(tokenizer);
24                         typeParameters.add(parameterType);
25
26                         if (!tokenizer.probeNextToken(","))
27                                 break;
28                 }
29
30                 tokenizer.expectNextToken(">");
31         }
32
33         @Override
34         public String toString() {
35                 final EnumerationBuffer result = new EnumerationBuffer();
36
37                 result.append(name);
38
39                 if (typeParameters.size() > 0) {
40                         result.append("<");
41                         for (final ClassReference classReference : typeParameters)
42                                 result.appendEnumeration(classReference.toString());
43                         result.append(">");
44                 }
45
46                 return result.toString();
47         }
48 }