# Interface: com.pnfsoftware.jeb.core.IPluginManager

JEB plugin manager for external plugins running alongside the JEB back\-end components. This manager handles:
 \- self\-contained JAR plugins
 \- development plugins consisting of classfile\(s\)
 \- python script plugins \(jython 2.7 scripts\)
 

 Refer to [IPlugin](IPlugin).

## Method: getClassloader
- return type: `java.lang.ClassLoader`

Description: Get the newest classloader used the plugin manager.
return: most recent plugin class loader

## Method: getEnginesContext
- return type: `com.pnfsoftware.jeb.core.IEnginesContext`

Description: Retrieve the engines context that instantiated this plugin manager.
return: owning engines context

## Method: getPluginEntries
- parameter: `pluginClass`, type: `java.lang.Class<T>`
- return type: `java.util.List<com.pnfsoftware.jeb.core.IPluginFileEntry<T>>`

Description: Retrieve external plugin entries by type. Hot\-reloadable plugins, such as Java scripts and Python scripts, will be reloaded if a new version is detected. 

 The list of non\-script plugins \(i.e., jar\-like\) is being retrieved statically.
 The list of script plugins \(python, single Java files\) is being regenerated with each call.
parameter: T: plugin type
parameter: pluginClass: plugin type
return: a list of plugin entries managed by this manager

## Method: getPluginEntries
- parameter: `pluginClass`, type: `java.lang.Class<T>`
- parameter: `rescan`, type: `boolean`
- return type: `java.util.List<com.pnfsoftware.jeb.core.IPluginFileEntry<T>>`

Description: Retrieve external plugin entries by type. Hot\-reloadable plugins, such as Java scripts and Python scripts, will be reloaded if a new version is detected. 

 The list of non\-script plugins \(i.e., jar\-like\) is being retrieved statically.
 The list of script plugins \(python, single Java files\) is being regenerated with each call.
parameter: T: plugin type
parameter: pluginClass: plugin type
parameter: rescan: true to rescan reloadable plugin sources before returning results
return: a list of plugin entries managed by this manager

## Method: getPlugins
- parameter: `pluginClass`, type: `java.lang.Class<T>`
- return type: `java.util.List<T>`

Description: Convenience method to retrieve external plugins by type. Shared plugin objects are retrieved. If fresh instances of plugin objects are necessary, use [#getPluginEntries(Class)](#getPluginEntries(Class)) instead. 

 The list of non\-script plugins \(i.e., jar\-like\) is being retrieved statically.
 The list of script plugins \(python, single Java files\) is being regenerated with each call.
parameter: T: plugin type
parameter: pluginClass: plugin type \(see limitations\)
return: a list of plugins managed by this manager

## Method: getPlugins
- parameter: `pluginClass`, type: `java.lang.Class<T>`
- parameter: `rescan`, type: `boolean`
- return type: `java.util.List<T>`

Description: Convenience method to retrieve external plugins by type. Shared plugin objects are retrieved. If fresh instances of plugin objects are necessary, use [#getPluginEntries(Class)](#getPluginEntries(Class)) instead. 

 The list of non\-script plugins \(i.e., jar\-like\) is being retrieved statically.
 The list of script plugins \(python, single Java files\) is being regenerated with each call.
parameter: T: plugin type
parameter: pluginClass: plugin type \(see limitations\)
parameter: rescan: true to rescan reloadable plugin sources before returning results
return: a list of plugins managed by this manager

## Method: load
- parameter: `plugin`, type: `java.io.File`
- return type: `java.util.List<java.lang.Class<? extends com.pnfsoftware.jeb.core.IPlugin>>`

Description: Load a JEB plugin\(s\) contained in the provided JAR file.
parameter: plugin: a JAR file
return: the list of loaded plugin classes

## Method: load
- parameter: `classpath`, type: `java.lang.String`
- parameter: `classname`, type: `java.lang.String`
- return type: `java.lang.Class<? extends com.pnfsoftware.jeb.core.IPlugin>`

Description: Load a JEB plugin.
parameter: classpath: optional classpath, separated by the [File#pathSeparatorChar](File#pathSeparatorChar)
parameter: classname: plugin classname
return: the loaded plugin class

