X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Finspector%2Fjava%2Fmethods%2FJavaFile.java;h=15d5169da2f53c5fab57fc014fbbaf3fd9c1e7f9;hb=c36bb542027754d394639170b96348439257103b;hp=400ff872fde03d1e03a4c5675e5e15e2b7ed029e;hpb=9811fe796d6f549151ab904714e1a65ff2839ee2;p=javainspect.git diff --git a/src/main/java/eu/svjatoslav/inspector/java/methods/JavaFile.java b/src/main/java/eu/svjatoslav/inspector/java/methods/JavaFile.java index 400ff87..15d5169 100644 --- a/src/main/java/eu/svjatoslav/inspector/java/methods/JavaFile.java +++ b/src/main/java/eu/svjatoslav/inspector/java/methods/JavaFile.java @@ -8,9 +8,9 @@ import java.io.IOException; import java.util.ArrayList; import java.util.List; -import eu.svjatoslav.inspector.tokenizer.InvalidSyntaxException; -import eu.svjatoslav.inspector.tokenizer.Tokenizer; -import eu.svjatoslav.inspector.tokenizer.TokenizerMatch; +import eu.svjatoslav.commons.string.tokenizer.InvalidSyntaxException; +import eu.svjatoslav.commons.string.tokenizer.Tokenizer; +import eu.svjatoslav.commons.string.tokenizer.TokenizerMatch; public class JavaFile { @@ -22,6 +22,8 @@ public class JavaFile { StringBuffer contents = new StringBuffer(); + public List classes = new ArrayList(); + public JavaFile(final File file) throws IOException, InvalidSyntaxException { this.file = file; parse(); @@ -33,6 +35,8 @@ public class JavaFile { readFile(); final Tokenizer tokenizer = new Tokenizer(contents.toString()); + + // empty space tokenizer.addTerminator(" ", true); tokenizer.addTerminator("\t", true); tokenizer.addTerminator("\n", true); @@ -47,11 +51,16 @@ public class JavaFile { tokenizer.addTerminator("<", false); tokenizer.addTerminator(">", false); tokenizer.addTerminator(",", false); + tokenizer.addTerminator("@", false); + + // comments + tokenizer.addTerminator("//", "\n", true); + tokenizer.addTerminator("/*", "*/", true); final Modifiers modifiers = new Modifiers(); while (true) { - final TokenizerMatch match = tokenizer.getToken(); + final TokenizerMatch match = tokenizer.getNextToken(); if (match == null) break; @@ -74,6 +83,16 @@ public class JavaFile { continue; } + if ("interface".equals(match.token)) { + parseInterface(tokenizer); + continue; + } + + if ("@".equals(match.token)) { + final Annotation annotation = new Annotation(tokenizer); + continue; + } + System.out.println(" " + modifiers.toString() + " " + match.token); modifiers.reset(); @@ -85,9 +104,11 @@ public class JavaFile { private void parseClass(final Tokenizer tokenizer) throws InvalidSyntaxException { - final TokenizerMatch match = tokenizer.getToken(); - final Clazz clazz = new Clazz(packageName, match.token, tokenizer); - System.out.println(clazz.toString()); + final TokenizerMatch match = tokenizer.getNextToken(); + final Clazz clazz = new Clazz(packageName, match.token, tokenizer, + false); + // System.out.println(clazz.toString()); + classes.add(clazz); } @@ -96,27 +117,36 @@ public class JavaFile { final Import imp = new Import(); - final TokenizerMatch match = tokenizer.getToken(); + final TokenizerMatch match = tokenizer.getNextToken(); if (match.token.equals("static")) { imp.isStatic = true; - imp.path = tokenizer.getToken().token; + imp.path = tokenizer.getNextToken().token; } else imp.path = match.token; imports.add(imp); - tokenizer.expectToken(";"); + tokenizer.expectNextToken(";"); + } + + private void parseInterface(final Tokenizer tokenizer) + throws InvalidSyntaxException { + + final TokenizerMatch match = tokenizer.getNextToken(); + final Clazz clazz = new Clazz(packageName, match.token, tokenizer, true); + // System.out.println(clazz.toString()); + classes.add(clazz); } private void parsePackage(final Tokenizer tokenizer) throws InvalidSyntaxException { - final TokenizerMatch match = tokenizer.getToken(); + final TokenizerMatch match = tokenizer.getNextToken(); packageName = match.token; - tokenizer.expectToken(";"); + tokenizer.expectNextToken(";"); } private void readFile() throws FileNotFoundException, IOException { @@ -140,7 +170,11 @@ public class JavaFile { public void skipUntilSemicolon(final Tokenizer tokenizer) { while (true) { - final TokenizerMatch token = tokenizer.getToken(); + final TokenizerMatch token = tokenizer.getNextToken(); + + if (token == null) + return; + if (token.token.equals(";")) return; }