weka.core

## Class PluginManager

- java.lang.Object
- - weka.core.PluginManager

-     public class PluginManager
      extends java.lang.Object

  Class that manages a global map of plugins. Provides static methods for registering and instantiating plugins. The package manager looks for, and processes, a PluginManager.props file in the top-level of a package.
  Version:
    $Revision: 12312 $
  Author:
    Mark Hall (mhall{[at]}pentaho{[dot]}com)

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `PluginManager()`

  - ### Method Summary

    All Methods Static Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `static void` | `addFromProperties(java.io.File propsFile)` Add all key value pairs from the supplied property file
    `static void` | `addFromProperties(java.io.File propsFile, boolean maintainInsertionOrder)` Add all key value pairs from the supplied property file
    `static void` | `addFromProperties(java.io.InputStream propsStream)` Add all key value pairs from the supplied properties stream
    `static void` | `addFromProperties(java.io.InputStream propsStream, boolean maintainInsertionOrder)` Add all key value pairs from the supplied properties stream
    `static void` | `addFromProperties(java.util.Properties props)` Add all key value pairs from the supplied properties object
    `static void` | `addFromProperties(java.util.Properties props, boolean maintainInsertionOrder)` Add all key value pairs from the supplied properties object
    `static void` | `addFromProperties(java.lang.String packageName, java.io.File propsFile)` Add all key value pairs from the supplied property file
    `static void` | `addFromProperties(java.lang.String packageName, java.io.File propsFile, boolean maintainInsertionOrder)` Add all key value pairs from the supplied property file
    `static void` | `addFromProperties(java.lang.String packageName, java.io.InputStream propsStream)` Add all key value pairs from the supplied properties stream
    `static void` | `addFromProperties(java.lang.String packageName, java.io.InputStream propsStream, boolean maintainInsertionOrder)` Add all key value pairs from the supplied properties stream
    `static void` | `addFromProperties(java.lang.String packageName, java.util.Properties props)` Add all key value pairs from the supplied properties object
    `static void` | `addFromProperties(java.lang.String packageName, java.util.Properties props, boolean maintainInsertionOrder)` Add all key value pairs from the supplied properties object
    `static void` | `addPlugin(java.lang.String interfaceName, java.lang.String name, java.lang.String concreteType)` Add a plugin.
    `static void` | `addPlugin(java.lang.String interfaceName, java.lang.String name, java.lang.String concreteType, boolean maintainInsertionOrder)` Add a plugin.
    `static void` | `addPluginResource(java.lang.String resourceGroupID, java.lang.String resourceDescription, java.lang.String resourcePath)` Add a resource.
    `static void` | `addPluginResource(java.lang.String packageName, java.lang.String resourceGroupID, java.lang.String resourceDescription, java.lang.String resourcePath)` Add a resource.
    `static void` | `addPluginResourcesFromProperty(java.lang.String resourceList)` Add resources from a list.
    `static void` | `addToDisabledList(java.util.List<java.lang.String> classnames)` Add the supplied list of fully qualified class names to the disabled list
    `static void` | `addToDisabledList(java.lang.String classname)` Add the supplied fully qualified class name to the list of disabled plugins
    `static java.lang.Object` | `getPluginInstance(java.lang.String interfaceType, java.lang.String name)` Get an instance of a concrete implementation of a plugin type
    `static java.util.Set<java.lang.String>` | `getPluginNamesOfType(java.lang.String interfaceName)` Get a set of names of plugins that implement the supplied interface.
    `static java.util.List<java.lang.String>` | `getPluginNamesOfTypeList(java.lang.String interfaceName)` Get a sorted list of names of plugins that implement the supplied interface.
    `static java.io.InputStream` | `getPluginResourceAsStream(java.lang.String resourceGroupID, java.lang.String resourceDescription)` Get an input stream for a named resource under a given resource group ID.
    `static java.util.Map<java.lang.String,java.lang.String>` | `getResourcesWithGroupID(java.lang.String resourceGroupID)` Get a map of resources (description,path) registered under a given resource group ID.
    `static boolean` | `isInDisabledList(java.lang.String classname)` Returns true if the supplied fully qualified class name is in the disabled list
    `static int` | `numResourcesForWithGroupID(java.lang.String resourceGroupID)` Get the number of resources available under a given resource group ID.
    `static boolean` | `pluginRegistered(java.lang.String interfaceType, java.lang.String name)` Checks if a named plugin exists in the map of registered plugins
    `static void` | `removeFromDisabledList(java.util.List<java.lang.String> classnames)` Remove the supplied list of fully qualified class names to the disabled list
    `static void` | `removeFromDisabledList(java.lang.String classname)` Remove the supplied fully qualified class name from the list of disabled plugins
    `static void` | `removePlugin(java.lang.String interfaceName, java.lang.String name)` Remove a plugin.
    `static void` | `removePlugins(java.lang.String interfaceName, java.util.List<java.lang.String> names)` Remove plugins of a specific type.

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

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

- - ### Constructor Detail

    - #### PluginManager

          public PluginManager()

  - ### Method Detail

    - #### addToDisabledList

          public static void addToDisabledList(java.util.List<java.lang.String> classnames)

      Add the supplied list of fully qualified class names to the disabled list
      Parameters:
        `classnames` - a list of class names to add

    - #### addToDisabledList

          public static void addToDisabledList(java.lang.String classname)

      Add the supplied fully qualified class name to the list of disabled plugins
      Parameters:
        `classname` - the fully qualified name of a class to add

    - #### removeFromDisabledList

          public static void removeFromDisabledList(java.util.List<java.lang.String> classnames)

      Remove the supplied list of fully qualified class names to the disabled list
      Parameters:
        `classnames` - a list of class names to remove

    - #### removeFromDisabledList

          public static void removeFromDisabledList(java.lang.String classname)

      Remove the supplied fully qualified class name from the list of disabled plugins
      Parameters:
        `classname` - the fully qualified name of a class to remove

    - #### isInDisabledList

          public static boolean isInDisabledList(java.lang.String classname)

      Returns true if the supplied fully qualified class name is in the disabled list
      Parameters:
        `classname` - the name of the class to check
      Returns:
        true if the supplied class name is in the disabled list

    - #### addFromProperties

          public static void addFromProperties(java.io.File propsFile)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied property file
      Parameters:
        `propsFile` - the properties file to add
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.lang.String packageName,
                                               java.io.File propsFile)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied property file
      Parameters:
        `packageName` - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        `propsFile` - the properties file to add
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.io.File propsFile,
                                               boolean maintainInsertionOrder)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied property file
      Parameters:
        `propsFile` - the properties file to add
        `maintainInsertionOrder` - true if the order of insertion of implementations is to be preserved (rather than sorted order)
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.lang.String packageName,
                                               java.io.File propsFile,
                                               boolean maintainInsertionOrder)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied property file
      Parameters:
        `packageName` - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        `propsFile` - the properties file to add
        `maintainInsertionOrder` - true if the order of insertion of implementations is to be preserved (rather than sorted order)
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.io.InputStream propsStream)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied properties stream
      Parameters:
        `propsStream` - an input stream to a properties file
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.lang.String packageName,
                                               java.io.InputStream propsStream)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied properties stream
      Parameters:
        `packageName` - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        `propsStream` - an input stream to a properties file
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.io.InputStream propsStream,
                                               boolean maintainInsertionOrder)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied properties stream
      Parameters:
        `propsStream` - an input stream to a properties file
        `maintainInsertionOrder` - true if the order of insertion of implementations is to be preserved (rather than sorted order)
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.lang.String packageName,
                                               java.io.InputStream propsStream,
                                               boolean maintainInsertionOrder)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied properties stream
      Parameters:
        `packageName` - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        `propsStream` - an input stream to a properties file
        `maintainInsertionOrder` - true if the order of insertion of implementations is to be preserved (rather than sorted order)
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.util.Properties props)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied properties object
      Parameters:
        `props` - a Properties object
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.lang.String packageName,
                                               java.util.Properties props)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied properties object
      Parameters:
        `packageName` - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        `props` - a Properties object
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.util.Properties props,
                                               boolean maintainInsertionOrder)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied properties object
      Parameters:
        `props` - a Properties object
        `maintainInsertionOrder` - true if the order of insertion of implementations is to be preserved (rather than sorted order)
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addFromProperties

          public static void addFromProperties(java.lang.String packageName,
                                               java.util.Properties props,
                                               boolean maintainInsertionOrder)
                                        throws java.lang.Exception

      Add all key value pairs from the supplied properties object
      Parameters:
        `packageName` - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        `props` - a Properties object
        `maintainInsertionOrder` - true if the order of insertion of implementations is to be preserved (rather than sorted order)
      Throws:
        `java.lang.Exception` - if a problem occurs

    - #### addPluginResourcesFromProperty

          public static void addPluginResourcesFromProperty(java.lang.String resourceList)

      Add resources from a list. String format for a list of resources (as might be supplied from a *resources* entry in an property file:

           [groupID|description|path],[groupID|description|path],...

      Parameters:
        `resourceList` - a list of resources to add

    - #### addPluginResource

          public static void addPluginResource(java.lang.String resourceGroupID,
                                               java.lang.String resourceDescription,
                                               java.lang.String resourcePath)

      Add a resource.
      Parameters:
        `resourceGroupID` - the ID of the group under which the resource should be stored
        `resourceDescription` - the description/ID of the resource
        `resourcePath` - the path to the resource

    - #### addPluginResource

          public static void addPluginResource(java.lang.String packageName,
                                               java.lang.String resourceGroupID,
                                               java.lang.String resourceDescription,
                                               java.lang.String resourcePath)

      Add a resource.
      Parameters:
        `packageName` - the name of the package that owns this resource. Can be null if not owned by a package, in which case the current classloader will be used to load the resource.
        `resourceGroupID` - the ID of the group under which the resource should be stored
        `resourceDescription` - the description/ID of the resource
        `resourcePath` - the path to the resource

    - #### getPluginResourceAsStream

          public static java.io.InputStream getPluginResourceAsStream(java.lang.String resourceGroupID,
                                                                      java.lang.String resourceDescription)
                                                               throws java.io.IOException

      Get an input stream for a named resource under a given resource group ID.
      Parameters:
        `resourceGroupID` - the group ID that the resource falls under
        `resourceDescription` - the description/ID of the resource
      Returns:
        an InputStream for the resource
      Throws:
        `java.io.IOException` - if the group ID or resource description/ID are not known to the PluginManager, or a problem occurs while trying to open an input stream

    - #### numResourcesForWithGroupID

          public static int numResourcesForWithGroupID(java.lang.String resourceGroupID)

      Get the number of resources available under a given resource group ID.
      Parameters:
        `resourceGroupID` - the group ID of the resources
      Returns:
        the number of resources registered under the supplied group ID

    - #### getResourcesWithGroupID

          public static java.util.Map<java.lang.String,java.lang.String> getResourcesWithGroupID(java.lang.String resourceGroupID)

      Get a map of resources (description,path) registered under a given resource group ID.
      Parameters:
        `resourceGroupID` - the group ID of the resources to get
      Returns:
        a map of resources registered under the supplied group ID, or null if the resourceGroupID is not known to the plugin manager

    - #### getPluginNamesOfType

          public static java.util.Set<java.lang.String> getPluginNamesOfType(java.lang.String interfaceName)

      Get a set of names of plugins that implement the supplied interface.
      Parameters:
        `interfaceName` - the fully qualified name of the interface to list plugins for
      Returns:
        a set of names of plugins

    - #### getPluginNamesOfTypeList

          public static java.util.List<java.lang.String> getPluginNamesOfTypeList(java.lang.String interfaceName)

      Get a sorted list of names of plugins that implement the supplied interface.
      Parameters:
        `interfaceName` - the fully qualified name of the interface to list plugins for
      Returns:
        a set of names of plugins

    - #### addPlugin

          public static void addPlugin(java.lang.String interfaceName,
                                       java.lang.String name,
                                       java.lang.String concreteType)

      Add a plugin.
      Parameters:
        `interfaceName` - the fully qualified interface name that the plugin implements
        `name` - the name/short description of the plugin
        `concreteType` - the fully qualified class name of the actual concrete implementation

    - #### addPlugin

          public static void addPlugin(java.lang.String interfaceName,
                                       java.lang.String name,
                                       java.lang.String concreteType,
                                       boolean maintainInsertionOrder)

      Add a plugin.
      Parameters:
        `interfaceName` - the fully qualified interface name that the plugin implements
        `name` - the name/short description of the plugin
        `concreteType` - the fully qualified class name of the actual concrete implementation
        `maintainInsertionOrder` - true if the order of insertion of implementations is to be preserved (rather than sorted order)

    - #### removePlugins

          public static void removePlugins(java.lang.String interfaceName,
                                           java.util.List<java.lang.String> names)

      Remove plugins of a specific type.
      Parameters:
        `interfaceName` - the fully qualified interface name that the plugins to be remove implement
        `names` - a list of named plugins to remove

    - #### removePlugin

          public static void removePlugin(java.lang.String interfaceName,
                                          java.lang.String name)

      Remove a plugin.
      Parameters:
        `interfaceName` - the fully qualified interface name that the plugin implements
        `name` - the name/short description of the plugin

    - #### pluginRegistered

          public static boolean pluginRegistered(java.lang.String interfaceType,
                                                 java.lang.String name)

      Checks if a named plugin exists in the map of registered plugins
      Parameters:
        `interfaceType` - the fully qualified interface name of the plugin type
        `name` - the name/short description of the plugin to get
      Returns:
        true if the named plugin exists

    - #### getPluginInstance

          public static java.lang.Object getPluginInstance(java.lang.String interfaceType,
                                                           java.lang.String name)
                                                    throws java.lang.Exception

      Get an instance of a concrete implementation of a plugin type
      Parameters:
        `interfaceType` - the fully qualified interface name of the plugin type
        `name` - the name/short description of the plugin to get
      Returns:
        the concrete plugin or null if the plugin is disabled
      Throws:
        `java.lang.Exception` - if the plugin can't be found or instantiated