Class PluginLoader

java.lang.Object
ai.nervemind.app.service.PluginLoader

@Component public class PluginLoader extends Object
Loads plugins from JAR files in the plugins directory.

Plugins are discovered using Java's ServiceLoader mechanism. Each plugin JAR must contain a META-INF/services file that lists the provider implementations.

Plugin developers should:

  1. Add dependency on nervemind-plugin-api
  2. Implement TriggerProvider or ActionProvider
  3. Create META-INF/services/ai.nervemind.plugin.api.TriggerProvider (or ActionProvider)
  4. Build a JAR and drop it in the plugins/ directory
  • Constructor Details

    • PluginLoader

      public PluginLoader()
      Default constructor.
  • Method Details

    • initialize

      @PostConstruct public void initialize()
      Initializes the plugin loader after construction. Loads all available plugins if plugin loading is enabled.
    • cleanup

      @PreDestroy public void cleanup()
      Cleans up plugin resources before shutdown. Calls destroy() on all loaded plugins and closes all plugin class loaders.
    • loadAllPlugins

      public void loadAllPlugins()
      Load all plugins from the plugins directory.
    • reloadPlugins

      public void reloadPlugins()
      Reload all plugins (useful for development).
    • getLoadedPluginProviders

      public List<ai.nervemind.plugin.api.PluginProvider> getLoadedPluginProviders()
      Returns an unmodifiable list of all loaded plugin providers.
      Returns:
      list of loaded plugin providers
    • getLoadedTriggers

      public List<ai.nervemind.plugin.api.TriggerProvider> getLoadedTriggers()
      Returns an unmodifiable list of all loaded trigger providers.
      Returns:
      list of loaded trigger providers
    • getLoadedActions

      public List<ai.nervemind.plugin.api.ActionProvider> getLoadedActions()
      Returns an unmodifiable list of all loaded action providers.
      Returns:
      list of loaded action providers
    • getLoadedPluginJars

      public List<PluginLoader.PluginJarInfo> getLoadedPluginJars()
      Returns an unmodifiable list of information about loaded plugin JARs.
      Returns:
      list of loaded plugin JAR information
    • isPluginsEnabled

      public boolean isPluginsEnabled()
      Returns whether plugin loading is enabled.
      Returns:
      true if plugins are enabled, false otherwise
    • getPluginsDirectory

      public String getPluginsDirectory()
      Returns the directory path where plugins are loaded from.
      Returns:
      the plugins directory path