From 9681f4db6afcd76faa9ac548b30eeed8ea472917 Mon Sep 17 00:00:00 2001 From: 0utplay Date: Sun, 8 Sep 2024 11:37:24 +0200 Subject: [PATCH] fix: use concurrent map and set implementations --- .../java/eu/cloudnetservice/common/language/I18n.java | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/common/src/main/java/eu/cloudnetservice/common/language/I18n.java b/common/src/main/java/eu/cloudnetservice/common/language/I18n.java index 2ae5d1c01..98b8973af 100644 --- a/common/src/main/java/eu/cloudnetservice/common/language/I18n.java +++ b/common/src/main/java/eu/cloudnetservice/common/language/I18n.java @@ -16,8 +16,8 @@ package eu.cloudnetservice.common.language; -import com.google.common.collect.HashMultimap; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.Multimaps; import com.google.common.collect.SetMultimap; import eu.cloudnetservice.common.io.FileUtil; import eu.cloudnetservice.common.resource.ResourceResolver; @@ -28,11 +28,11 @@ import java.nio.file.Files; import java.nio.file.Path; import java.text.MessageFormat; -import java.util.ArrayList; import java.util.Collection; import java.util.Locale; import java.util.Map; import java.util.Properties; +import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.atomic.AtomicReference; import java.util.regex.Pattern; import lombok.NonNull; @@ -56,7 +56,9 @@ public final class I18n { private static final Pattern MESSAGE_FORMAT = Pattern.compile("\\{(.+?)\\$.+?\\$}"); private static final Logger LOGGER = LoggerFactory.getLogger(I18n.class); - private static final SetMultimap REGISTERED_ENTRIES = HashMultimap.create(); + private static final SetMultimap REGISTERED_ENTRIES = Multimaps.newSetMultimap( + new ConcurrentHashMap<>(), + ConcurrentHashMap::newKeySet); private static final AtomicReference CURRENT_LANGUAGE = new AtomicReference<>("en_US"); private I18n() { @@ -158,8 +160,7 @@ public static void addLanguageFile(@NonNull String lang, @NonNull Properties ent * @throws NullPointerException if the given loader is null. */ public static void unregisterLanguageFiles(@NonNull ClassLoader loader) { - var entries = new ArrayList<>(REGISTERED_ENTRIES.entries()); - for (var entry : entries) { + for (var entry : REGISTERED_ENTRIES.entries()) { if (entry.getValue().source().equals(loader)) { REGISTERED_ENTRIES.remove(entry.getKey(), entry.getValue()); }