Package org.apache.solr.client.solrj.impl

## Class Http2SolrClient

- java.lang.Object
- - org.apache.solr.client.solrj.SolrClient
  - - org.apache.solr.client.solrj.impl.HttpSolrClientBase
    - - org.apache.solr.client.solrj.impl.Http2SolrClient

All Implemented Interfaces:
  `Closeable`, `Serializable`, `AutoCloseable`

    public class Http2SolrClient
    extends HttpSolrClientBase

Difference between this `Http2SolrClient` and `HttpSolrClient`:

- `Http2SolrClient` sends requests in HTTP/2
- `Http2SolrClient` can point to multiple urls
- `Http2SolrClient` does not expose its internal httpClient like `HttpSolrClient.getHttpClient()`, sharing connection pools should be done by `Http2SolrClient.Builder.withHttpClient(Http2SolrClient)`

See Also:
  Serialized Form

### Nested Class Summary

Nested Classes
`static class` `Http2SolrClient.Builder`
`static class` `Http2SolrClient.OutStream`

### Field Summary

Fields
`protected org.apache.solr.client.solrj.impl.Http2SolrClient.AsyncTracker` `asyncTracker`
`static String` `REQ_PRINCIPAL_KEY`

### Fields inherited from class org.apache.solr.client.solrj.impl.HttpSolrClientBase

`basicAuthAuthorizationStr, DEFAULT_PATH, defaultParserMimeTypes, FALLBACK_CHARSET, idleTimeoutMillis, parser, requestTimeoutMillis, requestWriter, serverBaseUrl, urlParamNames`

### Fields inherited from class org.apache.solr.client.solrj.SolrClient

`defaultCollection`

### Constructor Summary

Constructors
`protected` `Http2SolrClient​(String serverBaseUrl, Http2SolrClient.Builder builder)`

### Method Summary

All Methods Static Methods Instance Methods Concrete Methods Deprecated Methods
`void` `addListenerFactory​(HttpListenerFactory factory)` Deprecated.
`protected String` `allProcessorSupportedContentTypesCommaDelimited​(Collection<String> processorSupportedContentTypes)`
`Cancellable` `asyncRequest​(SolrRequest<?> solrReq, String collection, AsyncListener<NamedList<Object>> asyncListener)`
`void` `close()`
`String` `getBaseURL()`
`Set<String>` `getQueryParams()` Deprecated. use `HttpSolrClientBase.getUrlParamNames()`
`protected RequestWriter` `getRequestWriter()`
`Http2SolrClient.OutStream` `initOutStream​(String baseUrl, UpdateRequest updateRequest, String collection)`
`protected boolean` `isFollowRedirects()`
`protected boolean` `processorAcceptsMimeType​(Collection<String> processorSupportedContentTypes, String mimeType)`
`NamedList<Object>` `request​(SolrRequest<?> solrRequest, String collection)` Execute a request against a Solr server for a given collection
`CompletableFuture<NamedList<Object>>` `requestAsync​(SolrRequest<?> solrRequest, String collection)` Execute an asynchronous request against a Solr server for a given collection.
`<R extends SolrResponse> R` `requestWithBaseUrl​(String baseUrl, String collection, SolrRequest<R> req)` Executes a SolrRequest using the provided URL to temporarily override any "base URL" currently used by this client
`<R> R` `requestWithBaseUrl​(String baseUrl, SolrClientFunction<Http2SolrClient,​R> clientFunction)` Temporarily modifies the client to use a different base URL and runs the provided lambda
`static void` `resetSslContextFactory()`
`void` `send​(Http2SolrClient.OutStream outStream, SolrRequest<?> req, String collection)`
`void` `setAuthenticationStore​(org.eclipse.jetty.client.api.AuthenticationStore authenticationStore)`
`static void` `setDefaultSSLConfig​(SSLConfig sslConfig)`
`void` `setFollowRedirects​(boolean follow)` Deprecated. use `HttpSolrClientBuilderBase.withFollowRedirects(boolean)` Redirects(boolean)} instead
`void` `setRequestWriter​(RequestWriter requestWriter)` Deprecated. use `HttpSolrClientBuilderBase.withRequestWriter(RequestWriter)` instead
`void` `setUrlParamNames​(Set<String> urlParamNames)` Deprecated. use `HttpSolrClientBuilderBase.withTheseParamNamesInTheUrl(Set)` instead
`protected void` `updateDefaultMimeTypeForParser()`

### Methods inherited from class org.apache.solr.client.solrj.impl.HttpSolrClientBase

`basicAuthCredentialsToAuthorizationString, calculateQueryParams, getIdleTimeout, getParser, getRequestUrl, getUrlParamNames, initalizeSolrParams, initializeSolrParams, isMultipart, isV2ApiRequest, processErrorsAndResponse, requestAsync, responseParser, setParser, validateGetRequest, wantStream`

### Methods inherited from class org.apache.solr.client.solrj.SolrClient

`add, add, add, add, add, add, add, add, add, add, addBean, addBean, addBean, addBean, addBeans, addBeans, addBeans, addBeans, addBeans, addBeans, commit, commit, commit, commit, commit, commit, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteById, deleteByQuery, deleteByQuery, deleteByQuery, deleteByQuery, getBinder, getById, getById, getById, getById, getById, getById, getById, getById, getContext, getDefaultCollection, optimize, optimize, optimize, optimize, optimize, optimize, ping, ping, query, query, query, query, queryAndStreamResponse, queryAndStreamResponse, queryAndStreamResponse, request, rollback, rollback`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Field Detail

#### REQ_PRINCIPAL_KEY

    public static final String REQ_PRINCIPAL_KEY

See Also:
  Constant Field Values

#### asyncTracker

    protected org.apache.solr.client.solrj.impl.Http2SolrClient.AsyncTracker asyncTracker

### Constructor Detail

#### Http2SolrClient

    protected Http2SolrClient​(String serverBaseUrl,
                              Http2SolrClient.Builder builder)

### Method Detail

#### addListenerFactory

    @Deprecated(since="9.7")
    public void addListenerFactory​(HttpListenerFactory factory)

Deprecated.

#### close

    public void close()

#### setAuthenticationStore

    public void setAuthenticationStore​(org.eclipse.jetty.client.api.AuthenticationStore authenticationStore)

#### initOutStream

    public Http2SolrClient.OutStream initOutStream​(String baseUrl,
                                                   UpdateRequest updateRequest,
                                                   String collection)
                                            throws IOException

Throws:
  `IOException`

#### send

    public void send​(Http2SolrClient.OutStream outStream,
                     SolrRequest<?> req,
                     String collection)
              throws IOException

Throws:
  `IOException`

#### asyncRequest

    public Cancellable asyncRequest​(SolrRequest<?> solrReq,
                                    String collection,
                                    AsyncListener<NamedList<Object>> asyncListener)

Specified by:
  `asyncRequest` in class `HttpSolrClientBase`
Parameters:
  `solrReq` - the request to perform
  `collection` - if null the default collection is used
  `asyncListener` - callers should provide an implementation to handle events: start, success, exception
Returns:
  Cancellable allowing the caller to attempt cancellation

#### requestAsync

    public CompletableFuture<NamedList<Object>> requestAsync​(SolrRequest<?> solrRequest,
                                                             String collection)

Description copied from class: `HttpSolrClientBase`
Execute an asynchronous request against a Solr server for a given collection.

Specified by:
  `requestAsync` in class `HttpSolrClientBase`
Parameters:
  `solrRequest` - the request to execute
  `collection` - the collection to execute the request against
Returns:
  a `CompletableFuture` that tracks the progress of the async request. Supports cancelling requests via `CompletableFuture.cancel(boolean)`, adding callbacks/error handling using `CompletableFuture.whenComplete(BiConsumer)` and `CompletableFuture.exceptionally(Function)` methods, and other CompletableFuture functionality. Will complete exceptionally in case of either an `IOException` or `SolrServerException` during the request. Once completed, the CompletableFuture will contain a `NamedList` with the response from the server.

#### request

    public NamedList<Object> request​(SolrRequest<?> solrRequest,
                                     String collection)
                              throws SolrServerException,
                                     IOException

Description copied from class: `SolrClient`
Execute a request against a Solr server for a given collection

Specified by:
  `request` in class `SolrClient`
Parameters:
  `solrRequest` - the request to execute
  `collection` - the collection to execute the request against
Returns:
  a `NamedList` containing the response from the server
Throws:
  `SolrServerException` - if there is an error on the server
  `IOException` - If there is a low-level I/O error.

#### requestWithBaseUrl

    public final <R extends SolrResponse> R requestWithBaseUrl​(String baseUrl,
                                                               String collection,
                                                               SolrRequest<R> req)
                                                        throws SolrServerException,
                                                               IOException

Executes a SolrRequest using the provided URL to temporarily override any "base URL" currently used by this client

Parameters:
  `baseUrl` - a URL to a root Solr path (i.e. "/solr") that should be used for this request
  `collection` - an optional collection or core name used to override the client's "default collection". May be 'null' for any requests that don't require a collection or wish to rely on the client's default
  `req` - the SolrRequest to send
Throws:
  `SolrServerException`
  `IOException`

#### requestWithBaseUrl

    public <R> R requestWithBaseUrl​(String baseUrl,
                                    SolrClientFunction<Http2SolrClient,​R> clientFunction)
                             throws SolrServerException,
                                    IOException

Temporarily modifies the client to use a different base URL and runs the provided lambda

Type Parameters:
  `R` - the type returned by the provided function (and by this method)
Parameters:
  `baseUrl` - the base URL to use on any requests made within the 'clientFunction' lambda
  `clientFunction` - a Function that consumes a Http2SolrClient and returns an arbitrary value
Returns:
  the value returned after invoking 'clientFunction'
Throws:
  `SolrServerException`
  `IOException`

#### isFollowRedirects

    protected boolean isFollowRedirects()

Specified by:
  `isFollowRedirects` in class `HttpSolrClientBase`

#### processorAcceptsMimeType

    protected boolean processorAcceptsMimeType​(Collection<String> processorSupportedContentTypes,
                                               String mimeType)

Specified by:
  `processorAcceptsMimeType` in class `HttpSolrClientBase`

#### allProcessorSupportedContentTypesCommaDelimited

    protected String allProcessorSupportedContentTypesCommaDelimited​(Collection<String> processorSupportedContentTypes)

Specified by:
  `allProcessorSupportedContentTypesCommaDelimited` in class `HttpSolrClientBase`

#### setRequestWriter

    @Deprecated
    public void setRequestWriter​(RequestWriter requestWriter)

Deprecated.
use `HttpSolrClientBuilderBase.withRequestWriter(RequestWriter)` instead
Choose the `RequestWriter` to use.

By default, `BinaryRequestWriter` is used.

Note: This setter method is not thread-safe.

#### getRequestWriter

    protected RequestWriter getRequestWriter()

#### setFollowRedirects

    @Deprecated
    public void setFollowRedirects​(boolean follow)

Deprecated.
use `HttpSolrClientBuilderBase.withFollowRedirects(boolean)` Redirects(boolean)} instead
Configure whether the client should follow redirects or not.

This defaults to false under the assumption that if you are following a redirect to get to a Solr installation, something is configured wrong somewhere.

#### getBaseURL

    public String getBaseURL()

Overrides:
  `getBaseURL` in class `HttpSolrClientBase`

#### getQueryParams

    @Deprecated
    public Set<String> getQueryParams()

Deprecated.
use `HttpSolrClientBase.getUrlParamNames()`

#### setUrlParamNames

    @Deprecated
    public void setUrlParamNames​(Set<String> urlParamNames)

Deprecated.
use `HttpSolrClientBuilderBase.withTheseParamNamesInTheUrl(Set)` instead
Expert Method

Parameters:
  `urlParamNames` - set of param keys that are only sent via the query string. Note that the param will be sent as a query string if the key is part of this Set or the SolrRequest's query params.
See Also:
  `SolrRequest.getQueryParams()`

#### updateDefaultMimeTypeForParser

    protected void updateDefaultMimeTypeForParser()

Specified by:
  `updateDefaultMimeTypeForParser` in class `HttpSolrClientBase`

#### setDefaultSSLConfig

    public static void setDefaultSSLConfig​(SSLConfig sslConfig)

#### resetSslContextFactory

    public static void resetSslContextFactory()