This is an automated email from the ASF dual-hosted git repository.
dsmiley pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/solr.git
The following commit(s) were added to refs/heads/main by this push:
new d7941818b49 SOLR-17994: SolrClientCustomizer (#3876)
d7941818b49 is described below
commit d7941818b495a817b897bf34d4151006e167db06
Author: David Smiley <[email protected]>
AuthorDate: Mon Dec 1 10:14:30 2025 -0500
SOLR-17994: SolrClientCustomizer (#3876)
* Rename HttpClientBuilderFactory to SolrClientCustomizer, generalizing it.
* Rename property solr.httpclient.builder.factory to
solr.solrj.http.jetty.customizer
* Rename PreemptiveBasicAuthClientBuilderFactory to
PreemptiveBasicAuthClientCustomizer
---
.../unreleased/SOLR-17994-SolrClientCustomizer.yml | 8 ++++
solr/bin/solr | 4 +-
solr/bin/solr.cmd | 4 +-
solr/bin/solr.in.cmd | 2 +-
.../apache/solr/cloud/RecoveryZkTestWithAuth.java | 8 ++--
.../configuration-guide/pages/solr-properties.adoc | 8 ++--
.../pages/basic-authentication-plugin.adoc | 6 +--
.../pages/major-changes-in-solr-10.adoc | 3 +-
...ilderFactory.java => SolrClientCustomizer.java} | 14 ++++---
.../solr/client/solrj/impl/SolrHttpConstants.java | 6 ---
.../client/solrj/jetty/HttpJettySolrClient.java | 28 +++++++++-----
...va => PreemptiveBasicAuthClientCustomizer.java} | 19 +++++-----
.../client/solrj/impl/HttpSolrClientTestBase.java | 4 +-
.../PreemptiveBasicAuthClientCustomizerTest.java} | 44 ++++++++++------------
.../solrj/jetty/HttpJettySolrClientTest.java | 19 +++++-----
15 files changed, 92 insertions(+), 85 deletions(-)
diff --git a/changelog/unreleased/SOLR-17994-SolrClientCustomizer.yml
b/changelog/unreleased/SOLR-17994-SolrClientCustomizer.yml
new file mode 100644
index 00000000000..bb3d6779a19
--- /dev/null
+++ b/changelog/unreleased/SOLR-17994-SolrClientCustomizer.yml
@@ -0,0 +1,8 @@
+# See https://github.com/apache/solr/blob/main/dev-docs/changelog.adoc
+title: Rename HttpClientBuilderFactory to SolrClientCustomizer, and property
solr.httpclient.builder.factory to solr.solrj.http.jetty.customizer
+type: other # added, changed, fixed, deprecated, removed, dependency_update,
security, other
+authors:
+ - name: David Smiley
+links:
+ - name: SOLR-17994
+ url: https://issues.apache.org/jira/browse/SOLR-17994
diff --git a/solr/bin/solr b/solr/bin/solr
index d9a95a41efe..ec7f596144d 100755
--- a/solr/bin/solr
+++ b/solr/bin/solr
@@ -342,7 +342,7 @@ fi
if [ -n "${SOLR_AUTH_TYPE:-}" ]; then
case "$(echo "$SOLR_AUTH_TYPE" | awk '{print tolower($0)}')" in
basic)
-
SOLR_AUTHENTICATION_CLIENT_BUILDER="org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientBuilderFactory"
+
SOLR_AUTHENTICATION_CLIENT_BUILDER="org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientCustomizer"
;;
*)
echo "ERROR: Value specified for SOLR_AUTH_TYPE environment variable is
invalid."
@@ -355,7 +355,7 @@ if [ -n "${SOLR_AUTHENTICATION_CLIENT_CONFIGURER:-}" ]; then
echo " Please start using SOLR_AUTH_TYPE instead"
fi
if [ -n "${SOLR_AUTHENTICATION_CLIENT_BUILDER:-}" ]; then
-
AUTHC_CLIENT_BUILDER_ARG="-Dsolr.httpclient.builder.factory=$SOLR_AUTHENTICATION_CLIENT_BUILDER"
+
AUTHC_CLIENT_BUILDER_ARG="-Dsolr.solrj.http.jetty.customizer=$SOLR_AUTHENTICATION_CLIENT_BUILDER"
AUTHC_OPTS="${AUTHC_CLIENT_BUILDER_ARG:-}"
fi
# This looks strange, but it is to avoid extra spaces when we have only one of
the values set
diff --git a/solr/bin/solr.cmd b/solr/bin/solr.cmd
index 7396804262b..e7de0ce839d 100755
--- a/solr/bin/solr.cmd
+++ b/solr/bin/solr.cmd
@@ -227,7 +227,7 @@ IF DEFINED SOLR_AUTH_TYPE (
IF DEFINED SOLR_AUTH_TYPE (
IF /I "%SOLR_AUTH_TYPE%" == "basic" (
- set
SOLR_AUTHENTICATION_CLIENT_BUILDER="org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientBuilderFactory"
+ set
SOLR_AUTHENTICATION_CLIENT_BUILDER="org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientCustomizer"
) ELSE (
echo ERROR: Value specified for SOLR_AUTH_TYPE configuration variable is
invalid.
goto err
@@ -239,7 +239,7 @@ IF DEFINED SOLR_AUTHENTICATION_CLIENT_CONFIGURER (
echo Please start using SOLR_AUTH_TYPE instead
)
IF DEFINED SOLR_AUTHENTICATION_CLIENT_BUILDER (
- set
AUTHC_CLIENT_BUILDER_ARG="-Dsolr.httpclient.builder.factory=%SOLR_AUTHENTICATION_CLIENT_BUILDER%"
+ set
AUTHC_CLIENT_BUILDER_ARG="-Dsolr.solrj.http.jetty.customizer=%SOLR_AUTHENTICATION_CLIENT_BUILDER%"
)
set "AUTHC_OPTS=%AUTHC_CLIENT_BUILDER_ARG% %SOLR_AUTHENTICATION_OPTS%"
diff --git a/solr/bin/solr.in.cmd b/solr/bin/solr.in.cmd
index d605e04b712..81be993aa47 100755
--- a/solr/bin/solr.in.cmd
+++ b/solr/bin/solr.in.cmd
@@ -173,7 +173,7 @@ REM set SOLR_SSL_CLIENT_TRUST_STORE_TYPE=
REM Settings for authentication
REM Please configure only one of SOLR_AUTHENTICATION_CLIENT_BUILDER or
SOLR_AUTH_TYPE parameters
-REM set
SOLR_AUTHENTICATION_CLIENT_BUILDER=org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientBuilderFactory
+REM set
SOLR_AUTHENTICATION_CLIENT_BUILDER=org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientCustomizer
REM set SOLR_AUTH_TYPE=basic
REM set
SOLR_AUTHENTICATION_OPTS=-Dsolr.security.auth.basicauth.credentials=solr:SolrRocks
diff --git
a/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTestWithAuth.java
b/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTestWithAuth.java
index e1dc4528995..3a62ac08f88 100644
--- a/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTestWithAuth.java
+++ b/solr/core/src/test/org/apache/solr/cloud/RecoveryZkTestWithAuth.java
@@ -27,8 +27,8 @@ import org.apache.solr.client.solrj.SolrResponse;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.apache.CloudLegacySolrClient;
import org.apache.solr.client.solrj.apache.HttpSolrClient;
-import org.apache.solr.client.solrj.impl.SolrHttpConstants;
-import
org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientBuilderFactory;
+import org.apache.solr.client.solrj.jetty.HttpJettySolrClient;
+import org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientCustomizer;
import org.apache.solr.client.solrj.request.CollectionAdminRequest;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.SolrQuery;
@@ -49,8 +49,8 @@ public class RecoveryZkTestWithAuth extends SolrCloudTestCase
{
// for context)
if (rarely()) {
System.setProperty(
- SolrHttpConstants.SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY,
- PreemptiveBasicAuthClientBuilderFactory.class.getName());
+ HttpJettySolrClient.CLIENT_CUSTOMIZER_SYSPROP,
+ PreemptiveBasicAuthClientCustomizer.class.getName());
System.setProperty("solr.security.auth.basicauth.credentials",
SecurityJson.USER_PASS);
}
diff --git
a/solr/solr-ref-guide/modules/configuration-guide/pages/solr-properties.adoc
b/solr/solr-ref-guide/modules/configuration-guide/pages/solr-properties.adoc
index a12d182b54f..1af78c0ba31 100644
--- a/solr/solr-ref-guide/modules/configuration-guide/pages/solr-properties.adoc
+++ b/solr/solr-ref-guide/modules/configuration-guide/pages/solr-properties.adoc
@@ -102,7 +102,7 @@ NOTE: Properties marked with "!" indicate inverted meaning
between pre Solr 10 a
|solr.security.allow.urls|solr.allowUrls||A comma seperated list of urls for
reading from.
-|solr.security.allow.urls.enabled|!solr.disable.allow.urls|false|If using an
allow list of accessible urls is enabled.
+|solr.security.allow.urls.enabled|!solr.disable.allow.urls|false|If using an
allow list of accessible urls is enabled.
|solr.security.auth.plugin|authenticationPlugin||Specifies the authentication
plugin to use.
@@ -110,6 +110,8 @@ NOTE: Properties marked with "!" indicate inverted meaning
between pre Solr 10 a
|solr.solrj.http.cookies.enabled|!solr.http.disableCookies| false |If
Http2SolrClient should support cookies.
+|solr.solrj.http.jetty.customizer|solr.httpclient.builder.factory||A class
loaded to customize HttpJettySolrClient upon creation.
+
|solr.streamingexpressions.facet.tiered.enabled|solr.facet.stream.tiered|true|Controls
whether tiered faceting is enabled for streaming expressions.
|solr.streamingexpressions.macros.enabled|StreamingExpressionMacros|false|Controls
whether to expand URL parameters inside of the `expr` parameter.
@@ -163,8 +165,8 @@ System properties can be set in several ways:
2. In `solr.in.sh` (Unix) or `solr.in.cmd` (Windows) using environment
variables
3. Through environment variables (with appropriate naming conventions)
-Environment variables can also be used to set these properties.
-You may find this useful in environments such as Docker.
+Environment variables can also be used to set these properties.
+You may find this useful in environments such as Docker.
Environment variables should be uppercase with dot notations equivalents, e.g.
`SOLR_API_V2_ENABLED` for the property `solr.api.v2.enabled`.
== See Also
diff --git
a/solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc
b/solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc
index 204731a89e4..9121f0046fd 100644
---
a/solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc
+++
b/solr/solr-ref-guide/modules/deployment-guide/pages/basic-authentication-plugin.adoc
@@ -358,9 +358,9 @@ QueryResponse rsp = req.process(client);
=== Global (JVM) Basic Auth Credentials
-Alternatively, users can use SolrJ's `PreemptiveBasicAuthClientBuilderFactory`
to add basic authentication credentials to _all_ requests automatically.
-To enable this feature, users should set the following system property
`-Dsolr.httpclient.builder.factory=org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientBuilderFactory`.
-`PreemptiveBasicAuthClientBuilderFactory` allows applications to provide
credentials in two different ways:
+Alternatively, users can use SolrJ's `PreemptiveBasicAuthClientCustomizer` to
add basic authentication credentials to _all_ requests automatically.
+To enable this feature, users should set the following system property
`-Dsolr.solrj.http.jetty.customizer=org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientCustomizer`.
+`PreemptiveBasicAuthClientCustomizer` allows applications to provide
credentials in two different ways:
. The `solr.security.auth.basicauth.credentials` system property can be
passed, containing the credentials directly (e.g.,
`-Dsolr.security.auth.basicauth.credentials=username:password`).
This option is straightforward, but may expose the credentials in the command
line, depending on how they're set.
diff --git
a/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
b/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
index b4fec165972..f3f7b2dc379 100644
---
a/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
+++
b/solr/solr-ref-guide/modules/upgrade-notes/pages/major-changes-in-solr-10.adoc
@@ -78,6 +78,8 @@ The following classes were renamed with some refactorings:
`Http2SolrClient` to
`CloudHttp2SolrClient.Builder` has moved to `CloudSolrClient`; users should
generally have no need to refer to `CloudHttp2SolrClient` or any class/member
with "http2" in it.
The builder will check if Jetty `HttpClient` is available and use that,
otherwise fallback on a JDK based `HttpClient`.
`CloudJettySolrClient` is new, proving an explicit option.
+The system property `solr.solrj.http.jetty.customizer` (formerly
`solr.httpclient.builder.factory`) can configure a `HttpJettySolrClient`.
+The only built-in implementation is
`org.apache.solr.client.solrj.jetty.PreemptiveBasicAuthClientCustomizer`,
renamed from `PreemptiveBasicAuthClientCustomizer`.
* `SolrClient` implementations that rely on "base URL" strings now only accept
"root" URL paths (i.e. URLs that end in "/solr").
Users who previously relied on collection-specific URLs to avoid including the
collection name with each request can instead achieve this by specifying a
"default collection" using the `withDefaultCollection` method available on most
`SolrClient` Builders.
@@ -90,7 +92,6 @@ Users who previously relied on collection-specific URLs to
avoid including the c
This makes it clear that they pertain specifically to “JavaBin” rather than
binary in general.
* The deprecated SolrClient implementations based on Apache HttpClient are
removed from Solrj, thus the related dependencies are no longer present.
-The system property `solr.httpclient.builder.factory` now only configures
SolrClients using a Jetty based HttpClient.
* A number of classes moved to different packages to be better organized:
ShardTerms, DelegatingClusterStateProvider, JavaBinRequestWriter,
RoutedAliasTypes, SolrQuery, XMLRequestWriter, JacksonContentWriter,
FastStreamingDocsCallback, InputStreamResponse, InputStreamResponseParser,
JavaBinResponseParser, ResponseParser, StreamingJavaBinResponseParser,
StreamingResponseCallback, XMLResponseParser, JacksonDataBindResponseParser,
JsonMapResponseParser, SocketProxy
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientBuilderFactory.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientCustomizer.java
similarity index 68%
rename from
solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientBuilderFactory.java
rename to
solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientCustomizer.java
index 48558e9b076..98dc2d57564 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpClientBuilderFactory.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrClientCustomizer.java
@@ -16,15 +16,17 @@
*/
package org.apache.solr.client.solrj.impl;
-import java.io.Closeable;
-import org.apache.solr.client.solrj.jetty.HttpJettySolrClient;
+import org.apache.solr.client.solrj.SolrClient;
/**
- * A config hook for post-configuration of a {@linkplain HttpJettySolrClient}
by its builder.
+ * A config hook for post-configuration of a {@linkplain SolrClient} by its
builder. It is not
+ * supported by all builders.
*
- * @see SolrHttpConstants#SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY
+ * @param <T> type of SolrClient this customizer targets
+ * @see
org.apache.solr.client.solrj.jetty.HttpJettySolrClient#CLIENT_CUSTOMIZER_SYSPROP
* @lucene.experimental
*/
-public interface HttpClientBuilderFactory extends Closeable {
- default void setup(HttpJettySolrClient client) {}
+public interface SolrClientCustomizer<T extends SolrClient> {
+
+ void setup(T client);
}
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrHttpConstants.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrHttpConstants.java
index bc2bbaf9712..32d4fc6cbfe 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrHttpConstants.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/SolrHttpConstants.java
@@ -42,12 +42,6 @@ public interface SolrHttpConstants {
/** Maximum total connections allowed */
String PROP_MAX_CONNECTIONS = "maxConnections";
- /**
- * A Java system property to select the {@linkplain
HttpClientBuilderFactory} used for configuring
- * HTTP based SolrClients.
- */
- String SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY =
"solr.httpclient.builder.factory";
-
/**
* System property consulted to determine if HTTP based SolrClients will
require hostname
* validation of SSL Certificates. The default behavior is to enforce peer
name validation.
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.java
index 9369f476dec..072a2add953 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/HttpJettySolrClient.java
@@ -41,10 +41,10 @@ import org.apache.solr.client.api.util.SolrVersion;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.HttpClientBuilderFactory;
import org.apache.solr.client.solrj.impl.HttpSolrClientBase;
import org.apache.solr.client.solrj.impl.HttpSolrClientBuilderBase;
import org.apache.solr.client.solrj.impl.LBSolrClient;
+import org.apache.solr.client.solrj.impl.SolrClientCustomizer;
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
import
org.apache.solr.client.solrj.jetty.HttpListenerFactory.RequestResponseListener;
import org.apache.solr.client.solrj.request.RequestWriter;
@@ -101,7 +101,15 @@ import org.slf4j.MDC;
*/
public class HttpJettySolrClient extends HttpSolrClientBase {
// formerly known at Http2SolrClient
+
private static final Logger log =
LoggerFactory.getLogger(MethodHandles.lookup().lookupClass());
+
+ /**
+ * A Java system property to select the {@linkplain SolrClientCustomizer}
used for configuring
+ * this client.
+ */
+ public static final String CLIENT_CUSTOMIZER_SYSPROP =
"solr.solrj.http.jetty.customizer";
+
public static final String REQ_PRINCIPAL_KEY = "solr-req-principal";
private static final String USER_AGENT =
"Solr[" + MethodHandles.lookup().lookupClass().getName() + "] " +
SolrVersion.LATEST_STRING;
@@ -156,7 +164,7 @@ public class HttpJettySolrClient extends HttpSolrClientBase
{
this.idleTimeoutMillis = builder.getIdleTimeoutMillis();
try {
- applyHttpClientBuilderFactory();
+ applyClientCustomizer();
} catch (RuntimeException e) {
try {
this.close();
@@ -177,16 +185,16 @@ public class HttpJettySolrClient extends
HttpSolrClientBase {
this.authenticationStore = (AuthenticationStoreHolder)
httpClient.getAuthenticationStore();
}
- private void applyHttpClientBuilderFactory() {
- String factoryClassName =
-
System.getProperty(SolrHttpConstants.SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY);
+ @SuppressWarnings("unchecked")
+ private void applyClientCustomizer() {
+ String factoryClassName = EnvUtils.getProperty(CLIENT_CUSTOMIZER_SYSPROP);
if (factoryClassName != null) {
- log.debug("Using Http Builder Factory: {}", factoryClassName);
- HttpClientBuilderFactory factory;
+ log.debug("Using {}", factoryClassName);
+ SolrClientCustomizer<HttpJettySolrClient> instance;
try {
- factory =
+ instance =
Class.forName(factoryClassName)
- .asSubclass(HttpClientBuilderFactory.class)
+ .asSubclass(SolrClientCustomizer.class)
.getDeclaredConstructor()
.newInstance();
} catch (InstantiationException
@@ -197,7 +205,7 @@ public class HttpJettySolrClient extends HttpSolrClientBase
{
throw new RuntimeException(
"Unable to instantiate " + HttpJettySolrClient.class.getName(), e);
}
- factory.setup(this);
+ instance.setup(this);
}
}
diff --git
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientBuilderFactory.java
b/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientCustomizer.java
similarity index 91%
rename from
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientBuilderFactory.java
rename to
solr/solrj/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientCustomizer.java
index a7553d6cb3d..d4d0fd2bad3 100644
---
a/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientBuilderFactory.java
+++
b/solr/solrj/src/java/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientCustomizer.java
@@ -26,7 +26,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Properties;
-import org.apache.solr.client.solrj.impl.HttpClientBuilderFactory;
+import org.apache.solr.client.solrj.impl.SolrClientCustomizer;
import org.apache.solr.client.solrj.impl.SolrHttpConstants;
import org.apache.solr.common.params.MapSolrParams;
import org.apache.solr.common.params.SolrParams;
@@ -36,10 +36,13 @@ import
org.eclipse.jetty.client.WWWAuthenticationProtocolHandler;
import org.eclipse.jetty.client.internal.HttpAuthenticationStore;
/**
- * HttpClientConfigurer implementation providing support for preemptive Http
Basic authentication
- * scheme.
+ * A {@link HttpJettySolrClient} {@link SolrClientCustomizer} supporting a
preemptive Http Basic
+ * authentication scheme.
+ *
+ * @see HttpJettySolrClient#CLIENT_CUSTOMIZER_SYSPROP
*/
-public class PreemptiveBasicAuthClientBuilderFactory implements
HttpClientBuilderFactory {
+public class PreemptiveBasicAuthClientCustomizer
+ implements SolrClientCustomizer<HttpJettySolrClient> {
/**
* A system property used to specify a properties file containing default
parameters used for
* creating an HTTP client. This is specifically useful for configuring the
HTTP basic auth
@@ -66,9 +69,6 @@ public class PreemptiveBasicAuthClientBuilderFactory
implements HttpClientBuilde
CREDENTIAL_RESOLVER.defaultParams = params;
}
- @Override
- public void close() throws IOException {}
-
@Override
public void setup(HttpJettySolrClient client) {
final String basicAuthUser =
@@ -99,10 +99,9 @@ public class PreemptiveBasicAuthClientBuilderFactory
implements HttpClientBuilde
public CredentialsResolver() {
String credentials =
- System.getProperty(
-
PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS);
+
System.getProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS);
String configFile =
-
System.getProperty(PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_HTTP_CLIENT_CONFIG);
+
System.getProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_HTTP_CLIENT_CONFIG);
if (credentials != null && configFile != null) {
throw new IllegalArgumentException(
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java
index e90632b02bd..632406e3278 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientTestBase.java
@@ -39,7 +39,7 @@ import org.apache.solr.SolrJettyTestBase;
import org.apache.solr.client.solrj.SolrClient;
import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.apache.HttpClientUtil;
+import org.apache.solr.client.solrj.jetty.HttpJettySolrClient;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.SolrQuery;
import org.apache.solr.client.solrj.request.UpdateRequest;
@@ -92,7 +92,7 @@ public abstract class HttpSolrClientTestBase extends
SolrJettyTestBase {
@Override
public void tearDown() throws Exception {
System.clearProperty("solr.security.auth.basicauth.credentials");
- System.clearProperty(HttpClientUtil.SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY);
+ System.clearProperty(HttpJettySolrClient.CLIENT_CUSTOMIZER_SYSPROP);
DebugServlet.clear();
super.tearDown();
}
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientBuilderFactoryTest.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/PreemptiveBasicAuthClientCustomizerTest.java
similarity index 61%
rename from
solr/solrj/src/test/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientBuilderFactoryTest.java
rename to
solr/solrj/src/test/org/apache/solr/client/solrj/impl/PreemptiveBasicAuthClientCustomizerTest.java
index 3ee8f4dcc78..ae76c810232 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/PreemptiveBasicAuthClientBuilderFactoryTest.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/PreemptiveBasicAuthClientCustomizerTest.java
@@ -26,7 +26,7 @@ import java.util.Properties;
import org.apache.solr.SolrTestCase;
import org.apache.solr.client.solrj.apache.HttpClientUtil;
-public class PreemptiveBasicAuthClientBuilderFactoryTest extends SolrTestCase {
+public class PreemptiveBasicAuthClientCustomizerTest extends SolrTestCase {
private void assertIllegalArgumentException(ThrowingRunnable executable,
String expectedMessage) {
Exception e = expectThrows(IllegalArgumentException.class, executable);
@@ -37,43 +37,39 @@ public class PreemptiveBasicAuthClientBuilderFactoryTest
extends SolrTestCase {
@Override
public void tearDown() throws Exception {
-
System.clearProperty(PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS);
-
System.clearProperty(PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_HTTP_CLIENT_CONFIG);
+
System.clearProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS);
+
System.clearProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_HTTP_CLIENT_CONFIG);
super.tearDown();
}
public void testBadSysPropsCredentials() {
- System.setProperty(
-
PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS, "foo");
+
System.setProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS,
"foo");
assertIllegalArgumentException(
- PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver::new,
+ PreemptiveBasicAuthClientCustomizer.CredentialsResolver::new,
"Invalid Authentication credentials");
- System.setProperty(
-
PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS,
"foo:");
+
System.setProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS,
"foo:");
assertIllegalArgumentException(
- PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver::new,
+ PreemptiveBasicAuthClientCustomizer.CredentialsResolver::new,
"Invalid Authentication credentials");
- System.setProperty(
-
PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS,
":foo");
+
System.setProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS,
":foo");
assertIllegalArgumentException(
- PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver::new,
+ PreemptiveBasicAuthClientCustomizer.CredentialsResolver::new,
"Invalid Authentication credentials");
}
public void testSysPropsAndPropsFile() {
- System.setProperty(
-
PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS, "foo");
-
System.setProperty(PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_HTTP_CLIENT_CONFIG,
"foo");
+
System.setProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS,
"foo");
+
System.setProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_HTTP_CLIENT_CONFIG,
"foo");
assertIllegalArgumentException(
- PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver::new,
+ PreemptiveBasicAuthClientCustomizer.CredentialsResolver::new,
"Basic authentication credentials passed");
}
public void testCredentialsFromSystemProperties() {
System.setProperty(
-
PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS,
"foo:bar");
- PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver
credentialsResolver =
- new PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver();
+ PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS,
"foo:bar");
+ PreemptiveBasicAuthClientCustomizer.CredentialsResolver
credentialsResolver =
+ new PreemptiveBasicAuthClientCustomizer.CredentialsResolver();
assertEquals("foo",
credentialsResolver.defaultParams.get(HttpClientUtil.PROP_BASIC_AUTH_USER));
assertEquals("bar",
credentialsResolver.defaultParams.get(HttpClientUtil.PROP_BASIC_AUTH_PASS));
}
@@ -84,14 +80,12 @@ public class PreemptiveBasicAuthClientBuilderFactoryTest
extends SolrTestCase {
p.setProperty("httpBasicAuthPassword", "bar");
Path f = createTempFile();
try (BufferedWriter fw = Files.newBufferedWriter(f,
StandardCharsets.UTF_8)) {
- p.store(
- fw,
- "tmp properties file for
PreemptiveBasicAuthClientBuilderFactoryTest.testCredentialsFromConfigFile");
+ p.store(fw, "tmp properties file for " + getTestName());
}
System.setProperty(
- PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_HTTP_CLIENT_CONFIG,
f.toString());
- PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver
credentialsResolver =
- new PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver();
+ PreemptiveBasicAuthClientCustomizer.SYS_PROP_HTTP_CLIENT_CONFIG,
f.toString());
+ PreemptiveBasicAuthClientCustomizer.CredentialsResolver
credentialsResolver =
+ new PreemptiveBasicAuthClientCustomizer.CredentialsResolver();
assertEquals("foo",
credentialsResolver.defaultParams.get(HttpClientUtil.PROP_BASIC_AUTH_USER));
assertEquals("bar",
credentialsResolver.defaultParams.get(HttpClientUtil.PROP_BASIC_AUTH_PASS));
}
diff --git
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientTest.java
b/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientTest.java
index 5606e7838c8..81c9f75bae4 100644
---
a/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientTest.java
+++
b/solr/solrj/src/test/org/apache/solr/client/solrj/jetty/HttpJettySolrClientTest.java
@@ -35,7 +35,6 @@ import org.apache.solr.client.solrj.SolrRequest;
import org.apache.solr.client.solrj.SolrServerException;
import org.apache.solr.client.solrj.impl.HttpSolrClientBuilderBase;
import org.apache.solr.client.solrj.impl.HttpSolrClientTestBase;
-import org.apache.solr.client.solrj.impl.SolrHttpConstants;
import org.apache.solr.client.solrj.request.JavaBinRequestWriter;
import org.apache.solr.client.solrj.request.QueryRequest;
import org.apache.solr.client.solrj.request.SolrPing;
@@ -498,13 +497,13 @@ public class HttpJettySolrClientTest extends
HttpSolrClientTestBase {
@Test
public void testSetCredentialsWithSysProps() throws IOException,
SolrServerException {
System.setProperty(
-
PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS,
"foo:bar");
+ PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS,
"foo:bar");
System.setProperty(
- SolrHttpConstants.SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY,
- PreemptiveBasicAuthClientBuilderFactory.class.getName());
+ HttpJettySolrClient.CLIENT_CUSTOMIZER_SYSPROP,
+ PreemptiveBasicAuthClientCustomizer.class.getName());
// Hack to ensure we get a new set of parameters for this test
- PreemptiveBasicAuthClientBuilderFactory.setDefaultSolrParams(
- new
PreemptiveBasicAuthClientBuilderFactory.CredentialsResolver().defaultParams);
+ PreemptiveBasicAuthClientCustomizer.setDefaultSolrParams(
+ new
PreemptiveBasicAuthClientCustomizer.CredentialsResolver().defaultParams);
try (var client =
new HttpJettySolrClient.Builder(getBaseUrl() + DEBUG_SERVLET_PATH)
.withDefaultCollection(DEFAULT_CORE)
@@ -527,9 +526,9 @@ public class HttpJettySolrClientTest extends
HttpSolrClientTestBase {
"Basic " +
Base64.getEncoder().encodeToString("foo:bar".getBytes(StandardCharsets.UTF_8)),
authorizationHeader);
} finally {
-
System.clearProperty(PreemptiveBasicAuthClientBuilderFactory.SYS_PROP_BASIC_AUTH_CREDENTIALS);
-
System.clearProperty(SolrHttpConstants.SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY);
-
PreemptiveBasicAuthClientBuilderFactory.setDefaultSolrParams(SolrParams.of());
+
System.clearProperty(PreemptiveBasicAuthClientCustomizer.SYS_PROP_BASIC_AUTH_CREDENTIALS);
+ System.clearProperty(HttpJettySolrClient.CLIENT_CUSTOMIZER_SYSPROP);
+
PreemptiveBasicAuthClientCustomizer.setDefaultSolrParams(SolrParams.of());
}
}
@@ -607,7 +606,7 @@ public class HttpJettySolrClientTest extends
HttpSolrClientTestBase {
@Test
public void testBadHttpFactory() {
- System.setProperty(SolrHttpConstants.SYS_PROP_HTTP_CLIENT_BUILDER_FACTORY,
"FakeClassName");
+ System.setProperty(HttpJettySolrClient.CLIENT_CUSTOMIZER_SYSPROP,
"FakeClassName");
try {
SolrClient client =
new HttpJettySolrClient.Builder(getBaseUrl() + DEBUG_SERVLET_PATH)