aboutsummaryrefslogtreecommitdiffstats
path: root/pf4j/src
diff options
context:
space:
mode:
authorTyler Hawkes <tylerhawkes@users.noreply.github.com>2018-01-14 02:51:34 -0700
committerDecebal Suiu <decebal.suiu@gmail.com>2018-01-14 11:51:34 +0200
commit44acc380810180593c8c6e85f80f5274d71540a2 (patch)
tree8f5999d32feb33b7abedb16eebfbd2e25003fec3 /pf4j/src
parent4477d2243c723df4635729d3b2cb32c90c256838 (diff)
downloadpf4j-44acc380810180593c8c6e85f80f5274d71540a2.tar.gz
pf4j-44acc380810180593c8c6e85f80f5274d71540a2.zip
Can now just get Extension classes (#191)
Diffstat (limited to 'pf4j/src')
-rw-r--r--pf4j/src/main/java/org/pf4j/AbstractPluginManager.java26
-rw-r--r--pf4j/src/main/java/org/pf4j/PluginManager.java4
2 files changed, 29 insertions, 1 deletions
diff --git a/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java b/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java
index 21df9c0..711d764 100644
--- a/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java
+++ b/pf4j/src/main/java/org/pf4j/AbstractPluginManager.java
@@ -45,7 +45,7 @@ public abstract class AbstractPluginManager implements PluginManager {
private Path pluginsRoot;
- private ExtensionFinder extensionFinder;
+ protected ExtensionFinder extensionFinder;
private PluginDescriptorFinder pluginDescriptorFinder;
@@ -526,6 +526,30 @@ public abstract class AbstractPluginManager implements PluginManager {
}
@Override
+ public <T> List<Class<T>> getExtensionClasses(Class<T> type) {
+ List<ExtensionWrapper<T>> extensionsWrapper = extensionFinder.find(type);
+ List<Class<T>> extensionClasses = new ArrayList<>(extensionsWrapper.size());
+ for (ExtensionWrapper<T> extensionWrapper : extensionsWrapper) {
+ @SuppressWarnings("unchecked")
+ Class<T> c = (Class<T>)extensionWrapper.getDescriptor().extensionClass;
+ extensionClasses.add(c);
+ }
+ return extensionClasses;
+ }
+
+ @Override
+ public <T> List<Class<T>> getExtensionClasses(Class<T> type, String pluginId) {
+ List<ExtensionWrapper<T>> extensionsWrapper = extensionFinder.find(type, pluginId);
+ List<Class<T>> extensionClasses = new ArrayList<>(extensionsWrapper.size());
+ for (ExtensionWrapper<T> extensionWrapper : extensionsWrapper) {
+ @SuppressWarnings("unchecked")
+ Class<T> c = (Class<T>)extensionWrapper.getDescriptor().extensionClass;
+ extensionClasses.add(c);
+ }
+ return extensionClasses;
+ }
+
+ @Override
public <T> List<T> getExtensions(Class<T> type) {
List<ExtensionWrapper<T>> extensionsWrapper = extensionFinder.find(type);
List<T> extensions = new ArrayList<>(extensionsWrapper.size());
diff --git a/pf4j/src/main/java/org/pf4j/PluginManager.java b/pf4j/src/main/java/org/pf4j/PluginManager.java
index 06fc68e..2523870 100644
--- a/pf4j/src/main/java/org/pf4j/PluginManager.java
+++ b/pf4j/src/main/java/org/pf4j/PluginManager.java
@@ -131,6 +131,10 @@ public interface PluginManager {
ClassLoader getPluginClassLoader(String pluginId);
+ <T> List<Class<T>> getExtensionClasses(Class<T> type);
+
+ <T> List<Class<T>> getExtensionClasses(Class<T> type, String pluginId);
+
<T> List<T> getExtensions(Class<T> type);
<T> List<T> getExtensions(Class<T> type, String pluginId);