Skip to content

Commit

Permalink
BuildFiles: enhance how we handle empty files or files with \n at the…
Browse files Browse the repository at this point in the history
… end for concatenating them
  • Loading branch information
rpalcolea committed Nov 8, 2021
1 parent 9db38f2 commit 3582a13
Showing 1 changed file with 26 additions and 1 deletion.
27 changes: 26 additions & 1 deletion src/main/groovy/com/netflix/nebula/lint/rule/BuildFiles.groovy
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,32 @@ class BuildFiles {
}
}

int linesCount(File file) {
private static int linesCount(File file) {
/*
Enhancement (JDK 16): The line terminator definition was changed in java.io.LineNumberReader
More info: https://blogs.oracle.com/javamagazine/post/the-hidden-gems-in-java-16-and-java-17-from-streammapmulti-to-hexformat
*/
if(System.getProperty("java.specification.version").isInteger() && System.getProperty("java.specification.version").toInteger() >= 16) {
linesCountModernJdk(file)
} else {
linesCountOlderJdk(file)
}
}

private static int linesCountModernJdk(File file) {
boolean shouldAddOne = file.text.empty || file.text.endsWith("\n")
file.withReader { reader ->
LineNumberReader lineNumberReader = new LineNumberReader(reader)
while (lineNumberReader.read() != -1) {}
if(shouldAddOne) {
lineNumberReader.getLineNumber() + 1
} else {
lineNumberReader.getLineNumber()
}
}
}

private static int linesCountOlderJdk(File file) {
file.withReader { reader ->
LineNumberReader lineNumberReader = new LineNumberReader(reader)
while (lineNumberReader.read() != -1) {}
Expand Down

0 comments on commit 3582a13

Please sign in to comment.