Package org.apache.log4j.plugins

## Class PluginRegistry

- java.lang.Object
- - org.apache.log4j.plugins.PluginRegistry

-     public final class PluginRegistry
      extends Object

  This is a registry for Plugin instances. It provides methods to start and stop plugin objects individually and to stop all plugins for a repository.
  Author:
    Mark Womack, Paul Smith

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `PluginRegistry​(LoggerRepositoryEx repository)` | Creates a new instance.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `addPlugin​(Plugin plugin)` | Adds a plugin to the plugin registry.
    `void` | `addPluginListener​(PluginListener l)` | Adds a PluginListener to this registry to be notified of PluginEvents.
    `LoggerRepositoryEx` | `getLoggerRepository()` | Get logger repository.
    `List<Plugin>` | `getPlugins()` | Returns all the plugins for a given repository.
    `List` | `getPlugins​(Class pluginClass)` | Returns all the plugins for a given repository that are instances of a certain class.
    `boolean` | `pluginNameExists​(String name)` | Returns true if the specified name is already taken by an existing Plugin registered within the scope of the specified LoggerRepository.
    `void` | `removePluginListener​(PluginListener l)` | Removes a particular PluginListener from this registry such that it will no longer be notified of PluginEvents.
    `void` | `stopAllPlugins()` | Stops all plugins in the given logger repository.
    `Plugin` | `stopPlugin​(String pluginName)` | Stops a plugin by plugin name and repository.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### PluginRegistry

          public PluginRegistry​(LoggerRepositoryEx repository)

      Creates a new instance.
      Parameters:
        `repository` - logger repository.

  - ### Method Detail

    - #### getLoggerRepository

          public LoggerRepositoryEx getLoggerRepository()

      Get logger repository.
      Returns:
        logger repository.

    - #### pluginNameExists

          public boolean pluginNameExists​(String name)

      Returns true if the specified name is already taken by an existing Plugin registered within the scope of the specified LoggerRepository.
      Parameters:
        `name` - The name to check the repository for
      Returns:
        true if the name is already in use, otherwise false

    - #### addPlugin

          public void addPlugin​(Plugin plugin)

      Adds a plugin to the plugin registry. If a plugin with the same name exists already, it is shutdown and removed.
      Parameters:
        `plugin` - the plugin to add.

    - #### getPlugins

          public List<Plugin> getPlugins()

      Returns all the plugins for a given repository.
      Returns:
        List list of plugins from the repository.

    - #### getPlugins

          public List getPlugins​(Class pluginClass)

      Returns all the plugins for a given repository that are instances of a certain class.
      Parameters:
        `pluginClass` - the class the plugin must implement to be selected.
      Returns:
        List list of plugins from the repository.

    - #### stopPlugin

          public Plugin stopPlugin​(String pluginName)

      Stops a plugin by plugin name and repository.
      Parameters:
        `pluginName` - the name of the plugin to stop.
      Returns:
        Plugin the plugin, if stopped, or null if the the plugin was not found in the registry.

    - #### stopAllPlugins

          public void stopAllPlugins()

      Stops all plugins in the given logger repository.

    - #### addPluginListener

          public void addPluginListener​(PluginListener l)

      Adds a PluginListener to this registry to be notified of PluginEvents.
      Parameters:
        `l` - PluginListener to add to this registry

    - #### removePluginListener

          public void removePluginListener​(PluginListener l)

      Removes a particular PluginListener from this registry such that it will no longer be notified of PluginEvents.
      Parameters:
        `l` - PluginListener to remove