PluginManager
The plugin manager handles loading, unloading, and tracking of plugins. See Plugins for the user-facing plugin documentation.
The manager allows you to:
- Look up loaded plugins by their ID
- Iterate over all loaded plugins, or all plugins of a given type
- Load plugins from a
PluginDiscoverer - Register custom
PluginLoaderimplementations - Obtain an unloader for a plugin
Looking up plugins
// By ID, or null if not loaded
PluginContainer<MyPlugin> container = pluginManager.getPlugin("my-plugin-id");
// All plugins
Collection<PluginContainer<?>> plugins = pluginManager.getPlugins();
// All plugins of a specific type
Collection<MyPlugin> typedPlugins = pluginManager.getPluginsOfType(MyPlugin.class);
Loading plugins
// Discover + load plugins from a directory
PluginDiscoverer discoverer = new DirectoryPluginDiscoverer(Paths.get("./plugins"));
Collection<PluginContainer<?>> loaded = pluginManager.loadPlugins(discoverer);
// Unload a plugin when done
PluginUnloader unloader = pluginManager.unloaderFor("my-plugin-id");
unloader.commit();