From: hazemkmammu Date: Tue, 4 Jun 2019 21:33:11 +0000 (+0530) Subject: Fix FileSystemException in windows on plugin delete (#322) X-Git-Tag: release-3.0.0~2^2~2 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=553a0753f59870b29515b05013ad4f1a0ef547d7;p=pf4j.git Fix FileSystemException in windows on plugin delete (#322) --- 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 bucket = new HashSet<>(); try { - Enumeration 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 bucket) throws IOException { + try (Reader reader = new InputStreamReader(inputStream, StandardCharsets.UTF_8)) { + LegacyExtensionStorage.read(reader, bucket); } }