aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAndreas Rudolph <andy@openindex.de>2019-01-05 13:30:56 +0100
committerDecebal Suiu <decebal.suiu@gmail.com>2019-01-05 14:30:56 +0200
commit01d592622ec74bc6cd921cb5b2b6f7f35d6939db (patch)
treebf9b44190c8c0dd567c94d8497ebd9766c498b78
parent39219b3ba4a8bc7c13e6ede8d7157518e266bba1 (diff)
downloadpf4j-01d592622ec74bc6cd921cb5b2b6f7f35d6939db.tar.gz
pf4j-01d592622ec74bc6cd921cb5b2b6f7f35d6939db.zip
ServiceProviderExtensionFinder should scan the whole classpath (#273)
-rw-r--r--pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java6
-rw-r--r--pf4j/src/main/java/org/pf4j/ServiceProviderExtensionFinder.java21
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")) {