public class PluginRegistry extends Object
| Modifier and Type | Field and Description |
|---|---|
protected AnnotationProcessor |
annotationProcessor |
protected Map<Class,Map<ClassLoader,Object>> |
registeredPlugins |
| Constructor and Description |
|---|
PluginRegistry(PluginManager pluginManager,
ClassLoaderPatcher classLoaderPatcher)
Create an instanec of plugin registry and initialize scanner and processor.
|
| Modifier and Type | Method and Description |
|---|---|
void |
closeClassLoader(ClassLoader classLoader)
Remove all registered plugins for a classloader.
|
ClassLoader |
getAppClassLoader(Object plugin)
Search for the plugin in the registry and return associated classloader.
|
<T> T |
getPlugin(Class<T> pluginClass,
ClassLoader classLoader)
Returns plugin instance by it's type and classLoader.
|
protected Class<Object> |
getPluginClass(String pluginClass) |
Map<Class,Map<ClassLoader,Object>> |
getRegisteredPlugins()
Returns map of all registered plugins.
|
boolean |
hasPlugin(Class<?> pluginClass,
ClassLoader classLoader,
boolean checkParent)
Check if plugin is initialized in classLoader.
|
Object |
initializePlugin(String pluginClass,
ClassLoader appClassLoader)
Init a plugin (create new plugin instance) in a application classloader.
|
protected Object |
instantiate(Class<Object> plugin)
Create a new instance of the plugin.
|
void |
scanPlugins(ClassLoader classLoader,
String pluginPackage)
Scan for plugins by @Plugin annotation on PLUGIN_PATH and process plugin annotations.
|
void |
setAnnotationProcessor(AnnotationProcessor annotationProcessor) |
void |
setAnnotationScanner(ClassPathAnnotationScanner annotationScanner) |
void |
setClassLoaderPatcher(ClassLoaderPatcher classLoaderPatcher) |
protected Map<Class,Map<ClassLoader,Object>> registeredPlugins
protected AnnotationProcessor annotationProcessor
public PluginRegistry(PluginManager pluginManager, ClassLoaderPatcher classLoaderPatcher)
public Map<Class,Map<ClassLoader,Object>> getRegisteredPlugins()
public void setAnnotationScanner(ClassPathAnnotationScanner annotationScanner)
public void setAnnotationProcessor(AnnotationProcessor annotationProcessor)
public void setClassLoaderPatcher(ClassLoaderPatcher classLoaderPatcher)
public void scanPlugins(ClassLoader classLoader, String pluginPackage)
classLoader - classloader to resolve plugin package. This will be used by annotation scanner.pluginPackage - the package to be searched (e.g. org.agent.hotswap.plugin)public Object initializePlugin(String pluginClass, ClassLoader appClassLoader)
pluginClass - class of plugin to instantiateappClassLoader - target application classloaderpublic <T> T getPlugin(Class<T> pluginClass, ClassLoader classLoader)
T - type of the plugin to return correct instance.pluginClass - type of the pluginclassLoader - classloader of the pluginIllegalArgumentException - if classLoader not initialized or plugin not foundpublic boolean hasPlugin(Class<?> pluginClass, ClassLoader classLoader, boolean checkParent)
pluginClass - type of the pluginclassLoader - classloader of the plugincheckParent - for parent classloaders as well?public ClassLoader getAppClassLoader(Object plugin)
plugin - existing pluginprotected Object instantiate(Class<Object> plugin)
plugin - plugin classpublic void closeClassLoader(ClassLoader classLoader)
classLoader - classloader to cleanupCopyright © 2018. All rights reserved.