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 c6aabd99bca SOLR-17705 SolrRequest's type is now unbounded (#3270)
c6aabd99bca is described below

commit c6aabd99bca2e7dcfe81062917ad7e87bd3537ab
Author: David Smiley <[email protected]>
AuthorDate: Thu Apr 10 00:02:14 2025 -0400

    SOLR-17705 SolrRequest's type is now unbounded (#3270)
    
    Is not necessarily a SolrResponse anymore.  Helps V2 API.
    * SolrRequest.createResponse no longer takes a SolrClient; it was a weird.  
Now is a NamedList.
---
 solr/CHANGES.txt                                   | 29 ++-------------------
 .../org/apache/solr/handler/SolrConfigHandler.java |  3 +--
 .../org/apache/solr/schema/ManagedIndexSchema.java |  3 +--
 .../TestEmbeddedSolrServerAdminHandler.java        |  3 +--
 .../solr/filestore/TestDistribFileStore.java       |  2 +-
 .../solr/handler/admin/HealthCheckHandlerTest.java |  7 -----
 .../manager/consumer/KafkaCrossDcConsumer.java     |  5 ++--
 .../solr/crossdc/common/MirroredSolrRequest.java   |  6 ++---
 .../common/MirroredSolrRequestSerializer.java      |  3 ++-
 .../org/apache/solr/client/solrj/SolrRequest.java  | 30 ++++++++++++++++------
 .../solrj/request/AbstractUpdateRequest.java       |  4 +--
 .../solrj/request/CollectionAdminRequest.java      | 24 ++++++++---------
 .../request/CollectionRequiringSolrRequest.java    |  4 +--
 .../solrj/request/ConfigSetAdminRequest.java       |  8 +++---
 .../client/solrj/request/CoreAdminRequest.java     |  3 ++-
 .../solrj/request/DelegationTokenRequest.java      | 10 ++++----
 .../client/solrj/request/DirectXmlRequest.java     |  4 +--
 .../solrj/request/DocumentAnalysisRequest.java     |  4 +--
 .../client/solrj/request/FieldAnalysisRequest.java |  4 +--
 .../client/solrj/request/GenericSolrRequest.java   |  4 +--
 .../client/solrj/request/HealthCheckRequest.java   |  7 ++---
 .../solr/client/solrj/request/LukeRequest.java     |  4 +--
 .../solr/client/solrj/request/QueryRequest.java    |  4 +--
 .../apache/solr/client/solrj/request/SolrPing.java |  4 +--
 .../solr/client/solrj/request/V2Request.java       |  4 +--
 .../client/solrj/request/schema/SchemaRequest.java | 26 +++++++++----------
 .../apache/solr/client/solrj/util/ClientUtils.java |  3 +--
 .../solrj/src/resources/java-template/api.mustache |  4 ++-
 .../solrj/request/TestConfigSetAdminRequest.java   |  4 +--
 .../java/org/apache/solr/cloud/ConfigRequest.java  |  7 +++--
 30 files changed, 102 insertions(+), 125 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 1194d8c1db1..8036ecc3d89 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -41,6 +41,8 @@ Improvements
 
 * SOLR-17701: Simplify bin/solr scripts by removing AUTH_PORT export in favour 
of more commonly used SOLR_PORT export. (Eric Pugh)
 
+* SOLR-17705: SolrJ's SolrRequest now allows any type for its response; 
needn't be SolrResponse. (David Smiley)
+
 Optimizations
 ---------------------
 * SOLR-17568: The CLI bin/solr export tool now contacts the appropriate nodes 
directly for data instead of proxying through one.
@@ -113,10 +115,6 @@ Deprecation Removals
 
 * SOLR-17518: Removed deprecated methods `getXml()` and `writeXml()` from 
`UpdateRequest`. (Pierre Salagnac)
 
-* SOLR-17655: Removed deprecated ExternalFileField field type. (Eric Pugh)
-
-* SOLR-17683: Removed deprecated CurrencyField field type. (Eric Pugh)
-
 Dependency Upgrades
 ---------------------
 (No changes)
@@ -170,14 +168,6 @@ Other Changes
 * SOLR-17706: SolrJ DocumentObjectBinder is now a global singleton via an 
INSTANCE field and that
   which is pluggable via Java SPI/ServiceLoader.  SolrClient.getBinder is 
gone.  (David Smiley)
 
-* SOLR-17584: There is no longer a distinction between trusted and untrusted 
configSets; all are now trusted.
-  To ensure security, Solr should enforce authentication and authorization,
-  allowing only authorized admins to publish them. (Abhishek Umarjikar)
-
-* SOLR-14070: Deprecate CloudSolrClient's ZooKeeper Hosts constructor. 
(Abhishek Umarjikar)
-
-* SOLR-17703: SolrJ - Rename BinaryResponseParser and BinaryRequestWriter 
including StreamingBinaryResponseParser to "JavaBin.." equivalent. (Abhishek 
Umarjikar)
-
 ==================  9.9.0 ==================
 New Features
 ---------------------
@@ -193,10 +183,6 @@ New Features
 
 * SOLR-17632: Added update request processor to encode text to vector at 
indexing time through external LLM services. (Alessandro Benedetti)
 
-* SOLR-17714: Added a FuzzyQParser to enable all FuzzyQuery customizations. 
(Houston Putman, Siju Varghese)
-
-* SOLR-17678: ReRank queries can now return the matchScore (original score) in 
addition to the re-ranked score. (Siju Varghese, Houston Putman)
-
 Improvements
 ---------------------
 * SOLR-15751: The v2 API now has parity with the v1 "COLSTATUS" and "segments" 
APIs, which can be used to fetch detailed information about 
@@ -219,8 +205,6 @@ Improvements
 * SOLR-10998: v2 APIs now obey the "Accept" request header for 
content-negotiation if 'wt' is unspecified.  JSON is still used as a default 
when
   neither 'Accept' or 'wt' are specified. (Jason Gerlowski)
 
-* SOLR-17732: Score-based return fields other than "score" can now be returned 
in distributed queries. (Houston Putman)
-
 Optimizations
 ---------------------
 * SOLR-17578: Remove ZkController internal core supplier, for slightly faster 
reconnection after Zookeeper session loss. (Pierre Salagnac)
@@ -244,15 +228,10 @@ Bug Fixes
 
 * SOLR-17709: Fix race condition when checking distrib async cmd status 
(Houston Putman)
 
-* SOLR-17692: Core unload/deletion now preempts all forms of ongoing 
"recovery", rather than inadvertently waiting for
-  completion in some cases. (Jason Gerlowski)
-
 Dependency Upgrades
 ---------------------
 * SOLR-17471: Upgrade Lucene to 9.12.1. (Pierre Salagnac, Christine Poerschke)
 
-* Upgrade forbiddenapis to 3.9. (Uwe Schindler)
-
 Other Changes
 ---------------------
 * SOLR-17579: Remove unused code and other refactorings in ReplicationHandler 
and tests.  Removed unused public 
@@ -288,10 +267,6 @@ Other Changes
 
 * SOLR-17518: Deprecate UpdateRequest.getXml() and replace it with 
XMLRequestWriter. (Pierre Salagnac)
 
-* SOLR-17716: Handle interrupted exception in SolrCores.waitAddPendingCoreOps. 
(Bruno Roustant)
-
-* SOLR-17651: Add System.exit() in forbidden APIs, and make sure CLI unit 
tests never call it. (Pierre Salagnac)
-
 ==================  9.8.1 ==================
 Bug Fixes
 ---------------------
diff --git a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java 
b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
index 4842534259d..a98c7481c38 100644
--- a/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
+++ b/solr/core/src/java/org/apache/solr/handler/SolrConfigHandler.java
@@ -54,7 +54,6 @@ import java.util.concurrent.locks.ReentrantLock;
 import org.apache.solr.api.AnnotatedApi;
 import org.apache.solr.api.Api;
 import org.apache.solr.api.ApiBag;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -1029,7 +1028,7 @@ public class SolrConfigHandler extends RequestHandlerBase
     }
 
     @Override
-    protected SolrResponse createResponse(SolrClient client) {
+    protected SolrResponse createResponse(NamedList<Object> namedList) {
       return null;
     }
 
diff --git a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java 
b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
index d3da65fb5ce..d8ede1027ed 100644
--- a/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
+++ b/solr/core/src/java/org/apache/solr/schema/ManagedIndexSchema.java
@@ -40,7 +40,6 @@ import java.util.concurrent.Future;
 import java.util.concurrent.TimeUnit;
 import org.apache.lucene.util.IOUtils;
 import org.apache.lucene.util.Version;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
@@ -410,7 +409,7 @@ public final class ManagedIndexSchema extends IndexSchema {
     }
 
     @Override
-    protected SolrResponse createResponse(SolrClient client) {
+    protected SolrResponse createResponse(NamedList<Object> namedList) {
       return null;
     }
 
diff --git 
a/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerAdminHandler.java
 
b/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerAdminHandler.java
index 757108693b3..450db6cc514 100644
--- 
a/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerAdminHandler.java
+++ 
b/solr/core/src/test/org/apache/solr/client/solrj/embedded/TestEmbeddedSolrServerAdminHandler.java
@@ -18,7 +18,6 @@ package org.apache.solr.client.solrj.embedded;
 
 import java.io.IOException;
 import org.apache.solr.SolrTestCaseJ4;
-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.response.QueryResponse;
@@ -57,7 +56,7 @@ public class TestEmbeddedSolrServerAdminHandler extends 
SolrTestCaseJ4 {
     }
 
     @Override
-    protected QueryResponse createResponse(final SolrClient client) {
+    protected QueryResponse createResponse(final NamedList<Object> namedList) {
       return new QueryResponse();
     }
 
diff --git 
a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java 
b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
index 1a32a24330f..49a77b9a02e 100644
--- a/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
+++ b/solr/core/src/test/org/apache/solr/filestore/TestDistribFileStore.java
@@ -246,7 +246,7 @@ public class TestDistribFileStore extends SolrCloudTestCase 
{
   public static NavigableObject assertResponseValues(
       int repeats, SolrClient client, SolrRequest<?> req, Map<String, Object> 
vals)
       throws Exception {
-    Callable<NavigableObject> callable = () -> req.process(client);
+    Callable<NavigableObject> callable = () -> client.request(req);
 
     return assertResponseValues(repeats, callable, vals);
   }
diff --git 
a/solr/core/src/test/org/apache/solr/handler/admin/HealthCheckHandlerTest.java 
b/solr/core/src/test/org/apache/solr/handler/admin/HealthCheckHandlerTest.java
index 6955b994f7a..7607741f153 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/admin/HealthCheckHandlerTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/admin/HealthCheckHandlerTest.java
@@ -133,13 +133,6 @@ public class HealthCheckHandlerTest extends 
SolrCloudTestCase {
     }
   }
 
-  @Test(expected = AssertionError.class)
-  public void testHealthCheckHandlerWithCloudClient() throws IOException, 
SolrServerException {
-    // negative check of a HealthCheckRequest using cloud solr client
-    HealthCheckRequest req = new HealthCheckRequest();
-    req.process(cluster.getSolrClient());
-  }
-
   @Test
   public void testHealthCheckV2Api() throws Exception {
     V2Response res = new 
V2Request.Builder("/node/health").build().process(cluster.getSolrClient());
diff --git 
a/solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/KafkaCrossDcConsumer.java
 
b/solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/KafkaCrossDcConsumer.java
index 1839f051fa0..6ff3edb727a 100644
--- 
a/solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/KafkaCrossDcConsumer.java
+++ 
b/solr/cross-dc-manager/src/java/org/apache/solr/crossdc/manager/consumer/KafkaCrossDcConsumer.java
@@ -40,6 +40,7 @@ import org.apache.kafka.common.errors.SerializationException;
 import org.apache.kafka.common.errors.WakeupException;
 import org.apache.kafka.common.serialization.StringDeserializer;
 import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.common.SolrInputDocument;
@@ -418,7 +419,7 @@ public class KafkaCrossDcConsumer extends 
Consumer.CrossDcConsumer {
   }
 
   public void sendBatch(
-      SolrRequest<?> solrReqBatch,
+      SolrRequest<? extends SolrResponse> solrReqBatch,
       MirroredSolrRequest.Type type,
       ConsumerRecord<String, MirroredSolrRequest<?>> lastRecord,
       PartitionManager.WorkUnit workUnit) {
@@ -427,7 +428,7 @@ public class KafkaCrossDcConsumer extends 
Consumer.CrossDcConsumer {
         executor.submit(
             () -> {
               try {
-                final MirroredSolrRequest<?> mirroredSolrRequest =
+                final var mirroredSolrRequest =
                     new MirroredSolrRequest<>(type, 
lastRecord.value().getAttempt(), solrReqBatch);
                 final IQueueHandler.Result<MirroredSolrRequest<?>> result =
                     messageProcessor.handleItem(mirroredSolrRequest);
diff --git 
a/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/common/MirroredSolrRequest.java
 
b/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/common/MirroredSolrRequest.java
index 8af651c664f..7d27878f89b 100644
--- 
a/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/common/MirroredSolrRequest.java
+++ 
b/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/common/MirroredSolrRequest.java
@@ -23,7 +23,6 @@ import java.io.InputStream;
 import java.util.Collection;
 import java.util.Locale;
 import java.util.Objects;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
@@ -36,6 +35,7 @@ import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.ContentStreamBase;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * Class to encapsulate a mirrored Solr request. This adds a timestamp and 
#attempts to the request
@@ -76,7 +76,7 @@ public class MirroredSolrRequest<T extends SolrResponse> {
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -116,7 +116,7 @@ public class MirroredSolrRequest<T extends SolrResponse> {
     }
 
     @Override
-    protected ConfigSetAdminResponse createResponse(SolrClient client) {
+    protected ConfigSetAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new ConfigSetAdminResponse();
     }
   }
diff --git 
a/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/common/MirroredSolrRequestSerializer.java
 
b/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/common/MirroredSolrRequestSerializer.java
index 2e01c2e2047..d35d1743338 100644
--- 
a/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/common/MirroredSolrRequestSerializer.java
+++ 
b/solr/modules/cross-dc/src/java/org/apache/solr/crossdc/common/MirroredSolrRequestSerializer.java
@@ -27,6 +27,7 @@ import java.util.Map;
 import org.apache.kafka.common.serialization.Deserializer;
 import org.apache.kafka.common.serialization.Serializer;
 import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.common.params.CollectionParams;
 import org.apache.solr.common.params.CoreAdminParams;
@@ -77,7 +78,7 @@ public class MirroredSolrRequestSerializer
       throw new RuntimeException(e);
     }
     MirroredSolrRequest.Type type = MirroredSolrRequest.Type.get((String) 
requestMap.get("type"));
-    SolrRequest<?> request;
+    SolrRequest<? extends SolrResponse> request;
     int attempt = 
Integer.parseInt(String.valueOf(requestMap.getOrDefault("attempt", "-1")));
     long submitTimeNanos =
         
Long.parseLong(String.valueOf(requestMap.getOrDefault("submitTimeNanos", 
"-1")));
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java
index 4e06f697f88..d3877dc091a 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/SolrRequest.java
@@ -29,11 +29,20 @@ import java.util.concurrent.TimeUnit;
 import org.apache.solr.client.solrj.request.RequestWriter;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
+import org.apache.solr.common.util.NamedList;
 
 /**
+ * The SolrJ base class for a request into Solr. If you create one of these, 
then call {@link
+ * #process(SolrClient)} to send it and get a typed response. There are some 
convenience methods on
+ * {@link SolrClient} that avoids the need to even create these explicitly for 
common cases.
+ *
+ * @param <T> the response type, that which is returned from a {@code process} 
method. For V1 APIs,
+ *     it's a {@link SolrResponse}.
+ * @see org.apache.solr.client.solrj.request.QueryRequest
+ * @see org.apache.solr.client.solrj.request.UpdateRequest
  * @since solr 1.3
  */
-public abstract class SolrRequest<T extends SolrResponse> implements 
Serializable {
+public abstract class SolrRequest<T> implements Serializable {
   // This user principal is typically used by Auth plugins during 
distributed/sharded search
   private Principal userPrincipal;
 
@@ -238,11 +247,13 @@ public abstract class SolrRequest<T extends SolrResponse> 
implements Serializabl
   }
 
   /**
-   * Create a new SolrResponse to hold the response from the server
+   * Create a new SolrResponse to hold the response from the server. If the 
response extends {@link
+   * SolrResponse}, then there's no need to use the arguments, as {@link
+   * SolrResponse#setResponse(NamedList)} will be called right after this 
method.
    *
-   * @param client the {@link SolrClient} the request will be sent to
+   * @param namedList from {@link SolrClient#request(SolrRequest, String)}.
    */
-  protected abstract T createResponse(SolrClient client);
+  protected abstract T createResponse(NamedList<Object> namedList);
 
   /**
    * Send this request to a {@link SolrClient} and return the response
@@ -256,12 +267,15 @@ public abstract class SolrRequest<T extends SolrResponse> 
implements Serializabl
   public final T process(SolrClient client, String collection)
       throws SolrServerException, IOException {
     long startNanos = System.nanoTime();
-    T res = createResponse(client);
     var namedList = client.request(this, collection);
-    res.setResponse(namedList);
     long endNanos = System.nanoTime();
-    res.setElapsedTime(TimeUnit.NANOSECONDS.toMillis(endNanos - startNanos));
-    return res;
+    final T typedResponse = createResponse(namedList);
+    // SolrResponse is pre-V2 API
+    if (typedResponse instanceof SolrResponse res) {
+      res.setResponse(namedList); // TODO insist createResponse does this ?
+      res.setElapsedTime(TimeUnit.NANOSECONDS.toMillis(endNanos - startNanos));
+    }
+    return typedResponse;
   }
 
   /**
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java
index 81c555d8d1a..aaf7433c39b 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/AbstractUpdateRequest.java
@@ -17,10 +17,10 @@
 package org.apache.solr.client.solrj.request;
 
 import java.util.Objects;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.response.UpdateResponse;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.UpdateParams;
+import org.apache.solr.common.util.NamedList;
 
 public abstract class AbstractUpdateRequest extends 
CollectionRequiringSolrRequest<UpdateResponse>
     implements IsUpdateRequest {
@@ -121,7 +121,7 @@ public abstract class AbstractUpdateRequest extends 
CollectionRequiringSolrReque
   }
 
   @Override
-  protected UpdateResponse createResponse(SolrClient client) {
+  protected UpdateResponse createResponse(NamedList<Object> namedList) {
     return new UpdateResponse();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
index 54a03cd7031..8a6f30bc411 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionAdminRequest.java
@@ -155,7 +155,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
 
@@ -316,7 +316,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -1848,7 +1848,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected RequestStatusResponse createResponse(SolrClient client) {
+    protected RequestStatusResponse createResponse(NamedList<Object> 
namedList) {
       return new RequestStatusResponse();
     }
 
@@ -1922,7 +1922,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -2748,7 +2748,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -2788,7 +2788,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -2907,7 +2907,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected RequestApiDistributedProcessingResponse 
createResponse(SolrClient client) {
+    protected RequestApiDistributedProcessingResponse 
createResponse(NamedList<Object> namedList) {
       return new RequestApiDistributedProcessingResponse();
     }
   }
@@ -2978,7 +2978,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -2991,7 +2991,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -3011,7 +3011,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -3154,7 +3154,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
@@ -3220,7 +3220,7 @@ public abstract class CollectionAdminRequest<T extends 
CollectionAdminResponse>
     }
 
     @Override
-    protected CollectionAdminResponse createResponse(SolrClient client) {
+    protected CollectionAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new CollectionAdminResponse();
     }
   }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionRequiringSolrRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionRequiringSolrRequest.java
index d5ebff84821..fb31982f61a 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionRequiringSolrRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CollectionRequiringSolrRequest.java
@@ -17,11 +17,9 @@
 package org.apache.solr.client.solrj.request;
 
 import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrResponse;
 
 /** Parent {@link SolrRequest} class that requires a target collection or 
core. */
-public abstract class CollectionRequiringSolrRequest<T extends SolrResponse>
-    extends SolrRequest<T> {
+public abstract class CollectionRequiringSolrRequest<T> extends SolrRequest<T> 
{
   public CollectionRequiringSolrRequest(METHOD m, String path) {
     super(m, path);
   }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java
index 6743cc09711..37c6b310055 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/ConfigSetAdminRequest.java
@@ -25,7 +25,6 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.Map;
 import java.util.Properties;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.response.ConfigSetAdminResponse;
 import org.apache.solr.common.params.ConfigSetParams;
@@ -34,6 +33,7 @@ import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.ContentStream;
 import org.apache.solr.common.util.ContentStreamBase.FileStream;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * This class is experimental and subject to change.
@@ -72,7 +72,7 @@ public abstract class ConfigSetAdminRequest<
   }
 
   @Override
-  protected abstract R createResponse(SolrClient client);
+  protected abstract R createResponse(NamedList<Object> namedList);
 
   protected abstract static class ConfigSetSpecificAdminRequest<
           T extends ConfigSetAdminRequest<T, ConfigSetAdminResponse>>
@@ -99,7 +99,7 @@ public abstract class ConfigSetAdminRequest<
     }
 
     @Override
-    protected ConfigSetAdminResponse createResponse(SolrClient client) {
+    protected ConfigSetAdminResponse createResponse(NamedList<Object> 
namedList) {
       return new ConfigSetAdminResponse();
     }
   }
@@ -327,7 +327,7 @@ public abstract class ConfigSetAdminRequest<
     }
 
     @Override
-    protected ConfigSetAdminResponse.List createResponse(SolrClient client) {
+    protected ConfigSetAdminResponse.List createResponse(NamedList<Object> 
namedList) {
       return new ConfigSetAdminResponse.List();
     }
   }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
index db078ca2ebc..18ca8887dad 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/CoreAdminRequest.java
@@ -31,6 +31,7 @@ import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.common.params.CoreAdminParams.CoreAdminAction;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * This class is experimental and subject to change.
@@ -641,7 +642,7 @@ public class CoreAdminRequest extends 
SolrRequest<CoreAdminResponse> {
   // 
---------------------------------------------------------------------------------------
 
   @Override
-  protected CoreAdminResponse createResponse(SolrClient client) {
+  protected CoreAdminResponse createResponse(NamedList<Object> namedList) {
     return new CoreAdminResponse();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/DelegationTokenRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/DelegationTokenRequest.java
index 6f19620142a..6fc9d47e98d 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/DelegationTokenRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/DelegationTokenRequest.java
@@ -19,13 +19,13 @@ package org.apache.solr.client.solrj.request;
 
 import java.util.Arrays;
 import java.util.TreeSet;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.impl.JsonMapResponseParser;
 import org.apache.solr.client.solrj.impl.NoOpResponseParser;
 import org.apache.solr.client.solrj.response.DelegationTokenResponse;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * Class for making Solr delegation token requests.
@@ -49,7 +49,7 @@ public abstract class DelegationTokenRequest<
   protected abstract Q getThis();
 
   @Override
-  protected abstract R createResponse(SolrClient client);
+  protected abstract R createResponse(NamedList<Object> namedList);
 
   public static class Get extends DelegationTokenRequest<Get, 
DelegationTokenResponse.Get> {
     protected String renewer;
@@ -79,7 +79,7 @@ public abstract class DelegationTokenRequest<
     }
 
     @Override
-    public DelegationTokenResponse.Get createResponse(SolrClient client) {
+    public DelegationTokenResponse.Get createResponse(NamedList<Object> 
namedList) {
       return new DelegationTokenResponse.Get();
     }
 
@@ -113,7 +113,7 @@ public abstract class DelegationTokenRequest<
     }
 
     @Override
-    public DelegationTokenResponse.Renew createResponse(SolrClient client) {
+    public DelegationTokenResponse.Renew createResponse(NamedList<Object> 
namedList) {
       return new DelegationTokenResponse.Renew();
     }
 
@@ -148,7 +148,7 @@ public abstract class DelegationTokenRequest<
     }
 
     @Override
-    public DelegationTokenResponse.Cancel createResponse(SolrClient client) {
+    public DelegationTokenResponse.Cancel createResponse(NamedList<Object> 
namedList) {
       return new DelegationTokenResponse.Cancel();
     }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java
index cca187dd4d6..88ce4b17f14 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/DirectXmlRequest.java
@@ -16,12 +16,12 @@
  */
 package org.apache.solr.client.solrj.request;
 
-import org.apache.solr.client.solrj.SolrClient;
 import 
org.apache.solr.client.solrj.request.RequestWriter.StringPayloadContentWriter;
 import org.apache.solr.client.solrj.response.UpdateResponse;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * Send arbitrary XML to a request handler
@@ -47,7 +47,7 @@ public class DirectXmlRequest extends 
CollectionRequiringSolrRequest<UpdateRespo
   }
 
   @Override
-  protected UpdateResponse createResponse(SolrClient client) {
+  protected UpdateResponse createResponse(NamedList<Object> namedList) {
     return new UpdateResponse();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java
index 3d81d04cbda..ce93f0f6f29 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/DocumentAnalysisRequest.java
@@ -25,13 +25,13 @@ import java.io.Writer;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.response.DocumentAnalysisResponse;
 import org.apache.solr.client.solrj.util.ClientUtils;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.params.AnalysisParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * A request for the org.apache.solr.handler.DocumentAnalysisRequestHandler.
@@ -81,7 +81,7 @@ public class DocumentAnalysisRequest
   }
 
   @Override
-  protected DocumentAnalysisResponse createResponse(SolrClient client) {
+  protected DocumentAnalysisResponse createResponse(NamedList<Object> 
namedList) {
     return new DocumentAnalysisResponse();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java
index b513b917428..00e49e64130 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/FieldAnalysisRequest.java
@@ -18,11 +18,11 @@ package org.apache.solr.client.solrj.request;
 
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.response.FieldAnalysisResponse;
 import org.apache.solr.common.params.AnalysisParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * A request for the org.apache.solr.handler.FieldAnalysisRequestHandler.
@@ -52,7 +52,7 @@ public class FieldAnalysisRequest extends 
CollectionRequiringSolrRequest<FieldAn
   }
 
   @Override
-  protected FieldAnalysisResponse createResponse(SolrClient client) {
+  protected FieldAnalysisResponse createResponse(NamedList<Object> namedList) {
     if (fieldTypes == null && fieldNames == null) {
       throw new IllegalStateException("At least one field type or field name 
need to be specified");
     }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/GenericSolrRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/GenericSolrRequest.java
index 745e7b56845..599a6a3d897 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/GenericSolrRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/GenericSolrRequest.java
@@ -19,12 +19,12 @@ package org.apache.solr.client.solrj.request;
 import java.io.IOException;
 import java.io.OutputStream;
 import java.util.Objects;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.request.RequestWriter.ContentWriter;
 import org.apache.solr.client.solrj.response.SimpleSolrResponse;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 public class GenericSolrRequest extends SolrRequest<SimpleSolrResponse> {
   private final SolrParams params; // not null
@@ -104,7 +104,7 @@ public class GenericSolrRequest extends 
SolrRequest<SimpleSolrResponse> {
   }
 
   @Override
-  protected SimpleSolrResponse createResponse(SolrClient client) {
+  protected SimpleSolrResponse createResponse(NamedList<Object> namedList) {
     return response;
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/HealthCheckRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/HealthCheckRequest.java
index 3f1cbb3f405..44854975991 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/HealthCheckRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/HealthCheckRequest.java
@@ -20,13 +20,11 @@ package org.apache.solr.client.solrj.request;
 import static 
org.apache.solr.common.params.CommonParams.HEALTH_CHECK_HANDLER_PATH;
 
 import java.util.OptionalInt;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.impl.BaseHttpSolrClient;
-import org.apache.solr.client.solrj.impl.HttpSolrClientBase;
 import org.apache.solr.client.solrj.response.HealthCheckResponse;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 public class HealthCheckRequest extends SolrRequest<HealthCheckResponse> {
   public static final String PARAM_MAX_GENERATION_LAG = "maxGenerationLag";
@@ -55,10 +53,9 @@ public class HealthCheckRequest extends 
SolrRequest<HealthCheckResponse> {
   }
 
   @Override
-  protected HealthCheckResponse createResponse(SolrClient client) {
+  protected HealthCheckResponse createResponse(NamedList<Object> namedList) {
     // TODO: Accept requests w/ CloudSolrClient while ensuring that the 
request doesn't get routed
     // to an unintended recipient.
-    assert client instanceof BaseHttpSolrClient || client instanceof 
HttpSolrClientBase;
     return new HealthCheckResponse();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java
index a3225c4fc87..e090d953670 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/LukeRequest.java
@@ -18,11 +18,11 @@ package org.apache.solr.client.solrj.request;
 
 import java.util.ArrayList;
 import java.util.List;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.response.LukeResponse;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * @since solr 1.3
@@ -102,7 +102,7 @@ public class LukeRequest extends 
CollectionRequiringSolrRequest<LukeResponse> {
   // 
---------------------------------------------------------------------------------
 
   @Override
-  protected LukeResponse createResponse(SolrClient client) {
+  protected LukeResponse createResponse(NamedList<Object> namedList) {
     return new LukeResponse();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
index 2c26b2ac81d..047d24fe248 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/QueryRequest.java
@@ -17,10 +17,10 @@
 package org.apache.solr.client.solrj.request;
 
 import java.util.Objects;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.response.QueryResponse;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * @since solr 1.3
@@ -61,7 +61,7 @@ public class QueryRequest extends 
CollectionRequiringSolrRequest<QueryResponse>
   // 
---------------------------------------------------------------------------------
 
   @Override
-  protected QueryResponse createResponse(SolrClient client) {
+  protected QueryResponse createResponse(NamedList<Object> namedList) {
     return new QueryResponse();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java
index 1fa5634d637..609c286969c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/SolrPing.java
@@ -16,10 +16,10 @@
  */
 package org.apache.solr.client.solrj.request;
 
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.response.SolrPingResponse;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * Verify that there is a working Solr core at the URL of a {@link
@@ -43,7 +43,7 @@ public class SolrPing extends 
CollectionRequiringSolrRequest<SolrPingResponse> {
   }
 
   @Override
-  protected SolrPingResponse createResponse(SolrClient client) {
+  protected SolrPingResponse createResponse(NamedList<Object> namedList) {
     return new SolrPingResponse();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/V2Request.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/V2Request.java
index a64a927e38e..f73301c7f35 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/V2Request.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/V2Request.java
@@ -28,12 +28,12 @@ import java.util.concurrent.atomic.AtomicLong;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 import org.apache.solr.client.solrj.ResponseParser;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.response.V2Response;
 import org.apache.solr.common.MapWriter;
 import org.apache.solr.common.params.SolrParams;
 import org.apache.solr.common.util.JavaBinCodec;
+import org.apache.solr.common.util.NamedList;
 import org.apache.solr.common.util.Utils;
 
 public class V2Request extends SolrRequest<V2Response> implements MapWriter {
@@ -116,7 +116,7 @@ public class V2Request extends SolrRequest<V2Response> 
implements MapWriter {
   }
 
   @Override
-  protected V2Response createResponse(SolrClient client) {
+  protected V2Response createResponse(NamedList<Object> namedList) {
     return new V2Response();
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/schema/SchemaRequest.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/schema/SchemaRequest.java
index 2005f471d4f..07549487418 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/request/schema/SchemaRequest.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/request/schema/SchemaRequest.java
@@ -131,7 +131,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
   }
 
   @Override
-  protected SchemaResponse createResponse(SolrClient client) {
+  protected SchemaResponse createResponse(NamedList<Object> namedList) {
     return new SchemaResponse();
   }
 
@@ -146,7 +146,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.SchemaNameResponse createResponse(SolrClient 
client) {
+    protected SchemaResponse.SchemaNameResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.SchemaNameResponse();
     }
   }
@@ -166,7 +166,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.SchemaVersionResponse createResponse(SolrClient 
client) {
+    protected SchemaResponse.SchemaVersionResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.SchemaVersionResponse();
     }
   }
@@ -182,7 +182,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.FieldsResponse createResponse(SolrClient client) {
+    protected SchemaResponse.FieldsResponse createResponse(NamedList<Object> 
namedList) {
       return new SchemaResponse.FieldsResponse();
     }
   }
@@ -206,7 +206,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.FieldResponse createResponse(SolrClient client) {
+    protected SchemaResponse.FieldResponse createResponse(NamedList<Object> 
namedList) {
       return new SchemaResponse.FieldResponse();
     }
   }
@@ -224,7 +224,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.DynamicFieldsResponse createResponse(SolrClient 
client) {
+    protected SchemaResponse.DynamicFieldsResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.DynamicFieldsResponse();
     }
   }
@@ -250,7 +250,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.DynamicFieldResponse createResponse(SolrClient 
client) {
+    protected SchemaResponse.DynamicFieldResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.DynamicFieldResponse();
     }
   }
@@ -266,7 +266,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.FieldTypesResponse createResponse(SolrClient 
client) {
+    protected SchemaResponse.FieldTypesResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.FieldTypesResponse();
     }
   }
@@ -290,7 +290,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.FieldTypeResponse createResponse(SolrClient 
client) {
+    protected SchemaResponse.FieldTypeResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.FieldTypeResponse();
     }
   }
@@ -308,7 +308,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.CopyFieldsResponse createResponse(SolrClient 
client) {
+    protected SchemaResponse.CopyFieldsResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.CopyFieldsResponse();
     }
   }
@@ -327,7 +327,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.UniqueKeyResponse createResponse(SolrClient 
client) {
+    protected SchemaResponse.UniqueKeyResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.UniqueKeyResponse();
     }
   }
@@ -344,7 +344,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.GlobalSimilarityResponse 
createResponse(SolrClient client) {
+    protected SchemaResponse.GlobalSimilarityResponse 
createResponse(NamedList<Object> namedList) {
       return new SchemaResponse.GlobalSimilarityResponse();
     }
   }
@@ -728,7 +728,7 @@ public class SchemaRequest extends 
AbstractSchemaRequest<SchemaResponse> {
     }
 
     @Override
-    protected SchemaResponse.UpdateResponse createResponse(SolrClient client) {
+    protected SchemaResponse.UpdateResponse createResponse(NamedList<Object> 
namedList) {
       return new SchemaResponse.UpdateResponse();
     }
   }
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java
index c48d5171746..9cb62fe2578 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/util/ClientUtils.java
@@ -29,7 +29,6 @@ import java.util.Date;
 import java.util.Map;
 import java.util.Map.Entry;
 import org.apache.solr.client.solrj.SolrRequest;
-import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.SolrInputField;
 import org.apache.solr.common.cloud.Slice;
@@ -286,7 +285,7 @@ public class ClientUtils {
    * @param request the {@link SolrRequest} being executed
    */
   public static boolean shouldApplyDefaultCollection(
-      String providedCollection, SolrRequest<? extends SolrResponse> request) {
+      String providedCollection, SolrRequest<?> request) {
     return providedCollection == null && request.requiresCollection();
   }
 }
diff --git a/solr/solrj/src/resources/java-template/api.mustache 
b/solr/solrj/src/resources/java-template/api.mustache
index 03ee53ebcde..64cfef3999b 100644
--- a/solr/solrj/src/resources/java-template/api.mustache
+++ b/solr/solrj/src/resources/java-template/api.mustache
@@ -40,6 +40,7 @@ import 
org.apache.solr.client.solrj.request.RequestWriter.ContentWriter;
 import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.InputStreamResponse;
 import org.apache.solr.client.solrj.ResponseParser;
+import org.apache.solr.common.util.NamedList;
 
 {{! Covers all top-level request/response model classes, but not necessarily 
any types nested in those classes }}
 {{#imports}}
@@ -260,7 +261,8 @@ public class {{classname}} {
             }
 
             @Override
-            protected {{operationIdCamelCase}}Response 
createResponse(SolrClient client) {
+          protected {{operationIdCamelCase}}Response createResponse(NamedList
+        <Object> namedList) {
               return new {{operationIdCamelCase}}Response();
             }
 
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java
index bb685b6756c..39b22fed446 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/request/TestConfigSetAdminRequest.java
@@ -18,9 +18,9 @@ package org.apache.solr.client.solrj.request;
 
 import java.nio.file.Path;
 import org.apache.solr.SolrTestCaseJ4;
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.response.ConfigSetAdminResponse;
 import org.apache.solr.common.params.ConfigSetParams;
+import org.apache.solr.common.util.NamedList;
 import org.junit.Test;
 
 /** Basic error checking of ConfigSetAdminRequests. */
@@ -95,7 +95,7 @@ public class TestConfigSetAdminRequest extends SolrTestCaseJ4 
{
     }
 
     @Override
-    public ConfigSetAdminResponse createResponse(SolrClient client) {
+    public ConfigSetAdminResponse createResponse(NamedList<Object> namedList) {
       return new ConfigSetAdminResponse();
     }
   }
diff --git 
a/solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java 
b/solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java
index 2ddf05aeb44..5f1d4912509 100644
--- a/solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java
+++ b/solr/test-framework/src/java/org/apache/solr/cloud/ConfigRequest.java
@@ -16,7 +16,6 @@
  */
 package org.apache.solr.cloud;
 
-import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrResponse;
 import org.apache.solr.client.solrj.request.CollectionRequiringSolrRequest;
@@ -25,13 +24,13 @@ import 
org.apache.solr.client.solrj.response.SolrResponseBase;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.params.SolrParams;
+import org.apache.solr.common.util.NamedList;
 
 /**
  * A class for making a request to the config handler. Tests can use this e.g. 
to add custom
  * components, handlers, parsers, etc. to an otherwise generic configset.
  */
-@SuppressWarnings({"rawtypes"})
-public class ConfigRequest extends CollectionRequiringSolrRequest {
+public class ConfigRequest extends 
CollectionRequiringSolrRequest<SolrResponse> {
 
   protected final String message;
 
@@ -53,7 +52,7 @@ public class ConfigRequest extends 
CollectionRequiringSolrRequest {
   }
 
   @Override
-  public SolrResponse createResponse(SolrClient client) {
+  public SolrResponse createResponse(NamedList<Object> client) {
     return new SolrResponseBase();
   }
 

Reply via email to