From 49fc0ba47fac077a2fe965c44fd382a1ab02089c Mon Sep 17 00:00:00 2001 From: Luck Date: Sun, 14 Nov 2021 19:10:46 +0000 Subject: Improve Velocity ClassSourceLookup --- .../spark/velocity/Velocity4ClassSourceLookup.java | 20 ++++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) (limited to 'spark-velocity4/src') diff --git a/spark-velocity4/src/main/java/me/lucko/spark/velocity/Velocity4ClassSourceLookup.java b/spark-velocity4/src/main/java/me/lucko/spark/velocity/Velocity4ClassSourceLookup.java index 28bf3da..c5c22c3 100644 --- a/spark-velocity4/src/main/java/me/lucko/spark/velocity/Velocity4ClassSourceLookup.java +++ b/spark-velocity4/src/main/java/me/lucko/spark/velocity/Velocity4ClassSourceLookup.java @@ -27,6 +27,9 @@ import me.lucko.spark.common.util.ClassSourceLookup; import org.checkerframework.checker.nullness.qual.Nullable; +import java.util.HashMap; +import java.util.Map; + public class Velocity4ClassSourceLookup extends ClassSourceLookup.ByClassLoader { private static final Class PLUGIN_CLASS_LOADER; @@ -38,21 +41,22 @@ public class Velocity4ClassSourceLookup extends ClassSourceLookup.ByClassLoader } } - private final PluginManager pluginManager; + private final Map classLoadersToPlugin; public Velocity4ClassSourceLookup(PluginManager pluginManager) { - this.pluginManager = pluginManager; + this.classLoadersToPlugin = new HashMap<>(); + for (PluginContainer plugin : pluginManager.plugins()) { + Object instance = plugin.instance(); + if (instance != null) { + this.classLoadersToPlugin.put(instance.getClass().getClassLoader(), plugin.description().name()); + } + } } @Override public @Nullable String identify(ClassLoader loader) { if (PLUGIN_CLASS_LOADER.isInstance(loader)) { - for (PluginContainer plugin : this.pluginManager.plugins()) { - Object instance = plugin.instance(); - if (instance != null && instance.getClass().getClassLoader() == loader) { - return plugin.description().name(); - } - } + return this.classLoadersToPlugin.get(loader); } return null; } -- cgit