Author: tchemit Date: 2014-06-03 14:27:30 +0200 (Tue, 03 Jun 2014) New Revision: 2042 Url: http://forge.nuiton.org/projects/i18n/repository/revisions/2042 Log: fixes #3242: Only parse i18n java files when found a **org.nuiton.i18n.I18n** pattern inside it Modified: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java Modified: trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java =================================================================== --- trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2014-05-07 09:52:20 UTC (rev 2041) +++ trunk/i18n-maven-plugin/src/main/java/org/nuiton/i18n/plugin/parser/impl/ParserJavaMojo.java 2014-06-03 12:27:30 UTC (rev 2042) @@ -30,7 +30,7 @@ import org.antlr.v4.runtime.TokenStream; import org.antlr.v4.runtime.misc.NotNull; import org.antlr.v4.runtime.tree.ParseTree; -import org.apache.commons.io.IOUtils; +import org.apache.commons.io.FileUtils; import org.apache.maven.plugin.logging.Log; import org.apache.maven.plugins.annotations.LifecyclePhase; import org.apache.maven.plugins.annotations.Mojo; @@ -49,10 +49,7 @@ import org.nuiton.io.SortedProperties; import java.io.File; -import java.io.FileInputStream; import java.io.IOException; -import java.io.InputStreamReader; -import java.io.Reader; import java.util.HashSet; import java.util.Set; import java.util.regex.Pattern; @@ -141,19 +138,24 @@ @Override public void parseFile(File file) throws IOException { - Reader inputStream = new InputStreamReader(new FileInputStream(file), "UTF-8"); - try { - // parse the file - TokenStream tokenStream = new CommonTokenStream(new JavaLexer(new ANTLRInputStream(inputStream))); - JavaParser parser = new JavaParser(tokenStream); + // load content + String content = FileUtils.readFileToString(file, "UTF-8"); - JavaParser.CompilationUnitContext compilationUnitContext = parser.compilationUnit(); - compilationUnitContext.accept(new JavaParserVisitor(file)); - inputStream.close(); - } catch (Exception e) { - throw new ParserException(e); - } finally { - IOUtils.closeQuietly(inputStream); + // quick check if there is a org.nuiton.i18n.I18n match in content to avoid a costy parsing + if (content.contains("org.nuiton.i18n.I18n")) { + + try { + + TokenStream tokenStream = new CommonTokenStream(new JavaLexer(new ANTLRInputStream(content))); + JavaParser parser = new JavaParser(tokenStream); + + JavaParser.CompilationUnitContext compilationUnitContext = parser.compilationUnit(); + compilationUnitContext.accept(new JavaParserVisitor(file)); + + } catch (Exception e) { + throw new ParserException(e); + } + } }