diff options
author | Tyler Hawkes <tylerhawkes@users.noreply.github.com> | 2018-01-14 02:51:34 -0700 |
---|---|---|
committer | Decebal Suiu <decebal.suiu@gmail.com> | 2018-01-14 11:51:34 +0200 |
commit | 44acc380810180593c8c6e85f80f5274d71540a2 (patch) | |
tree | 8f5999d32feb33b7abedb16eebfbd2e25003fec3 /pf4j/src | |
parent | 4477d2243c723df4635729d3b2cb32c90c256838 (diff) | |
download | pf4j-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.java | 26 | ||||
-rw-r--r-- | pf4j/src/main/java/org/pf4j/PluginManager.java | 4 |
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); |