Browse Source

load extensions from plugin libraries (#262)

tags/release-2.6.0
Andreas Rudolph 5 years ago
parent
commit
8408667a49

+ 10
- 7
pf4j/src/main/java/org/pf4j/LegacyExtensionFinder.java View File

Set<String> bucket = new HashSet<>(); Set<String> bucket = new HashSet<>();


try { try {
URL url = ((PluginClassLoader) plugin.getPluginClassLoader()).findResource(getExtensionsResource());
if (url != null) {
log.debug("Read '{}'", url.getFile());
try (Reader reader = new InputStreamReader(url.openStream(), StandardCharsets.UTF_8)) {
LegacyExtensionStorage.read(reader, bucket);
}
} else {
Enumeration<URL> urls = ((PluginClassLoader) plugin.getPluginClassLoader()).findResources(getExtensionsResource());
if (urls == null || !urls.hasMoreElements()) {
log.debug("Cannot find '{}'", getExtensionsResource()); log.debug("Cannot find '{}'", getExtensionsResource());
} else {
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);
}
}
} }


debugExtensions(bucket); debugExtensions(bucket);

+ 15
- 11
pf4j/src/main/java/org/pf4j/ServiceProviderExtensionFinder.java View File

import java.nio.file.SimpleFileVisitor; import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes; import java.nio.file.attribute.BasicFileAttributes;
import java.util.Collections; import java.util.Collections;
import java.util.Enumeration;
import java.util.HashSet; import java.util.HashSet;
import java.util.LinkedHashMap; import java.util.LinkedHashMap;
import java.util.List; import java.util.List;
final Set<String> bucket = new HashSet<>(); final Set<String> bucket = new HashSet<>();


try { try {
URL url = ((PluginClassLoader) plugin.getPluginClassLoader()).findResource(getExtensionsResource());
if (url != null) {
Path extensionPath;
if (url.toURI().getScheme().equals("jar")) {
extensionPath = FileUtils.getPath(url.toURI(), getExtensionsResource());
} else {
extensionPath = Paths.get(url.toURI());
}

bucket.addAll(readExtensions(extensionPath));
} else {
Enumeration<URL> urls = ((PluginClassLoader) plugin.getPluginClassLoader()).findResources(getExtensionsResource());
if (urls == null || !urls.hasMoreElements()) {
log.debug("Cannot find '{}'", getExtensionsResource()); log.debug("Cannot find '{}'", getExtensionsResource());
} else {
while (urls.hasMoreElements()) {
URL url = urls.nextElement();
Path extensionPath;
if (url.toURI().getScheme().equals("jar")) {
extensionPath = FileUtils.getPath(url.toURI(), getExtensionsResource());
} else {
extensionPath = Paths.get(url.toURI());
}

bucket.addAll(readExtensions(extensionPath));
}
} }


debugExtensions(bucket); debugExtensions(bucket);

Loading…
Cancel
Save