From 23f96f96aae6d3937a636ffa593e8f07ba2438ce Mon Sep 17 00:00:00 2001 From: Rsl1122 Date: Mon, 8 Oct 2018 17:35:04 +0300 Subject: [PATCH] [Fix] Network Settings save/load Database was not enabled when the call was made, leading to a NPE when using MySQL. (DataSource not initialized) Fixed by moving the calls to scheduled tasks inside TaskSystems. --- .../system/settings/config/BukkitConfigSystem.java | 7 ------- .../system/settings/config/BungeeConfigSystem.java | 7 ------- .../plan/system/tasks/BungeeTaskSystem.java | 11 +++++++++++ .../plan/system/tasks/ServerTaskSystem.java | 10 +++++++++- 4 files changed, 20 insertions(+), 15 deletions(-) diff --git a/Plan/src/main/java/com/djrapitops/plan/system/settings/config/BukkitConfigSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/settings/config/BukkitConfigSystem.java index 83d25b747..1cb4a207e 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/settings/config/BukkitConfigSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/settings/config/BukkitConfigSystem.java @@ -4,7 +4,6 @@ */ package com.djrapitops.plan.system.settings.config; -import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.system.file.PlanFiles; import com.djrapitops.plan.system.settings.theme.Theme; import com.djrapitops.plugin.logging.console.PluginLogger; @@ -39,10 +38,4 @@ public class BukkitConfigSystem extends ConfigSystem { protected void copyDefaults() throws IOException { config.copyDefaults(files.readFromResource("config.yml")); } - - @Override - public void enable() throws EnableException { - super.enable(); - config.getNetworkSettings().loadSettingsFromDB(); - } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/settings/config/BungeeConfigSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/settings/config/BungeeConfigSystem.java index eaec99cf4..eca4a6b73 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/settings/config/BungeeConfigSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/settings/config/BungeeConfigSystem.java @@ -4,7 +4,6 @@ */ package com.djrapitops.plan.system.settings.config; -import com.djrapitops.plan.api.exceptions.EnableException; import com.djrapitops.plan.system.file.PlanFiles; import com.djrapitops.plan.system.settings.theme.Theme; import com.djrapitops.plugin.logging.console.PluginLogger; @@ -39,10 +38,4 @@ public class BungeeConfigSystem extends ConfigSystem { protected void copyDefaults() throws IOException { config.copyDefaults(files.readFromResource("bungeeconfig.yml")); } - - @Override - public void enable() throws EnableException { - super.enable(); - config.getNetworkSettings().placeSettingsToDB(); - } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java index dedced3cd..49c04d545 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/tasks/BungeeTaskSystem.java @@ -4,9 +4,11 @@ */ package com.djrapitops.plan.system.tasks; +import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.tasks.bungee.BungeeTPSCountTimer; import com.djrapitops.plan.system.tasks.server.NetworkPageRefreshTask; import com.djrapitops.plugin.api.TimeAmount; +import com.djrapitops.plugin.task.AbsRunnable; import com.djrapitops.plugin.task.RunnableFactory; import javax.inject.Inject; @@ -19,17 +21,20 @@ import java.util.concurrent.TimeUnit; */ public class BungeeTaskSystem extends TaskSystem { + private final PlanConfig config; private final NetworkPageRefreshTask networkPageRefreshTask; private final LogsFolderCleanTask logsFolderCleanTask; @Inject public BungeeTaskSystem( + PlanConfig config, RunnableFactory runnableFactory, BungeeTPSCountTimer bungeeTPSCountTimer, NetworkPageRefreshTask networkPageRefreshTask, LogsFolderCleanTask logsFolderCleanTask ) { super(runnableFactory, bungeeTPSCountTimer); + this.config = config; this.networkPageRefreshTask = networkPageRefreshTask; this.logsFolderCleanTask = logsFolderCleanTask; @@ -44,5 +49,11 @@ public class BungeeTaskSystem extends TaskSystem { registerTask(tpsCountTimer).runTaskTimerAsynchronously(1000, TimeAmount.toTicks(1L, TimeUnit.SECONDS)); registerTask(networkPageRefreshTask).runTaskTimerAsynchronously(1500, TimeAmount.toTicks(5L, TimeUnit.MINUTES)); registerTask(logsFolderCleanTask).runTaskLaterAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS)); + registerTask("Settings Save", new AbsRunnable() { + @Override + public void run() { + config.getNetworkSettings().placeSettingsToDB(); + } + }).runTaskAsynchronously(); } } diff --git a/Plan/src/main/java/com/djrapitops/plan/system/tasks/ServerTaskSystem.java b/Plan/src/main/java/com/djrapitops/plan/system/tasks/ServerTaskSystem.java index aec7e0bc8..b729eb1bb 100644 --- a/Plan/src/main/java/com/djrapitops/plan/system/tasks/ServerTaskSystem.java +++ b/Plan/src/main/java/com/djrapitops/plan/system/tasks/ServerTaskSystem.java @@ -5,6 +5,7 @@ import com.djrapitops.plan.system.settings.config.PlanConfig; import com.djrapitops.plan.system.tasks.server.BootAnalysisTask; import com.djrapitops.plan.system.tasks.server.PeriodicAnalysisTask; import com.djrapitops.plugin.api.TimeAmount; +import com.djrapitops.plugin.task.AbsRunnable; import com.djrapitops.plugin.task.RunnableFactory; import java.util.concurrent.TimeUnit; @@ -27,7 +28,8 @@ public abstract class ServerTaskSystem extends TaskSystem { PlanConfig config, BootAnalysisTask bootAnalysisTask, PeriodicAnalysisTask periodicAnalysisTask, - LogsFolderCleanTask logsFolderCleanTask) { + LogsFolderCleanTask logsFolderCleanTask + ) { super(runnableFactory, tpsCountTimer); this.config = config; this.bootAnalysisTask = bootAnalysisTask; @@ -54,5 +56,11 @@ public abstract class ServerTaskSystem extends TaskSystem { } registerTask(logsFolderCleanTask).runTaskLaterAsynchronously(TimeAmount.toTicks(30L, TimeUnit.SECONDS)); + registerTask("Settings Load", new AbsRunnable() { + @Override + public void run() { + config.getNetworkSettings().loadSettingsFromDB(); + } + }).runTaskAsynchronously(); } } \ No newline at end of file