org.apache.solr.util.plugin
Class AbstractPluginLoader<T>

java.lang.Object
  extended by 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

Field Summary
static org.slf4j.Logger log
           
 
Constructor Summary
AbstractPluginLoader(String type, Class<T> pluginClassType)
           
AbstractPluginLoader(String type, Class<T> pluginClassType, boolean preRegister, boolean requireName)
           
 
Method Summary
protected  T create(SolrResourceLoader loader, String name, String className, Node node)
          Create a plugin from an XML configuration.
protected  String[] getDefaultPackages()
          Where to look for classes
protected abstract  void init(T plugin, Node node)
          Initialize the plugin.
 T load(SolrResourceLoader loader, NodeList nodes)
          Initializes and registers each plugin in the list.
 T loadSingle(SolrResourceLoader loader, Node 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
 

Field Detail

log

public static org.slf4j.Logger log
Constructor Detail

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 Detail

getDefaultPackages

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


create

protected T create(SolrResourceLoader loader,
                   String name,
                   String className,
                   Node 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,
                             Node 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(SolrResourceLoader loader,
              NodeList 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(SolrResourceLoader loader,
                    Node 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.



Copyright © 2000-2013 Apache Software Foundation. All Rights Reserved.