Use common library to read file content.
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / ClassReference.java
1 /*
2  * JavaInspect - Utility to visualize java software
3  * Copyright (C) 2013-2020, 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     final List<ClassReference> typeParameters = new ArrayList<>();
21     public String name;
22
23     public ClassReference(final Tokenizer tokenizer)
24             throws InvalidSyntaxException {
25         name = tokenizer.getNextToken().token;
26
27         if (!tokenizer.consumeIfNextToken("<"))
28             return;
29
30         while (true) {
31             final ClassReference parameterType = new ClassReference(tokenizer);
32             typeParameters.add(parameterType);
33
34             if (!tokenizer.consumeIfNextToken(","))
35                 break;
36         }
37
38         tokenizer.expectAndConsumeNextToken(">");
39     }
40
41     @Override
42     public String toString() {
43         final EnumerationBuffer result = new EnumerationBuffer();
44
45         result.append(name);
46
47         if (typeParameters.size() > 0) {
48             result.append("<");
49             for (final ClassReference classReference : typeParameters)
50                 result.appendEnumeration(classReference.toString());
51             result.append(">");
52         }
53
54         return result.toString();
55     }
56 }