Changed license to LGPLv3.
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / ClassReference.java
1 /*
2  * JavaInspect - Utility to visualize java software
3  * Copyright (C) 2013-2014, 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 java.util.ArrayList;
13 import java.util.List;
14
15 import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException;
16 import eu.svjatoslav.commons.string.tokenizer.Tokenizer;
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 }