diff options
author | Andreas Rudolph <andy@openindex.de> | 2019-01-05 13:30:56 +0100 |
---|---|---|
committer | Decebal Suiu <decebal.suiu@gmail.com> | 2019-01-05 14:30:56 +0200 |
commit | 01d592622ec74bc6cd921cb5b2b6f7f35d6939db (patch) | |
tree | bf9b44190c8c0dd567c94d8497ebd9766c498b78 | |
parent | 39219b3ba4a8bc7c13e6ede8d7157518e266bba1 (diff) | |
download | pf4j-01d592622ec74bc6cd921cb5b2b6f7f35d6939db.tar.gz pf4j-01d592622ec74bc6cd921cb5b2b6f7f35d6939db.zip |
ServiceProviderExtensionFinder should scan the whole classpath (#273)
-rw-r--r-- | pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java | 6 | ||||
-rw-r--r-- | pf4j/src/main/java/org/pf4j/ServiceProviderExtensionFinder.java | 21 |
2 files changed, 19 insertions, 8 deletions
diff --git a/pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java b/pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java index 5e682f3..99e1313 100644 --- a/pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java +++ b/pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java @@ -53,7 +53,11 @@ public class LegacyExtensionFinder extends AbstractExtensionFinder { Set<String> bucket = new HashSet<>(); try { Enumeration<URL> urls = getClass().getClassLoader().getResources(getExtensionsResource()); - collectExtensions(urls, bucket); + if (urls.hasMoreElements()) { + collectExtensions(urls, bucket); + } else { + log.debug("Cannot find '{}'", getExtensionsResource()); + } debugExtensions(bucket); diff --git a/pf4j/src/main/java/org/pf4j/ServiceProviderExtensionFinder.java b/pf4j/src/main/java/org/pf4j/ServiceProviderExtensionFinder.java index 66efb8d..21f683c 100644 --- a/pf4j/src/main/java/org/pf4j/ServiceProviderExtensionFinder.java +++ b/pf4j/src/main/java/org/pf4j/ServiceProviderExtensionFinder.java @@ -61,9 +61,11 @@ public class ServiceProviderExtensionFinder extends AbstractExtensionFinder { final Set<String> bucket = new HashSet<>(); try { - URL url = getClass().getClassLoader().getResource(getExtensionsResource()); - if (url != null) { - collectExtensions(url, bucket); + Enumeration<URL> urls = getClass().getClassLoader().getResources(getExtensionsResource()); + if (urls.hasMoreElements()) { + collectExtensions(urls, bucket); + } else { + log.debug("Cannot find '{}'", getExtensionsResource()); } debugExtensions(bucket); @@ -90,10 +92,7 @@ public class ServiceProviderExtensionFinder extends AbstractExtensionFinder { try { Enumeration<URL> urls = ((PluginClassLoader) plugin.getPluginClassLoader()).findResources(getExtensionsResource()); if (urls.hasMoreElements()) { - while (urls.hasMoreElements()) { - URL url = urls.nextElement(); - collectExtensions(url, bucket); - } + collectExtensions(urls, bucket); } else { log.debug("Cannot find '{}'", getExtensionsResource()); } @@ -109,6 +108,14 @@ public class ServiceProviderExtensionFinder extends AbstractExtensionFinder { return result; } + private void collectExtensions(Enumeration<URL> urls, Set<String> bucket) throws URISyntaxException, IOException { + while (urls.hasMoreElements()) { + URL url = urls.nextElement(); + log.debug("Read '{}'", url.getFile()); + collectExtensions(url, bucket); + } + } + private void collectExtensions(URL url, Set<String> bucket) throws URISyntaxException, IOException { Path extensionPath; if (url.toURI().getScheme().equals("jar")) { |