Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions changelog/unreleased/SOLR-solrqueryresponse-return-types.yml
Original file line number Diff line number Diff line change
@@ -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
2 changes: 1 addition & 1 deletion solr/core/src/java/org/apache/solr/core/SolrCore.java
Original file line number Diff line number Diff line change
Expand Up @@ -2946,7 +2946,7 @@ public void execute(SolrRequestHandler handler, SolrQueryRequest req, SolrQueryR

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));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -457,7 +457,6 @@ protected void mergeIds(ResponseBuilder rb, ShardRequest sreq) {
if (thereArePartialResults) {
rb.rsp
.getResponseHeader()
.asShallowMap()
.put(SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY, Boolean.TRUE);
}
if (segmentTerminatedEarly != null) {
Expand All @@ -474,10 +473,7 @@ protected void mergeIds(ResponseBuilder rb, ShardRequest sreq) {
} else if (!Boolean.TRUE.equals(existingSegmentTerminatedEarly) && segmentTerminatedEarly) {
rb.rsp
.getResponseHeader()
.remove(SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY);
rb.rsp
.getResponseHeader()
.add(SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY, true);
.put(SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY, true);
}
}
if (maxHitsTerminatedEarly) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1239,7 +1239,6 @@ protected void mergeIds(ResponseBuilder rb, ShardRequest sreq) {
if (thereArePartialResults) {
rb.rsp
.getResponseHeader()
.asShallowMap()
.put(SolrQueryResponse.RESPONSE_HEADER_PARTIAL_RESULTS_KEY, Boolean.TRUE);
}
if (segmentTerminatedEarly != null) {
Expand All @@ -1257,10 +1256,7 @@ protected void mergeIds(ResponseBuilder rb, ShardRequest sreq) {
&& Boolean.TRUE.equals(segmentTerminatedEarly)) {
rb.rsp
.getResponseHeader()
.remove(SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY);
rb.rsp
.getResponseHeader()
.add(
.put(
SolrQueryResponse.RESPONSE_HEADER_SEGMENT_TERMINATED_EARLY_KEY,
segmentTerminatedEarly);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -258,7 +258,7 @@ public Exception getException() {
}

/** Set response header */
public void addResponseHeader(NamedList<Object> header) {
public void addResponseHeader(SimpleOrderedMap<Object> header) {
values.add(RESPONSE_HEADER_KEY, header);
}

Expand All @@ -268,10 +268,9 @@ public void removeResponseHeader() {
}

/** 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 */
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ public void processCommit(CommitUpdateCommand cmd) throws IOException {
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 {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
import java.util.List;
import org.apache.solr.common.params.ShardParams;
import org.apache.solr.common.params.SolrParams;
import org.apache.solr.common.util.NamedList;
import org.apache.solr.common.util.SimpleOrderedMap;
import org.apache.solr.request.SolrQueryRequest;
import org.apache.solr.response.SolrQueryResponse;
import org.apache.solr.schema.IndexSchema;
Expand Down Expand Up @@ -48,7 +48,7 @@ public static MockResponseBuilder create() {
SchemaField uniqueIdField = new SchemaField("id", new StrField());

// we need this because QueryComponent adds a property to it.
NamedList<Object> responseHeader = new NamedList<>();
SimpleOrderedMap<Object> responseHeader = new SimpleOrderedMap<>();

// the mock implementations
Mockito.when(request.getSchema()).thenReturn(indexSchema);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -279,7 +279,7 @@ public void testException() {
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);
Expand All @@ -300,7 +300,7 @@ public void testHttpCaching() {
@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);
Expand Down
Loading