[ 
https://issues.apache.org/jira/browse/SOLR-8097?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jason Gerlowski updated SOLR-8097:
----------------------------------
    Attachment: SOLR-8097.patch

Ok, this removes all* uses of the now-deprecated constructors.

The asterisk above implies there are still a few cases where the constructors 
are called.
- In {{SolrTestCaseJ4}}, where there are utility methods that randomly choose 
whether to create clients using the builder, or the now-deprecated ctor.
- There are a few classes which have a private SolrClient subclass.  In almost 
all cases this is done to specify some alternate behavior for 
{{SolrClient.handleError()}}.  I changed these all to use the "largest" ctor 
for the SolrClient they're extending (the ctor with all parameters, that will 
be kept around with a reduced visibility after the other ctors are deleted.

I'm not sure I described the second case well, but if my description is 
unclear, check out {{StreamingSolrClients.java}}, which has a good example of 
this.

All other uses have been removed.

As a side note, in this last revision, I realized that deprecating, eventually 
removing, and lowering the visibility of SolrClient ctors makes implementations 
difficult to extend anonymously.  This isn't a big deal.  Just wanted to 
mention it in case it bothers anyone.

This should be ready to go [~anshumg]!

> Implement a builder pattern for constructing a Solrj client
> -----------------------------------------------------------
>
>                 Key: SOLR-8097
>                 URL: https://issues.apache.org/jira/browse/SOLR-8097
>             Project: Solr
>          Issue Type: Improvement
>          Components: SolrJ
>    Affects Versions: master
>            Reporter: Hrishikesh Gadre
>            Assignee: Anshum Gupta
>            Priority: Minor
>         Attachments: SOLR-8097.patch, SOLR-8097.patch, SOLR-8097.patch, 
> SOLR-8097.patch, SOLR-8097.patch, SOLR-8097.patch, SOLR-8097.patch, 
> SOLR-8097.patch, SOLR-8097.patch, SOLR-8097.patch, SOLR-8097.patch, 
> SOLR-8097.patch
>
>
> Currently Solrj clients (e.g. CloudSolrClient) supports multiple constructors 
> as follows,
> public CloudSolrClient(String zkHost) 
> public CloudSolrClient(String zkHost, HttpClient httpClient) 
> public CloudSolrClient(Collection<String> zkHosts, String chroot)
> public CloudSolrClient(Collection<String> zkHosts, String chroot, HttpClient 
> httpClient)
> public CloudSolrClient(String zkHost, boolean updatesToLeaders)
> public CloudSolrClient(String zkHost, boolean updatesToLeaders, HttpClient 
> httpClient)
> It is kind of problematic while introducing an additional parameters (since 
> we need to introduce additional constructors). Instead it will be helpful to 
> provide SolrClient Builder which can provide either default values or support 
> overriding specific parameter. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@lucene.apache.org
For additional commands, e-mail: dev-h...@lucene.apache.org

Reply via email to