This is an automated email from the ASF dual-hosted git repository.

epugh 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 4a584a6042b SOLR-17935: Migrate away from NoOpResponseParser (#3710)
4a584a6042b is described below

commit 4a584a6042b263f28f00dc0157db30feae54b5e1
Author: Eric Pugh <[email protected]>
AuthorDate: Mon Oct 6 13:22:02 2025 -0400

    SOLR-17935: Migrate away from NoOpResponseParser (#3710)
    
    Primarily move to using InputStreamResponseParser, or an explicit 
JsonMapResponseParser or XmlResponseParser in a few cases.
    The bulk of the migration was to update tests.
    Since converting from an inputstream to a string was a common use case, we 
added a helper method on InputStreamResponseParser.
    
    ---------
    
    Co-authored-by: David Smiley <[email protected]>
---
 solr/CHANGES.txt                                   |  2 +
 .../solr/bench/search/QueryResponseWriters.java    |  4 +-
 .../src/java/org/apache/solr/cli/DeleteTool.java   |  3 +-
 .../apache/solr/cloud/TestRandomFlRTGCloud.java    | 10 +--
 .../cloud/api/collections/TestCollectionAPI.java   |  8 +--
 .../apache/solr/handler/V2ApiIntegrationTest.java  | 11 ++--
 .../handler/admin/ShowFileRequestHandlerTest.java  | 31 +++++----
 .../response/TestPrometheusResponseWriter.java     | 13 ++--
 .../apache/solr/response/TestRawTransformer.java   | 40 ++++++++----
 .../prometheus/exporter/SolrClientFactory.java     |  6 +-
 .../solr/prometheus/scraper/SolrScraper.java       |  4 +-
 .../prometheus/scraper/SolrStandaloneScraper.java  |  5 +-
 .../org/apache/solr/prometheus/utils/Helpers.java  |  7 +-
 .../solr/client/solrj/impl/HttpSolrClientBase.java |  4 +-
 .../solrj/impl/InputStreamResponseParser.java      | 30 ++++++++-
 .../solr/client/solrj/impl/NoOpResponseParser.java | 76 ----------------------
 .../solrj/request/DelegationTokenRequest.java      |  4 +-
 .../apache/solr/client/solrj/SolrExampleTests.java | 22 +++++--
 .../solrj/impl/HttpSolrClientBuilderTest.java      |  2 +-
 .../solrj/impl/LBHttpSolrClientBuilderTest.java    |  2 +-
 ...est.java => InputStreamResponseParserTest.java} | 35 ++--------
 .../src/java/org/apache/solr/SolrTestCaseHS.java   |  6 +-
 22 files changed, 145 insertions(+), 180 deletions(-)

diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 8a04af0532d..a9031067e4e 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -185,6 +185,8 @@ Deprecation Removals
 
 * SOLR-17925: Remove obsolete QueryCommand.timeAllowed replaced by 
QueryLimits. (Andrzej Bialecki)
 
+* SOLR-17935: Remove deprecated NoOpResponseParser. (Eric Pugh, David Smiley)
+
 Dependency Upgrades
 ---------------------
 
diff --git 
a/solr/benchmark/src/java/org/apache/solr/bench/search/QueryResponseWriters.java
 
b/solr/benchmark/src/java/org/apache/solr/bench/search/QueryResponseWriters.java
index 111a1d6ac50..2a7088f88d4 100644
--- 
a/solr/benchmark/src/java/org/apache/solr/bench/search/QueryResponseWriters.java
+++ 
b/solr/benchmark/src/java/org/apache/solr/bench/search/QueryResponseWriters.java
@@ -26,7 +26,7 @@ import org.apache.solr.bench.Docs;
 import org.apache.solr.bench.MiniClusterState;
 import org.apache.solr.bench.MiniClusterState.MiniClusterBenchState;
 import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.common.params.CommonParams;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -86,7 +86,7 @@ public class QueryResponseWriters {
       params.set(CommonParams.WT, wt);
       params.set(CommonParams.ROWS, docs);
       q = new QueryRequest(params);
-      q.setResponseParser(new NoOpResponseParser(wt));
+      q.setResponseParser(new InputStreamResponseParser(wt));
       String base = miniClusterState.nodes.get(0);
     }
   }
diff --git a/solr/core/src/java/org/apache/solr/cli/DeleteTool.java 
b/solr/core/src/java/org/apache/solr/cli/DeleteTool.java
index c63ba852aed..ce330576a71 100644
--- a/solr/core/src/java/org/apache/solr/cli/DeleteTool.java
+++ b/solr/core/src/java/org/apache/solr/cli/DeleteTool.java
@@ -30,7 +30,6 @@ import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.Http2SolrClient;
 import org.apache.solr.client.solrj.impl.JsonMapResponseParser;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.CoreAdminRequest;
 import org.apache.solr.common.cloud.ZkStateReader;
@@ -226,7 +225,7 @@ public class DeleteTool extends ToolBase {
       unloadRequest.setDeleteDataDir(true);
       unloadRequest.setDeleteInstanceDir(true);
       unloadRequest.setCoreName(coreName);
-      unloadRequest.setResponseParser(new NoOpResponseParser("json"));
+      unloadRequest.setResponseParser(new JsonMapResponseParser());
       response = solrClient.request(unloadRequest);
     } catch (SolrServerException sse) {
       throw new Exception("Failed to delete core '" + coreName + "' due to: " 
+ sse.getMessage());
diff --git a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java 
b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
index 9def712aeab..4b9d0bde0d4 100644
--- a/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
+++ b/solr/core/src/test/org/apache/solr/cloud/TestRandomFlRTGCloud.java
@@ -42,7 +42,7 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.impl.XMLResponseParser;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.QueryRequest;
@@ -423,8 +423,10 @@ public class TestRandomFlRTGCloud extends 
SolrCloudTestCase {
     }
   }
 
-  private static final ResponseParser RAW_XML_RESPONSE_PARSER = new 
NoOpResponseParser("xml");
-  private static final ResponseParser RAW_JSON_RESPONSE_PARSER = new 
NoOpResponseParser("json");
+  private static final ResponseParser RAW_XML_RESPONSE_PARSER =
+      new InputStreamResponseParser("xml");
+  private static final ResponseParser RAW_JSON_RESPONSE_PARSER =
+      new InputStreamResponseParser("json");
 
   /** Helper to convert from wt string parameter to actual SolrClient. */
   private static SolrClient getSolrClient(final String jettyBaseUrl, final 
String wt) {
@@ -526,7 +528,7 @@ public class TestRandomFlRTGCloud extends SolrCloudTestCase 
{
       final NamedList<Object> nlRsp = client.request(new QueryRequest(params));
       assertNotNull(params.toString(), nlRsp);
       rsp = nlRsp;
-      final String textResult = (String) nlRsp.get("response");
+      final String textResult = 
InputStreamResponseParser.consumeResponseToString(nlRsp);
       switch (wt) {
         case "json":
           docs = getDocsFromJsonResponse(askForList, textResult);
diff --git 
a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java
 
b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java
index adba8db8ab3..7898520960e 100644
--- 
a/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java
+++ 
b/solr/core/src/test/org/apache/solr/cloud/api/collections/TestCollectionAPI.java
@@ -31,7 +31,7 @@ import org.apache.solr.client.solrj.SolrRequest.METHOD;
 import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.GenericSolrRequest;
 import org.apache.solr.client.solrj.response.CollectionAdminResponse;
@@ -665,9 +665,9 @@ public class TestCollectionAPI extends 
ReplicaPropertiesBase {
       params.set("wt", "json");
       var request =
           new GenericSolrRequest(METHOD.GET, "/admin/collections", 
SolrRequestType.ADMIN, params);
-      request.setResponseParser(new NoOpResponseParser("json"));
-      NamedList<Object> rsp = client.request(request);
-      String actualResponse = (String) rsp.get("response");
+      request.setResponseParser(new InputStreamResponseParser("json"));
+      NamedList<Object> res = client.request(request);
+      String actualResponse = 
InputStreamResponseParser.consumeResponseToString(res);
 
       Map<String, Object> result = mapper.readValue(actualResponse, Map.class);
 
diff --git 
a/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java 
b/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java
index 438251f8c3d..b8819db6652 100644
--- a/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java
+++ b/solr/core/src/test/org/apache/solr/handler/V2ApiIntegrationTest.java
@@ -32,9 +32,9 @@ import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.CloudLegacySolrClient;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.impl.JavaBinResponseParser;
 import org.apache.solr.client.solrj.impl.JsonMapResponseParser;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
 import org.apache.solr.client.solrj.impl.XMLResponseParser;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.V2Request;
@@ -117,10 +117,9 @@ public class V2ApiIntegrationTest extends 
SolrCloudTestCase {
   public void testWTParam() throws Exception {
     V2Request request = new V2Request.Builder("/c/" + COLL_NAME + 
"/get/_introspect").build();
     // TODO: If possible do this in a better way
-    request.setResponseParser(new NoOpResponseParser("bleh"));
-
-    Map<?, ?> resp = resAsMap(cluster.getSolrClient(), request);
-    String respString = resp.toString();
+    request.setResponseParser(new InputStreamResponseParser("bleh"));
+    NamedList<Object> res = cluster.getSolrClient().request(request);
+    String respString = InputStreamResponseParser.consumeResponseToString(res);
 
     assertFalse(respString.contains("<body><h2>HTTP ERROR 500</h2>"));
     assertFalse(respString.contains("500"));
@@ -133,7 +132,7 @@ public class V2ApiIntegrationTest extends SolrCloudTestCase 
{
 
     // no response parser
     request.setResponseParser(null);
-    resp = resAsMap(cluster.getSolrClient(), request);
+    Map<?, ?> resp = resAsMap(cluster.getSolrClient(), request);
     respString = resp.toString();
 
     assertFalse(respString.contains("<body><h2>HTTP ERROR 500</h2>"));
diff --git 
a/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java
 
b/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java
index 8d81487abd0..2edb04cb47b 100644
--- 
a/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java
+++ 
b/solr/core/src/test/org/apache/solr/handler/admin/ShowFileRequestHandlerTest.java
@@ -26,7 +26,7 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest;
 import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
 import org.apache.solr.client.solrj.SolrServerException;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.request.GenericSolrRequest;
 import org.apache.solr.common.SolrException;
 import org.apache.solr.common.params.ModifiableSolrParams;
@@ -145,34 +145,36 @@ public class ShowFileRequestHandlerTest extends 
SolrJettyTestBase {
     assertEquals("application/xml", content.getContentType());
   }
 
-  public void testIllegalContentType() {
+  public void testIllegalContentType() throws SolrServerException, IOException 
{
     SolrClient client = getSolrClient();
     var request =
         createShowFileRequest(params("file", "managed-schema", "contentType", 
"not/known"));
-    request.setResponseParser(new NoOpResponseParser("xml"));
-    expectThrows(SolrException.class, () -> client.request(request));
+    request.setResponseParser(new InputStreamResponseParser("xml"));
+    NamedList<Object> response = client.request(request);
+    assertEquals(response.get("responseStatus"), 404);
   }
 
-  public void testAbsoluteFilename() {
+  public void testAbsoluteFilename() throws SolrServerException, IOException {
     SolrClient client = getSolrClient();
     final var request =
         createShowFileRequest(
             params("file", "/etc/passwd", "contentType", "text/plain; 
charset=utf-8"));
-    request.setResponseParser(new NoOpResponseParser("xml"));
-    expectThrows(SolrException.class, () -> client.request(request));
+    request.setResponseParser(new InputStreamResponseParser("xml"));
+    NamedList<Object> response = client.request(request);
+    assertEquals(response.get("responseStatus"), 404);
   }
 
-  public void testEscapeConfDir() {
+  public void testEscapeConfDir() throws SolrServerException, IOException {
     SolrClient client = getSolrClient();
     final var request =
         createShowFileRequest(
             params("file", "../../solr.xml", "contentType", "application/xml; 
charset=utf-8"));
-    request.setResponseParser(new NoOpResponseParser("xml"));
-    var ex = expectThrows(SolrException.class, () -> client.request(request));
-    assertTrue(ex instanceof SolrClient.RemoteSolrException);
+    request.setResponseParser(new InputStreamResponseParser("xml"));
+    NamedList<Object> response = client.request(request);
+    assertEquals(response.get("responseStatus"), 400);
   }
 
-  public void testPathTraversalFilename() {
+  public void testPathTraversalFilename() throws SolrServerException, 
IOException {
     SolrClient client = getSolrClient();
     final var request =
         createShowFileRequest(
@@ -181,8 +183,9 @@ public class ShowFileRequestHandlerTest extends 
SolrJettyTestBase {
                 "../../../../../../etc/passwd",
                 "contentType",
                 "text/plain; charset=utf-8"));
-    request.setResponseParser(new NoOpResponseParser("xml"));
-    expectThrows(SolrException.class, () -> client.request(request));
+    request.setResponseParser(new InputStreamResponseParser("xml"));
+    NamedList<Object> response = client.request(request);
+    assertEquals(response.get("responseStatus"), 400);
   }
 
   public void testGetSafeContentType() {
diff --git 
a/solr/core/src/test/org/apache/solr/response/TestPrometheusResponseWriter.java 
b/solr/core/src/test/org/apache/solr/response/TestPrometheusResponseWriter.java
index f52b76d5706..89bf0b722aa 100644
--- 
a/solr/core/src/test/org/apache/solr/response/TestPrometheusResponseWriter.java
+++ 
b/solr/core/src/test/org/apache/solr/response/TestPrometheusResponseWriter.java
@@ -32,7 +32,7 @@ import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrRequest.METHOD;
 import org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.request.GenericSolrRequest;
 import org.apache.solr.common.params.ModifiableSolrParams;
 import org.apache.solr.common.util.NamedList;
@@ -83,12 +83,11 @@ public class TestPrometheusResponseWriter extends 
SolrTestCaseJ4 {
     ModifiableSolrParams params = new ModifiableSolrParams();
     params.set("wt", "prometheus");
     var req = new GenericSolrRequest(METHOD.GET, "/admin/metrics", 
SolrRequestType.ADMIN, params);
-    req.setResponseParser(new NoOpResponseParser("prometheus"));
+    req.setResponseParser(new InputStreamResponseParser("prometheus"));
 
     try (SolrClient adminClient = 
getHttpSolrClient(solrClientTestRule.getBaseUrl())) {
       NamedList<Object> res = adminClient.request(req);
-      assertNotNull("null response from server", res);
-      String output = (String) res.get("response");
+      String output = InputStreamResponseParser.consumeResponseToString(res);
 
       Set<String> seenTypeInfo = new HashSet<>();
 
@@ -138,12 +137,12 @@ public class TestPrometheusResponseWriter extends 
SolrTestCaseJ4 {
     ModifiableSolrParams params = new ModifiableSolrParams();
     params.set("wt", "prometheus");
     var req = new GenericSolrRequest(METHOD.GET, "/admin/metrics", 
SolrRequestType.ADMIN, params);
-    req.setResponseParser(new NoOpResponseParser("prometheus"));
+    req.setResponseParser(new InputStreamResponseParser("prometheus"));
 
     try (SolrClient adminClient = 
getHttpSolrClient(solrClientTestRule.getBaseUrl())) {
       NamedList<Object> res = adminClient.request(req);
-      assertNotNull("null response from server", res);
-      String output = (String) res.get("response");
+      String output = InputStreamResponseParser.consumeResponseToString(res);
+
       assertEquals(
           expectedCore,
           output
diff --git 
a/solr/core/src/test/org/apache/solr/response/TestRawTransformer.java 
b/solr/core/src/test/org/apache/solr/response/TestRawTransformer.java
index cf492623407..ed581e24ef3 100644
--- a/solr/core/src/test/org/apache/solr/response/TestRawTransformer.java
+++ b/solr/core/src/test/org/apache/solr/response/TestRawTransformer.java
@@ -27,13 +27,14 @@ import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.request.CollectionAdminRequest;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.cloud.MiniSolrCloudCluster;
 import org.apache.solr.cloud.SolrCloudTestCase;
 import org.apache.solr.common.SolrInputDocument;
 import org.apache.solr.common.params.ModifiableSolrParams;
+import org.apache.solr.common.util.NamedList;
 import org.apache.solr.embedded.JettyConfig;
 import org.apache.solr.embedded.JettySolrRunner;
 import org.junit.After;
@@ -184,8 +185,10 @@ public class TestRawTransformer extends SolrCloudTestCase {
                     new String[] {"author:[xml],content_type:[xml]"},
                     "wt",
                     new String[] {"xml"})));
-    req.setResponseParser(XML_NOOP_RESPONSE_PARSER);
-    String strResponse = (String) CLIENT.request(req, 
"collection1").get("response");
+    req.setResponseParser(XML_STREAM_RESPONSE_PARSER);
+    NamedList<Object> rsp = CLIENT.request(req, "collection1");
+    String strResponse = 
InputStreamResponseParser.consumeResponseToString(rsp);
+
     assertTrue(
         "response does not contain raw XML encoding: " + strResponse,
         strResponse.contains(
@@ -207,8 +210,10 @@ public class TestRawTransformer extends SolrCloudTestCase {
                     new String[] {"author,content_type"},
                     "wt",
                     new String[] {"xml"})));
-    req.setResponseParser(XML_NOOP_RESPONSE_PARSER);
-    strResponse = (String) CLIENT.request(req, "collection1").get("response");
+    req.setResponseParser(XML_STREAM_RESPONSE_PARSER);
+    rsp = CLIENT.request(req, "collection1");
+    strResponse = InputStreamResponseParser.consumeResponseToString(rsp);
+
     assertTrue(
         "response does not contain escaped XML encoding: " + strResponse,
         strResponse.contains("<str name=\"author\">&lt;root&gt;&lt;child1"));
@@ -228,8 +233,10 @@ public class TestRawTransformer extends SolrCloudTestCase {
                     new String[] {"author:[xml],content_type:[xml]"},
                     "wt",
                     new String[] {"json"})));
-    req.setResponseParser(JSON_NOOP_RESPONSE_PARSER);
-    strResponse = (String) CLIENT.request(req, "collection1").get("response");
+    req.setResponseParser(JSON_STREAM_RESPONSE_PARSER);
+    rsp = CLIENT.request(req, "collection1");
+    strResponse = InputStreamResponseParser.consumeResponseToString(rsp);
+
     assertTrue(
         "unexpected serialization of XML field value in JSON response: " + 
strResponse,
         strResponse.contains("\"author\":\"<root><child1>some</child1>"));
@@ -251,8 +258,10 @@ public class TestRawTransformer extends SolrCloudTestCase {
                     new String[] {"subject:[json],links:[json]"},
                     "wt",
                     new String[] {"json"})));
-    req.setResponseParser(JSON_NOOP_RESPONSE_PARSER);
-    String strResponse = (String) CLIENT.request(req, 
"collection1").get("response");
+    req.setResponseParser(JSON_STREAM_RESPONSE_PARSER);
+    NamedList<Object> rsp = CLIENT.request(req, "collection1");
+    String strResponse = 
InputStreamResponseParser.consumeResponseToString(rsp);
+
     assertTrue(
         "response does not contain right JSON encoding: " + strResponse,
         strResponse.contains("\"subject\":{poffL:[{offL:[{oGUID:\"7"));
@@ -272,8 +281,10 @@ public class TestRawTransformer extends SolrCloudTestCase {
                     new String[] {"id", "subject,links"},
                     "wt",
                     new String[] {"json"})));
-    req.setResponseParser(JSON_NOOP_RESPONSE_PARSER);
-    strResponse = (String) CLIENT.request(req, "collection1").get("response");
+    req.setResponseParser(JSON_STREAM_RESPONSE_PARSER);
+    rsp = CLIENT.request(req, "collection1");
+    strResponse = InputStreamResponseParser.consumeResponseToString(rsp);
+
     assertTrue(
         "response does not contain right JSON encoding: " + strResponse,
         strResponse.contains("subject\":\""));
@@ -282,7 +293,8 @@ public class TestRawTransformer extends SolrCloudTestCase {
         strResponse.contains("\"links\":[\""));
   }
 
-  private static final NoOpResponseParser XML_NOOP_RESPONSE_PARSER = new 
NoOpResponseParser("xml");
-  private static final NoOpResponseParser JSON_NOOP_RESPONSE_PARSER =
-      new NoOpResponseParser("json");
+  private static final InputStreamResponseParser XML_STREAM_RESPONSE_PARSER =
+      new InputStreamResponseParser("xml");
+  private static final InputStreamResponseParser JSON_STREAM_RESPONSE_PARSER =
+      new InputStreamResponseParser("json");
 }
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrClientFactory.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrClientFactory.java
index ede2495c452..76e722b6d9a 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrClientFactory.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/exporter/SolrClientFactory.java
@@ -25,7 +25,7 @@ import org.apache.solr.client.solrj.embedded.SSLConfig;
 import org.apache.solr.client.solrj.impl.CloudHttp2SolrClient;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.Http2SolrClient;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.zookeeper.client.ConnectStringParser;
 
 public class SolrClientFactory {
@@ -45,7 +45,7 @@ public class SolrClientFactory {
         new Http2SolrClient.Builder(solrHost)
             .withIdleTimeout(settings.getHttpReadTimeout(), 
TimeUnit.MILLISECONDS)
             .withConnectionTimeout(settings.getHttpConnectionTimeout(), 
TimeUnit.MILLISECONDS)
-            .withResponseParser(new NoOpResponseParser("json"));
+            .withResponseParser(new InputStreamResponseParser("json"));
     if (configuration.getBasicAuthUser() != null) {
       builder.withBasicAuthCredentials(
           configuration.getBasicAuthUser(), configuration.getBasicAuthPwd());
@@ -77,7 +77,7 @@ public class SolrClientFactory {
     CloudSolrClient client =
         new CloudHttp2SolrClient.Builder(zkHosts, 
Optional.ofNullable(parser.getChrootPath()))
             .withInternalClientBuilder(newHttp2SolrClientBuilder(null, 
settings, configuration))
-            .withResponseParser(new NoOpResponseParser("json"))
+            .withResponseParser(new InputStreamResponseParser("json"))
             .build();
 
     client.connect();
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
index e66b228c67d..474ed48ecc5 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrScraper.java
@@ -43,6 +43,7 @@ import 
org.apache.solr.client.solrj.SolrRequest.SolrRequestType;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.CloudSolrClient;
 import org.apache.solr.client.solrj.impl.Http2SolrClient;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.request.GenericSolrRequest;
 import org.apache.solr.common.util.NamedList;
 import org.apache.solr.prometheus.collector.MetricSamples;
@@ -166,7 +167,8 @@ public abstract class SolrScraper implements Closeable {
       return samples;
     }
 
-    JsonNode jsonNode = OBJECT_MAPPER.readTree((String) 
response.get("response"));
+    JsonNode jsonNode =
+        
OBJECT_MAPPER.readTree(InputStreamResponseParser.consumeResponseToString(response));
 
     for (JsonQuery jsonQuery : query.getJsonQueries()) {
       try {
diff --git 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrStandaloneScraper.java
 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrStandaloneScraper.java
index 734279653f8..338c1d81c20 100644
--- 
a/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrStandaloneScraper.java
+++ 
b/solr/prometheus-exporter/src/java/org/apache/solr/prometheus/scraper/SolrStandaloneScraper.java
@@ -26,6 +26,7 @@ import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.Http2SolrClient;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.request.CoreAdminRequest;
 import org.apache.solr.common.params.CoreAdminParams;
 import org.apache.solr.common.util.IOUtils;
@@ -93,7 +94,9 @@ public class SolrStandaloneScraper extends SolrScraper {
     }
 
     JsonNode statusJsonNode =
-        OBJECT_MAPPER.readTree((String) 
coreAdminResponse.get("response")).get("status");
+        OBJECT_MAPPER
+            
.readTree(InputStreamResponseParser.consumeResponseToString(coreAdminResponse))
+            .get("status");
 
     for (JsonNode jsonNode : statusJsonNode) {
       cores.add(jsonNode.get("name").textValue());
diff --git 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/utils/Helpers.java
 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/utils/Helpers.java
index ca14a499e2d..ac8af2bc4c5 100644
--- 
a/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/utils/Helpers.java
+++ 
b/solr/prometheus-exporter/src/test/org/apache/solr/prometheus/utils/Helpers.java
@@ -25,7 +25,9 @@ import java.util.stream.Stream;
 import org.apache.solr.SolrTestCaseJ4;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.impl.JsonMapResponseParser;
 import org.apache.solr.client.solrj.request.ContentStreamUpdateRequest;
+import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.common.util.Pair;
 import org.apache.solr.prometheus.PrometheusExporterTestBase;
 import org.apache.solr.prometheus.exporter.MetricsConfiguration;
@@ -44,6 +46,7 @@ public class Helpers {
           .forEach(
               xml -> {
                 ContentStreamUpdateRequest req = new 
ContentStreamUpdateRequest("/update");
+                req.setResponseParser(new JsonMapResponseParser());
                 try {
                   req.addFile(xml, "application/xml");
                   client.request(req, PrometheusExporterTestBase.COLLECTION);
@@ -51,7 +54,9 @@ public class Helpers {
                   throw new RuntimeException(e);
                 }
               });
-      client.commit(PrometheusExporterTestBase.COLLECTION);
+      var request = new UpdateRequest();
+      request.setResponseParser(new JsonMapResponseParser());
+      request.commit(client, PrometheusExporterTestBase.COLLECTION);
     }
   }
 
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
index e1056c20e01..987342e9374 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/HttpSolrClientBase.java
@@ -221,9 +221,7 @@ public abstract class HttpSolrClientBase extends SolrClient 
{
       }
 
       Object error = rsp == null ? null : rsp.get("error");
-      if (rsp != null && error == null && processor instanceof 
NoOpResponseParser) {
-        error = rsp.get("response");
-      }
+
       if (error != null
           && (String.valueOf(getObjectByPath(error, true, errPath))
               .endsWith("ExceptionWithErrObject"))) {
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java
 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java
index d70863fcca1..9da5117d046 100644
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java
+++ 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/InputStreamResponseParser.java
@@ -16,7 +16,12 @@
  */
 package org.apache.solr.client.solrj.impl;
 
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.StringWriter;
+import java.nio.charset.StandardCharsets;
 import java.util.Set;
 import org.apache.solr.client.solrj.ResponseParser;
 import org.apache.solr.common.util.NamedList;
@@ -38,14 +43,35 @@ public class InputStreamResponseParser extends 
ResponseParser {
     this.writerType = writerType;
   }
 
+  /**
+   * When using a {@link InputStreamResponseParser}, the raw output is 
available in the response
+   * under the key {@link #STREAM_KEY}.
+   */
+  public static String consumeResponseToString(NamedList<Object> response) 
throws IOException {
+    assert response != null;
+    String output;
+    // Would be nice to validate the STREAM_KEY value is present
+    try (InputStream responseStream = (InputStream) response.get(STREAM_KEY)) {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      responseStream.transferTo(baos);
+      output = baos.toString(StandardCharsets.UTF_8);
+    }
+    return output;
+  }
+
   @Override
   public String getWriterType() {
     return writerType;
   }
 
   @Override
-  public NamedList<Object> processResponse(InputStream body, String encoding) {
-    throw new UnsupportedOperationException();
+  public NamedList<Object> processResponse(InputStream body, String encoding) 
throws IOException {
+    StringWriter writer = new StringWriter();
+    new InputStreamReader(body, encoding == null ? "UTF-8" : 
encoding).transferTo(writer);
+    String output = writer.toString();
+    NamedList<Object> list = new NamedList<>();
+    list.add("response", output);
+    return list;
   }
 
   @Override
diff --git 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/NoOpResponseParser.java 
b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/NoOpResponseParser.java
deleted file mode 100644
index 26da43787d2..00000000000
--- 
a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/NoOpResponseParser.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-package org.apache.solr.client.solrj.impl;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.io.StringWriter;
-import java.util.Collection;
-import java.util.Set;
-import org.apache.solr.client.solrj.ResponseParser;
-import org.apache.solr.common.SolrException;
-import org.apache.solr.common.util.NamedList;
-
-/**
- * A special parser that puts the entire response into a string "response" 
field in the NamedList.
- *
- * @deprecated see {@link InputStreamResponseParser instead}; more efficient
- */
-@Deprecated
-public class NoOpResponseParser extends ResponseParser {
-
-  private final String writerType;
-
-  public NoOpResponseParser(String writerType) {
-    this.writerType = writerType;
-  }
-
-  @Override
-  public final String getWriterType() {
-    return writerType;
-  }
-
-  @Override
-  public Collection<String> getContentTypes() {
-    return Set.of();
-  }
-
-  public NamedList<Object> processResponse(Reader reader) {
-    try {
-      StringWriter writer = new StringWriter();
-      reader.transferTo(writer);
-      String output = writer.toString();
-      NamedList<Object> list = new NamedList<>();
-      list.add("response", output);
-      return list;
-    } catch (IOException e) {
-      throw new SolrException(SolrException.ErrorCode.SERVER_ERROR, "parsing 
error", e);
-    }
-  }
-
-  @Override
-  public NamedList<Object> processResponse(InputStream body, String encoding) 
throws IOException {
-    StringWriter writer = new StringWriter();
-    new InputStreamReader(body, encoding == null ? "UTF-8" : 
encoding).transferTo(writer);
-    String output = writer.toString();
-    NamedList<Object> list = new NamedList<>();
-    list.add("response", output);
-    return list;
-  }
-}
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 fc7a6a38cd3..3d4693ae6c0 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
@@ -20,8 +20,8 @@ package org.apache.solr.client.solrj.request;
 import java.util.Arrays;
 import java.util.TreeSet;
 import org.apache.solr.client.solrj.SolrRequest;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 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;
@@ -120,7 +120,7 @@ public abstract class DelegationTokenRequest<
     public Cancel(String token) {
       super(METHOD.PUT);
       this.token = token;
-      setResponseParser(new NoOpResponseParser("xml"));
+      setResponseParser(new InputStreamResponseParser("xml"));
       setQueryParams(new TreeSet<>(Arrays.asList(OP_KEY, TOKEN_KEY)));
     }
 
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java 
b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
index 2fc66ad7913..8ed1d9ded4d 100644
--- a/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
+++ b/solr/solrj/src/test/org/apache/solr/client/solrj/SolrExampleTests.java
@@ -21,11 +21,13 @@ import static org.hamcrest.CoreMatchers.is;
 import static org.hamcrest.core.StringContains.containsString;
 
 import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.io.FileInputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.lang.invoke.MethodHandles;
 import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.ArrayList;
@@ -43,8 +45,8 @@ import 
org.apache.solr.client.solrj.embedded.EmbeddedSolrServer;
 import org.apache.solr.client.solrj.embedded.SolrExampleStreamingHttp2Test;
 import 
org.apache.solr.client.solrj.embedded.SolrExampleStreamingTest.ErrorTrackingConcurrentUpdateSolrClient;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.impl.JavaBinResponseParser;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
 import org.apache.solr.client.solrj.impl.XMLResponseParser;
 import org.apache.solr.client.solrj.request.AbstractUpdateRequest;
 import org.apache.solr.client.solrj.request.AbstractUpdateRequest.ACTION;
@@ -871,9 +873,15 @@ public abstract class SolrExampleTests extends 
SolrExampleTestsBase {
     query.set(CommonParams.WT, "json");
 
     req = new QueryRequest(query);
-    req.setResponseParser(new NoOpResponseParser("json"));
+    req.setResponseParser(new InputStreamResponseParser("json"));
     NamedList<Object> resp = client.request(req);
     String raw = (String) resp.get("response");
+    try (InputStream responseStream =
+        (InputStream) resp.get(InputStreamResponseParser.STREAM_KEY)) {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      responseStream.transferTo(baos);
+      raw = baos.toString(StandardCharsets.UTF_8);
+    }
 
     // Check that the response parses as JSON
     JSONParser parser = new JSONParser(raw);
@@ -885,13 +893,17 @@ public abstract class SolrExampleTests extends 
SolrExampleTestsBase {
     assertTrue(raw.indexOf('"' + rawXml + '"') > 0); // quoted xml
 
     // Check raw XML Output
-    req.setResponseParser(new NoOpResponseParser("xml"));
     query.set("fl", "id,json_s:[json],xml_s:[xml]");
     query.set(CommonParams.WT, "xml");
     req = new QueryRequest(query);
-    req.setResponseParser(new NoOpResponseParser("xml"));
+    req.setResponseParser(new InputStreamResponseParser("xml"));
     resp = client.request(req);
-    raw = (String) resp.get("response");
+    try (InputStream responseStream =
+        (InputStream) resp.get(InputStreamResponseParser.STREAM_KEY)) {
+      ByteArrayOutputStream baos = new ByteArrayOutputStream();
+      responseStream.transferTo(baos);
+      raw = baos.toString(StandardCharsets.UTF_8);
+    }
 
     // Check that we get raw xml and json is escaped
     assertTrue(raw.indexOf('>' + rawJson + '<') > 0); // escaped
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBuilderTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBuilderTest.java
index e3a8e4618fb..f1b79749742 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBuilderTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/HttpSolrClientBuilderTest.java
@@ -31,7 +31,7 @@ import org.junit.Test;
 public class HttpSolrClientBuilderTest extends SolrTestCase {
   private static final String ANY_BASE_SOLR_URL = "ANY_BASE_SOLR_URL";
   private static final HttpClient ANY_HTTP_CLIENT = 
HttpClientBuilder.create().build();
-  private static final ResponseParser ANY_RESPONSE_PARSER = new 
NoOpResponseParser("xml");
+  private static final ResponseParser ANY_RESPONSE_PARSER = new 
InputStreamResponseParser("xml");
 
   @Test(expected = IllegalArgumentException.class)
   public void testBaseSolrUrlIsRequired() {
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBuilderTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBuilderTest.java
index edd562868eb..d2f31d05424 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBuilderTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/impl/LBHttpSolrClientBuilderTest.java
@@ -30,7 +30,7 @@ import org.junit.Test;
 public class LBHttpSolrClientBuilderTest extends SolrTestCase {
   private static final String ANY_BASE_SOLR_URL = "ANY_BASE_SOLR_URL";
   private static final HttpClient ANY_HTTP_CLIENT = 
HttpClientBuilder.create().build();
-  private static final ResponseParser ANY_RESPONSE_PARSER = new 
NoOpResponseParser("xml");
+  private static final ResponseParser ANY_RESPONSE_PARSER = new 
InputStreamResponseParser("xml");
 
   @Test
   public void providesHttpClientToClient() {
diff --git 
a/solr/solrj/src/test/org/apache/solr/client/solrj/response/NoOpResponseParserTest.java
 
b/solr/solrj/src/test/org/apache/solr/client/solrj/response/InputStreamResponseParserTest.java
similarity index 75%
rename from 
solr/solrj/src/test/org/apache/solr/client/solrj/response/NoOpResponseParserTest.java
rename to 
solr/solrj/src/test/org/apache/solr/client/solrj/response/InputStreamResponseParserTest.java
index 1895a5477fb..e6ec1082982 100644
--- 
a/solr/solrj/src/test/org/apache/solr/client/solrj/response/NoOpResponseParserTest.java
+++ 
b/solr/solrj/src/test/org/apache/solr/client/solrj/response/InputStreamResponseParserTest.java
@@ -19,8 +19,6 @@ package org.apache.solr.client.solrj.response;
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
 import java.nio.charset.StandardCharsets;
 import java.util.List;
 import org.apache.solr.SolrJettyTestBase;
@@ -29,7 +27,7 @@ import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrQuery;
 import org.apache.solr.client.solrj.SolrServerException;
 import org.apache.solr.client.solrj.impl.HttpSolrClient;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.impl.XMLResponseParser;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.common.SolrDocument;
@@ -39,13 +37,8 @@ import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-/**
- * A test for parsing Solr response from query by NoOpResponseParser.
- *
- * @see org.apache.solr.client.solrj.impl.NoOpResponseParser
- * @see <a href="https://issues.apache.org/jira/browse/SOLR-5530";>SOLR-5530</a>
- */
-public class NoOpResponseParserTest extends SolrJettyTestBase {
+/** A test for parsing Solr response from query by InputStreamResponseParser. 
*/
+public class InputStreamResponseParserTest extends SolrJettyTestBase {
 
   private static InputStream getResponse() {
     return new ByteArrayInputStream("NO-OP test 
response".getBytes(StandardCharsets.UTF_8));
@@ -66,19 +59,19 @@ public class NoOpResponseParserTest extends 
SolrJettyTestBase {
     client.commit();
   }
 
-  /** Parse response from query using NoOpResponseParser. */
+  /** Parse response from query using InputStreamResponseParser. */
   @Test
   public void testQueryParse() throws Exception {
 
     try (SolrClient client =
         new HttpSolrClient.Builder(getBaseUrl())
             .withDefaultCollection(DEFAULT_TEST_CORENAME)
-            .withResponseParser(new NoOpResponseParser("xml"))
+            .withResponseParser(new InputStreamResponseParser("xml"))
             .build()) {
       SolrQuery query = new SolrQuery("id:1234");
       QueryRequest req = new QueryRequest(query);
       NamedList<Object> resp = client.request(req);
-      String responseString = (String) resp.get("response");
+      String responseString = 
InputStreamResponseParser.consumeResponseToString(resp);
       assertResponse(responseString);
     }
   }
@@ -96,24 +89,10 @@ public class NoOpResponseParserTest extends 
SolrJettyTestBase {
     assertEquals("1234", String.valueOf(solrDocument.getFieldValue("id")));
   }
 
-  /** Parse response from java.io.Reader. */
-  @Test
-  public void testReaderResponse() throws Exception {
-    NoOpResponseParser parser = new NoOpResponseParser("xml");
-    try (final InputStream is = getResponse()) {
-      assertNotNull(is);
-      Reader in = new InputStreamReader(is, StandardCharsets.UTF_8);
-      NamedList<Object> response = parser.processResponse(in);
-      assertNotNull(response.get("response"));
-      String expectedResponse = new String(getResponse().readAllBytes(), 
StandardCharsets.UTF_8);
-      assertEquals(expectedResponse, response.get("response"));
-    }
-  }
-
   /** Parse response from java.io.InputStream. */
   @Test
   public void testInputStreamResponse() throws Exception {
-    NoOpResponseParser parser = new NoOpResponseParser("xml");
+    InputStreamResponseParser parser = new InputStreamResponseParser("xml");
     try (final InputStream is = getResponse()) {
       assertNotNull(is);
       NamedList<Object> response = parser.processResponse(is, "UTF-8");
diff --git a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseHS.java 
b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseHS.java
index 6eb5dd4df55..91dc38932a6 100644
--- a/solr/test-framework/src/java/org/apache/solr/SolrTestCaseHS.java
+++ b/solr/test-framework/src/java/org/apache/solr/SolrTestCaseHS.java
@@ -34,8 +34,8 @@ import javax.xml.xpath.XPathExpressionException;
 import org.apache.lucene.util.IOUtils;
 import org.apache.solr.client.solrj.SolrClient;
 import org.apache.solr.client.solrj.SolrServerException;
+import org.apache.solr.client.solrj.impl.InputStreamResponseParser;
 import org.apache.solr.client.solrj.impl.JsonMapResponseParser;
-import org.apache.solr.client.solrj.impl.NoOpResponseParser;
 import org.apache.solr.client.solrj.request.QueryRequest;
 import org.apache.solr.client.solrj.request.UpdateRequest;
 import org.apache.solr.client.solrj.response.UpdateResponse;
@@ -177,9 +177,9 @@ public class SolrTestCaseHS extends SolrTestCaseJ4 {
       NamedList<Object> rsp = client.request(query);
       return Utils.toJSONString(rsp);
     } else {
-      query.setResponseParser(new NoOpResponseParser(wt));
+      query.setResponseParser(new InputStreamResponseParser(wt));
       NamedList<Object> rsp = client.request(query);
-      return (String) rsp.get("response");
+      return InputStreamResponseParser.consumeResponseToString(rsp);
     }
   }
 


Reply via email to