Class AbstractPluginLoader<T>

java.lang.Object
org.apache.solr.util.plugin.AbstractPluginLoader<T>
Direct Known Subclasses:
FieldTypePluginLoader, MapPluginLoader, NamedListPluginLoader

public abstract class AbstractPluginLoader<T> extends Object
An abstract super class that manages standard solr-style plugin configuration.
Since:
solr 1.3
  • Constructor Summary

    Constructors
    Constructor
    Description
    AbstractPluginLoader(String type, Class<T> pluginClassType)
     
    AbstractPluginLoader(String type, Class<T> pluginClassType, boolean preRegister, boolean requireName)
     
  • Method Summary

    Modifier and Type
    Method
    Description
    protected T
    create(org.apache.solr.common.cloud.SolrClassLoader loader, String name, String className, org.apache.solr.common.ConfigNode node)
    Create a plugin from an XML configuration.
    protected String[]
    Where to look for classes
    protected abstract void
    init(T plugin, org.apache.solr.common.ConfigNode node)
    Initialize the plugin.
    load(org.apache.solr.common.cloud.SolrClassLoader loader, List<org.apache.solr.common.ConfigNode> nodes)
    Initializes and registers each plugin in the list.
    loadSingle(org.apache.solr.common.cloud.SolrClassLoader loader, org.apache.solr.common.ConfigNode node)
    Initializes and registers a single plugin.
    protected abstract T
    register(String name, T plugin)
    Register a plugin with a given name.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Constructor Details

    • AbstractPluginLoader

      public AbstractPluginLoader(String type, Class<T> pluginClassType, boolean preRegister, boolean requireName)
      Parameters:
      type - is the 'type' name included in error messages.
      preRegister - if true, this will first register all Plugins, then it will initialize them.
    • AbstractPluginLoader

      public AbstractPluginLoader(String type, Class<T> pluginClassType)
  • Method Details

    • getDefaultPackages

      protected String[] getDefaultPackages()
      Where to look for classes
    • create

      protected T create(org.apache.solr.common.cloud.SolrClassLoader loader, String name, String className, org.apache.solr.common.ConfigNode node) throws Exception
      Create a plugin from an XML configuration. Plugins are defined using:
      
       <plugin name="name1" class="solr.ClassName">
            ...
       </plugin>
       
      Parameters:
      name - - The registered name. In the above example: "name1"
      className - - class name for requested plugin. In the above example: "solr.ClassName"
      node - - the XML node defining this plugin
      Throws:
      Exception
    • register

      protected abstract T register(String name, T plugin) throws Exception
      Register a plugin with a given name.
      Returns:
      The plugin previously registered to this name, or null
      Throws:
      Exception
    • init

      protected abstract void init(T plugin, org.apache.solr.common.ConfigNode node) throws Exception
      Initialize the plugin.
      Parameters:
      plugin - - the plugin to initialize
      node - - the XML node defining this plugin
      Throws:
      Exception
    • load

      public T load(org.apache.solr.common.cloud.SolrClassLoader loader, List<org.apache.solr.common.ConfigNode> nodes)
      Initializes and registers each plugin in the list. Given a NodeList from XML in the form:
      
       <plugins>
          <plugin name="name1" class="solr.ClassName" >
            ...
          </plugin>
          <plugin name="name2" class="solr.ClassName" >
            ...
          </plugin>
       </plugins>
       
      This will initialize and register each plugin from the list. A class will be generated for each class name and registered to the given name.

      If 'preRegister' is true, each plugin will be registered *before* it is initialized This may be useful for implementations that need to inspect other registered plugins at startup.

      One (and only one) plugin may declare itself to be the 'default' plugin using:

      
       <plugin name="name2" class="solr.ClassName" default="true">
       
      If a default element is defined, it will be returned from this function.
    • loadSingle

      public T loadSingle(org.apache.solr.common.cloud.SolrClassLoader loader, org.apache.solr.common.ConfigNode node)
      Initializes and registers a single plugin.

      Given a NodeList from XML in the form:

      
       <plugin name="name1" class="solr.ClassName" > ... </plugin>
       
      This will initialize and register a single plugin. A class will be generated for the plugin and registered to the given name.

      If 'preRegister' is true, the plugin will be registered *before* it is initialized This may be useful for implementations that need to inspect other registered plugins at startup.

      The created class for the plugin will be returned from this function.