David Smiley created SOLR-17662:
-----------------------------------
Summary: Java SPI/ServiceLoader for plugin discovery &
instantiation
Key: SOLR-17662
URL: https://issues.apache.org/jira/browse/SOLR-17662
Project: Solr
Issue Type: Improvement
Reporter: David Smiley
Java 6 introduced the [Service Provider
Interfaces|https://docs.oracle.com/javase/tutorial/sound/SPI-intro.html]
mechanism, implemented with the ServiceLoader class. As applied to Solr, it
allows a registry of plugin instances of a certain type to be discovered from
the classpath. This obsoletes static hard-coded mappings (see Solr's
TransformerFactory for one), and it allows easy addition of new plugin
instances by others simply by supplying a JAR with metadata, without requiring
modifications to solrconfig.xml or other config files (assuming zero-config).
A challenge to solve is how to get the basic name of a plugins, e.g. "subquery"
instead of the full classname:
org.apache.solr.response.transform.SubQueryAugmenterFactory
A short term goal could just be Solr's static registries of builtin plugins
using Solr's classpath. Slightly better is using the node level ClassLoader,
thereby using the configurable lib dir. More comprehensive would eventually
allow configSets and the package system somehow. Eventually allow referencing
these plugin names in configuration (class="subquery" or name="subquery")
instead of "solr.SubQueryAugmenterFactory" for explicitly configuring. The
latter should be deprecated despite its use in Solr since forever.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]