java syntax parser
[javainspect.git] / src / main / java / eu / svjatoslav / inspector / java / methods / Clazz.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 import eu.svjatoslav.inspector.tokenizer.TokenizerMatch;
9
10 public class Clazz {
11
12         private final String packageName;
13         private final String className;
14
15         public ClassReference superClass;
16         public List<ClassReference> implementedInterfaces = new ArrayList<ClassReference>();
17
18         public Clazz(final String packageName, final String className,
19                         final Tokenizer tokenizer) throws InvalidSyntaxException {
20                 this.packageName = packageName;
21                 this.className = className;
22
23                 while (true) {
24                         final TokenizerMatch match = tokenizer.getToken();
25
26                         if ("extends".equals(match.token)) {
27                                 superClass = new ClassReference(tokenizer);
28                                 continue;
29                         }
30
31                         if ("implements".equals(match.token)) {
32                                 while (true) {
33                                         implementedInterfaces.add(new ClassReference(tokenizer));
34
35                                         if (tokenizer.isNextToken(","))
36                                                 continue;
37
38                                         break;
39                                 }
40                                 continue;
41                         }
42
43                         if ("{".equals(match.token)) {
44                                 parseClassBody(tokenizer);
45                                 break;
46                         }
47
48                 }
49         }
50
51         public void parseClassBody(final Tokenizer tokenizer) {
52                 tokenizer.skipUtilEnd();
53         }
54
55         @Override
56         public String toString() {
57                 final EnumerationBuffer result = new EnumerationBuffer();
58
59                 result.append(packageName + " -> " + className + "\n");
60                 if (superClass != null)
61                         result.append("    super: " + superClass.toString() + "\n");
62
63                 if (implementedInterfaces.size() > 0) {
64                         result.append("    implements: ");
65                         for (final ClassReference classReference : implementedInterfaces)
66                                 result.appendEnumeration(classReference.toString());
67                         result.append("\n");
68                 }
69
70                 return result.toString();
71         }
72
73 }