diff options
-rw-r--r-- | pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java | 24 |
1 files changed, 16 insertions, 8 deletions
diff --git a/pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java b/pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java index 99e1313..33adc27 100644 --- a/pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java +++ b/pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java @@ -20,6 +20,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import java.io.IOException; +import java.io.InputStream; import java.io.InputStreamReader; import java.io.Reader; import java.net.URL; @@ -81,11 +82,14 @@ public class LegacyExtensionFinder extends AbstractExtensionFinder { Set<String> bucket = new HashSet<>(); try { - Enumeration<URL> urls = ((PluginClassLoader) plugin.getPluginClassLoader()).findResources(getExtensionsResource()); - if (urls.hasMoreElements()) { - collectExtensions(urls, bucket); - } else { - log.debug("Cannot find '{}'", getExtensionsResource()); + log.debug("Read '{}'", getExtensionsResource()); + ClassLoader pluginClassLoader = plugin.getPluginClassLoader(); + try (InputStream resourceStream = pluginClassLoader.getResourceAsStream(getExtensionsResource())) { + if (resourceStream == null) { + log.debug("Cannot find '{}'", getExtensionsResource()); + } else { + collectExtensions(resourceStream, bucket); + } } debugExtensions(bucket); @@ -103,9 +107,13 @@ public class LegacyExtensionFinder extends AbstractExtensionFinder { while (urls.hasMoreElements()) { URL url = urls.nextElement(); log.debug("Read '{}'", url.getFile()); - try (Reader reader = new InputStreamReader(url.openStream(), StandardCharsets.UTF_8)) { - LegacyExtensionStorage.read(reader, bucket); - } + collectExtensions(url.openStream(), bucket); + } + } + + private void collectExtensions(InputStream inputStream, Set<String> bucket) throws IOException { + try (Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) { + LegacyExtensionStorage.read(reader, bucket); } } |