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 2da47367799 SolrQueryResponse.getResponseHeader/addResponseHeader to 
SimpleOrderedMap (#4809)
2da47367799 is described below

commit 2da47367799fe87f6a7366e5349f9bd54320483f
Author: Serhiy Bzhezytskyy <[email protected]>
AuthorDate: Wed Sep 2 01:37:12 2026 +0300

    SolrQueryResponse.getResponseHeader/addResponseHeader to SimpleOrderedMap 
(#4809)
---
 .../SOLR-solrqueryresponse-return-types.yml         | 10 ++++++++++
 .../src/java/org/apache/solr/core/SolrCore.java     |  2 +-
 .../handler/component/CombinedQueryComponent.java   | 14 ++++++--------
 .../solr/handler/component/QueryComponent.java      | 21 ++++++++-------------
 .../org/apache/solr/response/SolrQueryResponse.java |  9 ++++-----
 .../IgnoreCommitOptimizeUpdateProcessorFactory.java |  2 +-
 .../apache/solr/response/TestSolrQueryResponse.java |  4 ++--
 7 files changed, 32 insertions(+), 30 deletions(-)

diff --git a/changelog/unreleased/SOLR-solrqueryresponse-return-types.yml 
b/changelog/unreleased/SOLR-solrqueryresponse-return-types.yml
new file mode 100644
index 00000000000..6b13f8f6c1a
--- /dev/null
+++ b/changelog/unreleased/SOLR-solrqueryresponse-return-types.yml
@@ -0,0 +1,10 @@
+title: >
+  SolrQueryResponse.getResponseHeader()/addResponseHeader() are now declared 
to return/accept
+  SimpleOrderedMap<Object> instead of NamedList<Object>. External code 
compiled against the old
+  signature will get a NoSuchMethodError at runtime and must recompile.
+type: changed
+authors:
+  - name: Serhiy Bzhezytskyy
+links:
+  - name: PR#4809
+    url: https://github.com/apache/solr/pull/4809
diff --git a/solr/core/src/java/org/apache/solr/core/SolrCore.java 
b/solr/core/src/java/org/apache/solr/core/SolrCore.java
index 6c636b51902..3ee0813f914 100644
--- a/solr/core/src/java/org/apache/solr/core/SolrCore.java
+++ b/solr/core/src/java/org/apache/solr/core/SolrCore.java
@@ -2953,7 +2953,7 @@ public class SolrCore implements SolrInfoBean, Closeable {
 
   public static void preDecorateResponse(SolrQueryRequest req, 
SolrQueryResponse rsp) {
     // setup response header
-    final NamedList<Object> responseHeader = new SimpleOrderedMap<>();
+    final SimpleOrderedMap<Object> responseHeader = new SimpleOrderedMap<>();
     rsp.addResponseHeader(responseHeader);
 
     rsp.addToLog(PATH, req.getContext().get(PATH));
diff --git 
a/solr/core/src/java/org/apache/solr/handler/component/CombinedQueryComponent.java
 
b/solr/core/src/java/org/apache/solr/handler/component/CombinedQueryComponent.java
index 54a73256e28..5447b57a79c 100644
--- 
a/solr/core/src/java/org/apache/solr/handler/component/CombinedQueryComponent.java
+++ 
b/solr/core/src/java/org/apache/solr/handler/component/CombinedQueryComponent.java
@@ -455,10 +455,9 @@ public class CombinedQueryComponent extends QueryComponent 
implements SolrCoreAw
     populateNextCursorMarkFromMergedShards(rb);
 
     if (thereArePartialResults) {
-      updateResponseHeader(
-          rb.rsp.getResponseHeader(),
-          SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY,
-          Boolean.TRUE);
+      rb.rsp
+          .getResponseHeader()
+          .put(SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY, 
Boolean.TRUE);
     }
     if (segmentTerminatedEarly != null) {
       final Object existingSegmentTerminatedEarly =
@@ -472,10 +471,9 @@ public class CombinedQueryComponent extends QueryComponent 
implements SolrCoreAw
                 SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
                 segmentTerminatedEarly);
       } else if (!Boolean.TRUE.equals(existingSegmentTerminatedEarly) && 
segmentTerminatedEarly) {
-        updateResponseHeader(
-            rb.rsp.getResponseHeader(),
-            SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
-            true);
+        rb.rsp
+            .getResponseHeader()
+            
.put(SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY, true);
       }
     }
     if (maxHitsTerminatedEarly) {
diff --git 
a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java 
b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
index 9d51160bba2..0cd1c076060 100644
--- a/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
+++ b/solr/core/src/java/org/apache/solr/handler/component/QueryComponent.java
@@ -1237,10 +1237,9 @@ public class QueryComponent extends SearchComponent {
     populateNextCursorMarkFromMergedShards(rb);
 
     if (thereArePartialResults) {
-      updateResponseHeader(
-          rb.rsp.getResponseHeader(),
-          SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY,
-          Boolean.TRUE);
+      rb.rsp
+          .getResponseHeader()
+          .put(SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY, 
Boolean.TRUE);
     }
     if (segmentTerminatedEarly != null) {
       final Object existingSegmentTerminatedEarly =
@@ -1255,10 +1254,11 @@ public class QueryComponent extends SearchComponent {
                 segmentTerminatedEarly);
       } else if (!Boolean.TRUE.equals(existingSegmentTerminatedEarly)
           && Boolean.TRUE.equals(segmentTerminatedEarly)) {
-        updateResponseHeader(
-            rb.rsp.getResponseHeader(),
-            SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
-            segmentTerminatedEarly);
+        rb.rsp
+            .getResponseHeader()
+            .put(
+                SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
+                segmentTerminatedEarly);
       }
     }
     if (maxHitsTerminatedEarly) {
@@ -1280,11 +1280,6 @@ public class QueryComponent extends SearchComponent {
     }
   }
 
-  @SuppressWarnings("unchecked")
-  protected static void updateResponseHeader(NamedList<Object> header, String 
key, Object value) {
-    ((SimpleOrderedMap<Object>) header).put(key, value);
-  }
-
   protected void setResultIdsAndResponseDocs(
       ResponseBuilder rb,
       ShardDocQueue shardDocQueue,
diff --git a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java 
b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
index 5f2b67622d6..9e3a6dcb7c8 100644
--- a/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
+++ b/solr/core/src/java/org/apache/solr/response/SolrQueryResponse.java
@@ -258,7 +258,7 @@ public class SolrQueryResponse {
   }
 
   /** Set response header */
-  public void addResponseHeader(NamedList<Object> header) {
+  public void addResponseHeader(SimpleOrderedMap<Object> header) {
     values.add(RESPONSE_HEADER_KEY, header);
   }
 
@@ -268,10 +268,9 @@ public class SolrQueryResponse {
   }
 
   /** Response header to be logged */
-  public NamedList<Object> getResponseHeader() {
-    @SuppressWarnings("unchecked")
-    SimpleOrderedMap<Object> header = (SimpleOrderedMap<Object>) 
values.get(RESPONSE_HEADER_KEY);
-    return header;
+  @SuppressWarnings("unchecked")
+  public SimpleOrderedMap<Object> getResponseHeader() {
+    return (SimpleOrderedMap<Object>) values.get(RESPONSE_HEADER_KEY);
   }
 
   /** Set response */
diff --git 
a/solr/core/src/java/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactory.java
 
b/solr/core/src/java/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactory.java
index 9e8eff7cb55..f4d8abb901e 100644
--- 
a/solr/core/src/java/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactory.java
+++ 
b/solr/core/src/java/org/apache/solr/update/processor/IgnoreCommitOptimizeUpdateProcessorFactory.java
@@ -139,7 +139,7 @@ public class IgnoreCommitOptimizeUpdateProcessorFactory 
extends UpdateRequestPro
         IgnoreCommitOptimizeUpdateProcessorFactory.log.info(
             "{} from client application ignored with status code: 200", 
cmdType);
         if (responseMsg != null) {
-          NamedList<Object> responseHeader = rsp.getResponseHeader();
+          SimpleOrderedMap<Object> responseHeader = rsp.getResponseHeader();
           if (responseHeader != null) {
             responseHeader.add("msg", responseMsg);
           } else {
diff --git 
a/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java 
b/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
index 3d6fbe46e57..b414eb5bdd7 100644
--- a/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
+++ b/solr/core/src/test/org/apache/solr/response/TestSolrQueryResponse.java
@@ -279,7 +279,7 @@ public class TestSolrQueryResponse extends SolrTestCase {
   public void testResponseHeader() {
     final SolrQueryResponse response = new SolrQueryResponse();
     assertNull("responseHeader initially present", 
response.getResponseHeader());
-    final NamedList<Object> newValue = new SimpleOrderedMap<>();
+    final SimpleOrderedMap<Object> newValue = new SimpleOrderedMap<>();
     newValue.add("key1", "value1");
     response.add("key2", "value2");
     response.addResponseHeader(newValue);
@@ -300,7 +300,7 @@ public class TestSolrQueryResponse extends SolrTestCase {
   @Test
   public void testConvertToHEADStyleResponse() {
     final SolrQueryResponse response = new SolrQueryResponse();
-    final NamedList<Object> newValue = new SimpleOrderedMap<>();
+    final SimpleOrderedMap<Object> newValue = new SimpleOrderedMap<>();
     newValue.add("responseHeaderKey1", "value1");
     response.add("responseHeaderKey2", "value2");
     response.addResponseHeader(newValue);

Reply via email to