From 60a1d069c77e177201667a300a3daaa4d8acdf45 Mon Sep 17 00:00:00 2001 From: ChomeNS <95471003+ChomeNS@users.noreply.github.com> Date: Thu, 28 Nov 2024 16:50:24 +0700 Subject: [PATCH] fix: make jsonObject in PersistentDataUtilities synchronous (hopefully) --- .../chomens_bot/plugins/FilterPlugin.java | 4 ++-- .../chomens_bot/plugins/IPFilterPlugin.java | 4 ++-- .../chomens_bot/plugins/MailPlugin.java | 4 ++-- .../plugins/PlayersPersistentDataPlugin.java | 4 ++-- .../util/PersistentDataUtilities.java | 24 ++++++++++++------- 5 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/FilterPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/FilterPlugin.java index 1b6ccfd5..74b10e2c 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/FilterPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/FilterPlugin.java @@ -25,8 +25,8 @@ public class FilterPlugin extends PlayersPlugin.Listener { private final Gson gson = new Gson(); static { - if (PersistentDataUtilities.jsonObject.has("filters")) { - filteredPlayers = PersistentDataUtilities.jsonObject.get("filters").getAsJsonArray(); + if (PersistentDataUtilities.has("filters")) { + filteredPlayers = PersistentDataUtilities.get("filters").getAsJsonArray(); } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/IPFilterPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/IPFilterPlugin.java index 6ebb438e..8ae22c40 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/IPFilterPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/IPFilterPlugin.java @@ -15,8 +15,8 @@ public class IPFilterPlugin extends PlayersPlugin.Listener { public static JsonArray filteredIPs = new JsonArray(); static { - if (PersistentDataUtilities.jsonObject.has("ipFilters")) { - filteredIPs = PersistentDataUtilities.jsonObject.get("ipFilters").getAsJsonArray(); + if (PersistentDataUtilities.has("ipFilters")) { + filteredIPs = PersistentDataUtilities.get("ipFilters").getAsJsonArray(); } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/MailPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/MailPlugin.java index 59de9040..24e7f064 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/MailPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/MailPlugin.java @@ -19,8 +19,8 @@ public class MailPlugin extends PlayersPlugin.Listener { private final Gson gson = new Gson(); static { - if (PersistentDataUtilities.jsonObject.has("mails")) { - mails = PersistentDataUtilities.jsonObject.get("mails").getAsJsonArray(); + if (PersistentDataUtilities.has("mails")) { + mails = PersistentDataUtilities.get("mails").getAsJsonArray(); } } diff --git a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPersistentDataPlugin.java b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPersistentDataPlugin.java index 54a6c7de..86995e1d 100644 --- a/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPersistentDataPlugin.java +++ b/src/main/java/me/chayapak1/chomens_bot/plugins/PlayersPersistentDataPlugin.java @@ -14,8 +14,8 @@ public class PlayersPersistentDataPlugin extends PlayersPlugin.Listener { public static JsonObject playersObject = new JsonObject(); static { - if (PersistentDataUtilities.jsonObject.has("players")) { - playersObject = PersistentDataUtilities.jsonObject.get("players").getAsJsonObject(); + if (PersistentDataUtilities.has("players")) { + playersObject = PersistentDataUtilities.get("players").getAsJsonObject(); } } diff --git a/src/main/java/me/chayapak1/chomens_bot/util/PersistentDataUtilities.java b/src/main/java/me/chayapak1/chomens_bot/util/PersistentDataUtilities.java index ba677072..b7d1181b 100644 --- a/src/main/java/me/chayapak1/chomens_bot/util/PersistentDataUtilities.java +++ b/src/main/java/me/chayapak1/chomens_bot/util/PersistentDataUtilities.java @@ -18,7 +18,7 @@ public class PersistentDataUtilities { private static final Gson gson = new Gson(); - public static JsonObject jsonObject = new JsonObject(); + private static JsonObject jsonObject = new JsonObject(); private static final ReentrantLock lock = new ReentrantLock(); @@ -42,7 +42,7 @@ public class PersistentDataUtilities { } } - private static void writeToFile() { + private static synchronized void writeToFile() { if (stopping) return; lock.lock(); @@ -56,7 +56,7 @@ public class PersistentDataUtilities { } } - public static void stop () { + public static synchronized void stop () { stopping = true; lock.lock(); @@ -68,7 +68,15 @@ public class PersistentDataUtilities { } } - public static void put (String property, JsonElement value) { + public static synchronized boolean has (String property) { + return jsonObject.has(property); + } + + public static synchronized JsonElement get (String property) { + return jsonObject.get(property); + } + + public static synchronized void put (String property, JsonElement value) { lock.lock(); try { @@ -79,19 +87,19 @@ public class PersistentDataUtilities { } } - public static void put (String property, String value) { + public static synchronized void put (String property, String value) { put(property, new JsonPrimitive(value)); } - public static void put (String property, boolean value) { + public static synchronized void put (String property, boolean value) { put(property, new JsonPrimitive(value)); } - public static void put (String property, int value) { + public static synchronized void put (String property, int value) { put(property, new JsonPrimitive(value)); } - public static void put (String property, char value) { + public static synchronized void put (String property, char value) { put(property, new JsonPrimitive(value)); } }