Class AbstractExtensionFinder
- java.lang.Object
-
- org.pf4j.AbstractExtensionFinder
-
- All Implemented Interfaces:
java.util.EventListener
,ExtensionFinder
,PluginStateListener
- Direct Known Subclasses:
LegacyExtensionFinder
,ServiceProviderExtensionFinder
public abstract class AbstractExtensionFinder extends java.lang.Object implements ExtensionFinder, PluginStateListener
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.Boolean
checkForExtensionDependencies
protected java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
entries
protected java.util.Map<java.lang.String,ExtensionInfo>
extensionInfos
private static org.slf4j.Logger
log
protected PluginManager
pluginManager
-
Constructor Summary
Constructors Constructor Description AbstractExtensionFinder(PluginManager pluginManager)
-
Method Summary
All Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description private void
checkDifferentClassLoaders(java.lang.Class<?> type, java.lang.Class<?> extensionClass)
private ExtensionWrapper
createExtensionWrapper(java.lang.Class<?> extensionClass)
protected void
debugExtensions(java.util.Set<java.lang.String> extensions)
<T> java.util.List<ExtensionWrapper<T>>
find(java.lang.Class<T> type)
Retrieves a list with all extensions found for an extension point.<T> java.util.List<ExtensionWrapper<T>>
find(java.lang.Class<T> type, java.lang.String pluginId)
Retrieves a list with all extensions found for an extension point and a plugin.java.util.List<ExtensionWrapper>
find(java.lang.String pluginId)
Retrieves a list with all extensions found for a pluginjava.util.Set<java.lang.String>
findClassNames(java.lang.String pluginId)
Retrieves a list with all extension class names found for a plugin.private Extension
findExtensionAnnotation(java.lang.Class<?> clazz)
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
getEntries()
private ExtensionInfo
getExtensionInfo(java.lang.String className, java.lang.ClassLoader classLoader)
Returns the parameters of anExtension
annotation without loading the corresponding class into the class loader.boolean
isCheckForExtensionDependencies()
Returns true, if the extension finder checks extensions for its required plugins.void
pluginStateChanged(PluginStateEvent event)
Invoked when a plugin's state (for example DISABLED, STARTED) is changed.abstract java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
readClasspathStorages()
abstract java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
readPluginsStorages()
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>>
readStorages()
void
setCheckForExtensionDependencies(boolean checkForExtensionDependencies)
Plugin developers may enable / disable checks for required plugins of an extension.
-
-
-
Field Detail
-
log
private static final org.slf4j.Logger log
-
pluginManager
protected PluginManager pluginManager
-
entries
protected volatile java.util.Map<java.lang.String,java.util.Set<java.lang.String>> entries
-
extensionInfos
protected volatile java.util.Map<java.lang.String,ExtensionInfo> extensionInfos
-
checkForExtensionDependencies
protected java.lang.Boolean checkForExtensionDependencies
-
-
Constructor Detail
-
AbstractExtensionFinder
public AbstractExtensionFinder(PluginManager pluginManager)
-
-
Method Detail
-
readPluginsStorages
public abstract java.util.Map<java.lang.String,java.util.Set<java.lang.String>> readPluginsStorages()
-
readClasspathStorages
public abstract java.util.Map<java.lang.String,java.util.Set<java.lang.String>> readClasspathStorages()
-
find
public <T> java.util.List<ExtensionWrapper<T>> find(java.lang.Class<T> type)
Description copied from interface:ExtensionFinder
Retrieves a list with all extensions found for an extension point.- Specified by:
find
in interfaceExtensionFinder
-
find
public <T> java.util.List<ExtensionWrapper<T>> find(java.lang.Class<T> type, java.lang.String pluginId)
Description copied from interface:ExtensionFinder
Retrieves a list with all extensions found for an extension point and a plugin.- Specified by:
find
in interfaceExtensionFinder
-
find
public java.util.List<ExtensionWrapper> find(java.lang.String pluginId)
Description copied from interface:ExtensionFinder
Retrieves a list with all extensions found for a plugin- Specified by:
find
in interfaceExtensionFinder
-
findClassNames
public java.util.Set<java.lang.String> findClassNames(java.lang.String pluginId)
Description copied from interface:ExtensionFinder
Retrieves a list with all extension class names found for a plugin.- Specified by:
findClassNames
in interfaceExtensionFinder
-
pluginStateChanged
public void pluginStateChanged(PluginStateEvent event)
Description copied from interface:PluginStateListener
Invoked when a plugin's state (for example DISABLED, STARTED) is changed.- Specified by:
pluginStateChanged
in interfacePluginStateListener
-
isCheckForExtensionDependencies
public final boolean isCheckForExtensionDependencies()
Returns true, if the extension finder checks extensions for its required plugins. This feature has to be enabled, in order check the availability ofExtension.plugins()
configured by an extension.This feature is enabled by default, if at least one available plugin makes use of optional plugin dependencies. Those optional plugins might not be available at runtime. Therefore any extension is checked by default against available plugins before its instantiation.
Notice: This feature requires the optional ASM library to be available on the applications classpath.
- Returns:
- true, if the extension finder checks extensions for its required plugins
-
setCheckForExtensionDependencies
public void setCheckForExtensionDependencies(boolean checkForExtensionDependencies)
Plugin developers may enable / disable checks for required plugins of an extension. This feature has to be enabled, in order check the availability ofExtension.plugins()
configured by an extension.This feature is enabled by default, if at least one available plugin makes use of optional plugin dependencies. Those optional plugins might not be available at runtime. Therefore any extension is checked by default against available plugins before its instantiation.
Notice: This feature requires the optional ASM library to be available on the applications classpath.
- Parameters:
checkForExtensionDependencies
- true to enable checks for optional extensions, otherwise false
-
debugExtensions
protected void debugExtensions(java.util.Set<java.lang.String> extensions)
-
readStorages
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> readStorages()
-
getEntries
private java.util.Map<java.lang.String,java.util.Set<java.lang.String>> getEntries()
-
getExtensionInfo
private ExtensionInfo getExtensionInfo(java.lang.String className, java.lang.ClassLoader classLoader)
Returns the parameters of anExtension
annotation without loading the corresponding class into the class loader.
-
createExtensionWrapper
private ExtensionWrapper createExtensionWrapper(java.lang.Class<?> extensionClass)
-
findExtensionAnnotation
private Extension findExtensionAnnotation(java.lang.Class<?> clazz)
-
checkDifferentClassLoaders
private void checkDifferentClassLoaders(java.lang.Class<?> type, java.lang.Class<?> extensionClass)
-
-