From 66bdda8bedc9e59c069ed2878c8d650611172b67 Mon Sep 17 00:00:00 2001 From: filoghost Date: Sat, 25 Sep 2021 11:55:21 +0200 Subject: [PATCH] Small improvement --- .../DefaultHolographicDisplaysAPIProvider.java | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/api/current/DefaultHolographicDisplaysAPIProvider.java b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/api/current/DefaultHolographicDisplaysAPIProvider.java index c9d78497..428533b1 100644 --- a/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/api/current/DefaultHolographicDisplaysAPIProvider.java +++ b/plugin/src/main/java/me/filoghost/holographicdisplays/plugin/api/current/DefaultHolographicDisplaysAPIProvider.java @@ -19,27 +19,24 @@ import org.bukkit.plugin.Plugin; import java.util.Map; import java.util.WeakHashMap; +import java.util.function.Function; public class DefaultHolographicDisplaysAPIProvider extends HolographicDisplaysAPIProvider { - private final APIHologramManager apiHologramManager; - private final PlaceholderRegistry placeholderRegistry; - - // Optimization: avoid creating a new instance every time a plugin requires it, in case it never stores a reference - private final Map apiInstanceCache; + private final Map apiCache; + private final Function apiFactory; public DefaultHolographicDisplaysAPIProvider(APIHologramManager apiHologramManager, PlaceholderRegistry placeholderRegistry) { - this.apiHologramManager = apiHologramManager; - this.placeholderRegistry = placeholderRegistry; - this.apiInstanceCache = new WeakHashMap<>(); + this.apiCache = new WeakHashMap<>(); + this.apiFactory = plugin -> new DefaultHolographicDisplaysAPI(plugin, apiHologramManager, placeholderRegistry); } @Override public HolographicDisplaysAPI getHolographicDisplaysAPI(Plugin plugin) { Preconditions.notNull(plugin, "plugin"); - return apiInstanceCache.computeIfAbsent(plugin, pluginKey -> - new DefaultHolographicDisplaysAPI(pluginKey, apiHologramManager, placeholderRegistry)); + // Optimization: avoid creating a new instance every time a plugin requests it, in case it never stores a reference + return apiCache.computeIfAbsent(plugin, apiFactory); } @Override