12216ab035533586b01a3a899c6eba7f1454a9b3
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / ClassReference.java
1 /*
2  * JavaInspect - Utility to visualize java software
3  * Copyright (C) 2013-2015, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
4  * 
5  * This program is free software; you can redistribute it and/or
6  * modify it under the terms of version 3 of the GNU Lesser General Public License
7  * or later as published by the Free Software Foundation.
8  */
9
10 package eu.svjatoslav.inspector.java.methods;
11
12 import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException;
13 import eu.svjatoslav.commons.string.tokenizer.Tokenizer;
14
15 import java.util.ArrayList;
16 import java.util.List;
17
18 public class ClassReference {
19
20     public String name;
21
22     List<ClassReference> typeParameters = new ArrayList<ClassReference>();
23
24     public ClassReference(final Tokenizer tokenizer)
25             throws InvalidSyntaxException {
26         name = tokenizer.getNextToken().token;
27
28         if (!tokenizer.probeNextToken("<"))
29             return;
30
31         while (true) {
32             final ClassReference parameterType = new ClassReference(tokenizer);
33             typeParameters.add(parameterType);
34
35             if (!tokenizer.probeNextToken(","))
36                 break;
37         }
38
39         tokenizer.expectNextToken(">");
40     }
41
42     @Override
43     public String toString() {
44         final EnumerationBuffer result = new EnumerationBuffer();
45
46         result.append(name);
47
48         if (typeParameters.size() > 0) {
49             result.append("<");
50             for (final ClassReference classReference : typeParameters)
51                 result.appendEnumeration(classReference.toString());
52             result.append(">");
53         }
54
55         return result.toString();
56     }
57 }