[ https://issues.apache.org/jira/browse/SOLR-399?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Ryan McKinley resolved SOLR-399. -------------------------------- Resolution: Duplicate SOLR-414 takes care of the problems this patch solves > SolrConfig.Initializable: allow configurable class instances to depend on the > SolrCore instance > ----------------------------------------------------------------------------------------------- > > Key: SOLR-399 > URL: https://issues.apache.org/jira/browse/SOLR-399 > Project: Solr > Issue Type: Improvement > Reporter: Henri Biestro > Priority: Minor > Fix For: 1.3 > > Attachments: solr-399.patch, solr-399.patch, solr-399.patch > > > WHAT: > This patch introduces initialization behaviors for instances of configurable > classes. > WHY: > Introduced through solr-215, SolrConfig.Initializable allows some classes > (Tokenizer, Filter) to get access to the SolrConfig at initialization time. > It would be convenient to extend this so that instances of configurable > classes could access objects known by the core - and thus the schema . > see http://www.nabble.com/SolrConfig.Initializable-tf4665036.html > HOW: > SolrConfig is extended to declare some new initialization dedicated > interfaces (Initializable, InitializablePlugin, InitializableBy) that classes > wishing to benefit from the initialization behaviors need to implement. > SolrCore.Initializable interface is also introduced for the same purpose. All > those interfaces require the implementation of some 'init' method. > It is guaranteed that: > 1/ SolrConfig.Initializable*.init is called before SolrCore.Initializable.init > 2/ SolrCore.Initializable.init is guaranteed to be called only once when it > is successful at core initialization time. > When the core is being initialized, all instances that go through > SolrConfig.initInstance that are SolrCore.Initializable are queued into an > initialization list that guarantees uniqueness (aka they are only queued > once). > At the end of core initialization, the solrConfig.init(core) is called; this > triggers the call to SolrCore.Initializable.init(core) for each queued > instances. That method must be implemented to return 'true' if the > initialization has been performed, 'false' if it must be re-evaluated. This > allows one instance to depend on another initialization (a tokenizer could > require a fieldType). > Solrconfig will loop around the queue while it can successfully initialize > instances or new ones are posted; if the loop can not reduce the number of > instances expecting initialization, it is considered an error (and this will > avoid potentially cyclic dependencies). > After the core has been initialized, the SolrConfig will automatically post > instance to the SolrCore queue & empty it right away with the same behavior. > Note that after the core has been initiallized, the SolrConfig is bound to > that core; reusing such a bound SolrConfig for another core will generate an > exception. > USAGE: > Any class that implements one of SolrConfig.Init* interface implements some > 'init' method that will be called through SolrConfig. > The sequence of call is: > SolrConfig.Initializable instance = solrConfig.newInstance("name.of.class"); > ... > solrConfig.initInstance(instance, args); -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.