From 9e78f6226716025ca0ebda09a3feb45b3242cf8e Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Sat, 12 Aug 2017 12:24:04 +0300 Subject: [PATCH] APF 2.0.3 Fixes #234 #233 #237 Fixes Files.lines streams not being closed --- Plan/pom.xml | 2 +- .../com/djrapitops/plan/locale/Locale.java | 2 +- .../com/djrapitops/plan/ui/html/Html.java | 2 +- .../plan/utilities/file/FileUtil.java | 20 ++++++++++++++++++ .../plan/utilities/file/dump/DumpUtils.java | 21 +++++++++---------- .../cache/queue/DataCacheGetQueueTest.java | 19 ++++++++--------- .../plan/database/DatabaseCommitTest.java | 15 +++++-------- .../plan/database/DatabaseTest.java | 17 ++++++--------- 8 files changed, 53 insertions(+), 45 deletions(-) diff --git a/Plan/pom.xml b/Plan/pom.xml index 85bc6745b..0ca473df0 100644 --- a/Plan/pom.xml +++ b/Plan/pom.xml @@ -28,7 +28,7 @@ com.djrapitops abstract-plugin-framework - 2.0.2 + 2.0.3 compile diff --git a/Plan/src/main/java/com/djrapitops/plan/locale/Locale.java b/Plan/src/main/java/com/djrapitops/plan/locale/Locale.java index bdd93b08a..73b66d1aa 100644 --- a/Plan/src/main/java/com/djrapitops/plan/locale/Locale.java +++ b/Plan/src/main/java/com/djrapitops/plan/locale/Locale.java @@ -285,7 +285,7 @@ public class Locale implements Closeable { } private void loadFromFile(File localeFile) throws IOException { - loadFromContents(Files.lines(localeFile.toPath(), StandardCharsets.UTF_8).collect(Collectors.toList()), "Custom File"); + loadFromContents(FileUtil.lines(localeFile), "Custom File"); } private void loadFromResource(String fileName) { diff --git a/Plan/src/main/java/com/djrapitops/plan/ui/html/Html.java b/Plan/src/main/java/com/djrapitops/plan/ui/html/Html.java index b62c0c471..241efa46e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/ui/html/Html.java +++ b/Plan/src/main/java/com/djrapitops/plan/ui/html/Html.java @@ -96,7 +96,7 @@ public enum Html { String[] split = localeRow.split(" <> "); Html.valueOf(split[0]).setHtml(split[1]); } catch (IllegalArgumentException e) { - Log.error("There is a miswritten line in locale on line " + localeRows.indexOf(localeRow)); + Log.error("There is a miswritten lines in locale on lines " + localeRows.indexOf(localeRow)); } } } catch (IOException e) { diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/file/FileUtil.java b/Plan/src/main/java/com/djrapitops/plan/utilities/file/FileUtil.java index f3bf3c423..23e7a0c15 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/file/FileUtil.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/file/FileUtil.java @@ -1,5 +1,6 @@ package main.java.com.djrapitops.plan.utilities.file; +import com.djrapitops.plugin.utilities.Verify; import main.java.com.djrapitops.plan.Plan; import main.java.com.djrapitops.plan.utilities.MiscUtils; import org.bukkit.plugin.java.JavaPlugin; @@ -8,9 +9,14 @@ import java.io.File; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; +import java.nio.charset.Charset; +import java.nio.charset.StandardCharsets; +import java.nio.file.Files; import java.util.ArrayList; import java.util.List; import java.util.Scanner; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class FileUtil { @@ -55,4 +61,18 @@ public class FileUtil { return lines; } + public static List lines(File file) throws IOException { + return lines(file, StandardCharsets.UTF_8); + } + + public static List lines(File file, Charset charset) throws IOException { + List lines = new ArrayList<>(); + if (Verify.exists(file)) { + try (Stream linesStream = Files.lines(file.toPath(), charset)) { + lines = linesStream.collect(Collectors.toList()); + } + } + return lines; + } + } diff --git a/Plan/src/main/java/com/djrapitops/plan/utilities/file/dump/DumpUtils.java b/Plan/src/main/java/com/djrapitops/plan/utilities/file/dump/DumpUtils.java index 33bc82172..5c124f0e8 100644 --- a/Plan/src/main/java/com/djrapitops/plan/utilities/file/dump/DumpUtils.java +++ b/Plan/src/main/java/com/djrapitops/plan/utilities/file/dump/DumpUtils.java @@ -1,19 +1,19 @@ package main.java.com.djrapitops.plan.utilities.file.dump; +import com.djrapitops.plugin.utilities.Verify; import main.java.com.djrapitops.plan.Log; import main.java.com.djrapitops.plan.Plan; import main.java.com.djrapitops.plan.Settings; +import main.java.com.djrapitops.plan.utilities.file.FileUtil; import org.bukkit.Server; import org.bukkit.plugin.Plugin; +import java.io.File; import java.io.IOException; import java.lang.management.ManagementFactory; import java.lang.management.RuntimeMXBean; import java.nio.charset.Charset; import java.nio.charset.MalformedInputException; -import java.nio.file.FileSystems; -import java.nio.file.Files; -import java.nio.file.Path; import java.text.SimpleDateFormat; import java.util.Arrays; import java.util.Date; @@ -247,9 +247,9 @@ public class DumpUtils { * @throws IOException when an error while reading occurred */ private static void addErrorLog(DumpLog log, Plan plan) throws IOException { - Path errorFile = FileSystems.getDefault().getPath(plan.getDataFolder().getAbsolutePath(), Log.getErrorsFilename()); + File errorFile = new File(plan.getDataFolder(), plan.getPluginLogger().getErrorsFilename()); - if (Files.notExists(errorFile)) { + if (!Verify.exists(errorFile)) { return; } @@ -267,12 +267,11 @@ public class DumpUtils { * @throws IOException when an error while reading occurred */ private static void addDebugLog(DumpLog log, Plan plan) throws IOException { - Path debugFile = FileSystems.getDefault().getPath(plan.getDataFolder().getAbsolutePath(), "DebugLog.txt"); + File debugFile = new File(plan.getDataFolder(), plan.getPluginLogger().getDebugFilename()); - if (Files.notExists(debugFile)) { + if (!Verify.exists(debugFile)) { return; } - List lines = readLines(debugFile); log.addHeader("Debug Log"); @@ -286,7 +285,7 @@ public class DumpUtils { * @return The lines * @throws IOException when an error while reading occurred */ - private static List readLines(Path file) throws IOException { + private static List readLines(File file) throws IOException { for (Charset charset : Charset.availableCharsets().values()) { try { return readLines(file, charset); @@ -306,7 +305,7 @@ public class DumpUtils { * @return The lines * @throws IOException when an error while reading occurred */ - private static List readLines(Path file, Charset charset) throws IOException { - return Files.lines(file, charset).collect(Collectors.toList()); + private static List readLines(File file, Charset charset) throws IOException { + return FileUtil.lines(file, charset); } } diff --git a/Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheGetQueueTest.java b/Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheGetQueueTest.java index 0861f37dc..c63fc6d41 100644 --- a/Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheGetQueueTest.java +++ b/Plan/src/test/java/main/java/com/djrapitops/plan/data/cache/queue/DataCacheGetQueueTest.java @@ -12,6 +12,7 @@ import main.java.com.djrapitops.plan.data.cache.queue.DataCacheGetQueue; import main.java.com.djrapitops.plan.database.Database; import main.java.com.djrapitops.plan.database.databases.SQLiteDB; import main.java.com.djrapitops.plan.utilities.MiscUtils; +import main.java.com.djrapitops.plan.utilities.file.FileUtil; import org.bukkit.Bukkit; import org.bukkit.plugin.java.JavaPlugin; import org.junit.After; @@ -26,11 +27,9 @@ import test.java.utils.TestInit; import java.io.File; import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.file.Files; import java.sql.SQLException; +import java.util.List; import java.util.UUID; -import java.util.stream.Collectors; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -82,10 +81,7 @@ public class DataCacheGetQueueTest { } }; File f = new File(plan.getDataFolder(), "Errors.txt"); - rows = 0; - if (f.exists()) { - rows = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()).size(); - } + rows = FileUtil.lines(f).size(); } /** @@ -96,9 +92,12 @@ public class DataCacheGetQueueTest { public void tearDown() throws IOException, SQLException { db.close(); File f = new File(plan.getDataFolder(), "Errors.txt"); - int rowsAgain = 0; - if (f.exists()) { - rowsAgain = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()).size(); + List lines = FileUtil.lines(f); + int rowsAgain = lines.size(); + if (rowsAgain > 0) { + for (String line : lines) { + System.out.println(line); + } } assertTrue("Errors were caught.", rows == rowsAgain); } diff --git a/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java b/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java index adc959fa9..a8047bd79 100644 --- a/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java +++ b/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseCommitTest.java @@ -8,6 +8,7 @@ import main.java.com.djrapitops.plan.database.Database; import main.java.com.djrapitops.plan.database.databases.SQLiteDB; import main.java.com.djrapitops.plan.utilities.MiscUtils; import main.java.com.djrapitops.plan.utilities.PassEncryptUtil; +import main.java.com.djrapitops.plan.utilities.file.FileUtil; import org.bukkit.plugin.java.JavaPlugin; import org.junit.After; import org.junit.Before; @@ -21,8 +22,6 @@ import test.java.utils.TestInit; import java.io.File; import java.io.IOException; -import java.nio.charset.Charset; -import java.nio.file.Files; import java.sql.SQLException; import java.util.Collections; import java.util.HashMap; @@ -58,10 +57,7 @@ public class DatabaseCommitTest { } }; File f = new File(plan.getDataFolder(), "Errors.txt"); - rows = 0; - if (f.exists()) { - rows = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()).size(); - } + rows = FileUtil.lines(f).size(); } /** @@ -72,10 +68,9 @@ public class DatabaseCommitTest { public void tearDown() throws IOException, SQLException { db.close(); File f = new File(plan.getDataFolder(), "Errors.txt"); - int rowsAgain = 0; - if (f.exists()) { - List lines = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()); - rowsAgain = lines.size(); + List lines = FileUtil.lines(f); + int rowsAgain = lines.size(); + if (rowsAgain > 0) { for (String line : lines) { System.out.println(line); } diff --git a/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseTest.java b/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseTest.java index 106618a43..2811d3194 100644 --- a/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseTest.java +++ b/Plan/src/test/java/main/java/com/djrapitops/plan/database/DatabaseTest.java @@ -20,6 +20,7 @@ import main.java.com.djrapitops.plan.database.tables.TPSTable; import main.java.com.djrapitops.plan.utilities.ManageUtils; import main.java.com.djrapitops.plan.utilities.MiscUtils; import main.java.com.djrapitops.plan.utilities.analysis.MathUtils; +import main.java.com.djrapitops.plan.utilities.file.FileUtil; import org.bukkit.plugin.java.JavaPlugin; import org.junit.After; import org.junit.Before; @@ -37,11 +38,8 @@ import java.lang.management.ManagementFactory; import java.lang.management.OperatingSystemMXBean; import java.net.InetAddress; import java.net.UnknownHostException; -import java.nio.charset.Charset; -import java.nio.file.Files; import java.sql.SQLException; import java.util.*; -import java.util.stream.Collectors; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; @@ -84,10 +82,7 @@ public class DatabaseTest { } }; File f = new File(plan.getDataFolder(), "Errors.txt"); - rows = 0; - if (f.exists()) { - rows = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()).size(); - } + rows = FileUtil.lines(f).size(); } /** @@ -101,10 +96,10 @@ public class DatabaseTest { backup.close(); } File f = new File(plan.getDataFolder(), "Errors.txt"); - int rowsAgain = 0; - if (f.exists()) { - List lines = Files.lines(f.toPath(), Charset.defaultCharset()).collect(Collectors.toList()); - rowsAgain = lines.size(); + + List lines = FileUtil.lines(f); + int rowsAgain = lines.size(); + if (rowsAgain > 0) { for (String line : lines) { System.out.println(line); }