Class AbstractPluginLoader<T>

    • 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​(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.