From 1b9abd548b5163c6b022ef617f7341307d077163 Mon Sep 17 00:00:00 2001 From: Basil Crow Date: Thu, 29 Aug 2024 15:07:31 -0700 Subject: [PATCH] Reduce usage of Commons Discovery --- .../main/java/org/kohsuke/stapler/Facet.java | 32 +++---------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/core/src/main/java/org/kohsuke/stapler/Facet.java b/core/src/main/java/org/kohsuke/stapler/Facet.java index 345095d4e..d77416ac8 100644 --- a/core/src/main/java/org/kohsuke/stapler/Facet.java +++ b/core/src/main/java/org/kohsuke/stapler/Facet.java @@ -27,18 +27,14 @@ import edu.umd.cs.findbugs.annotations.NonNull; import edu.umd.cs.findbugs.annotations.SuppressFBWarnings; import java.io.IOException; -import java.lang.reflect.InvocationTargetException; import java.util.ArrayList; import java.util.HashSet; import java.util.List; +import java.util.ServiceLoader; import java.util.Set; -import java.util.logging.Level; import java.util.logging.Logger; import javax.servlet.RequestDispatcher; import javax.servlet.ServletException; -import org.apache.commons.discovery.ResourceNameIterator; -import org.apache.commons.discovery.resource.ClassLoaders; -import org.apache.commons.discovery.resource.names.DiscoverServiceNames; import org.kohsuke.MetaInfServices; import org.kohsuke.stapler.event.FilteredDispatchTriggerListener; import org.kohsuke.stapler.lang.Klass; @@ -86,31 +82,11 @@ public static List discoverExtensions(Class type, ClassLoader... cls) Set classNames = new HashSet<>(); for (ClassLoader cl : cls) { - ClassLoaders classLoaders = new ClassLoaders(); - classLoaders.put(cl); - DiscoverServiceNames dc = new DiscoverServiceNames(classLoaders); - ResourceNameIterator itr = dc.findResourceNames(type.getName()); - while (itr.hasNext()) { - String name = itr.nextResourceName(); - if (!classNames.add(name)) { + for (T extension : ServiceLoader.load(type, cl)) { + if (!classNames.add(extension.getClass().getName())) { continue; // avoid duplication } - - Class c; - try { - c = cl.loadClass(name).asSubclass(type); - } catch (ClassNotFoundException e) { - LOGGER.log(Level.WARNING, "Failed to load " + name, e); - continue; - } - try { - r.add(c.getDeclaredConstructor().newInstance()); - } catch (NoSuchMethodException - | InstantiationException - | IllegalAccessException - | InvocationTargetException e) { - LOGGER.log(Level.WARNING, "Failed to instantiate " + c, e); - } + r.add(extension); } } return r;