From 763d86890d5e1472aa7d234c05e94b6f17b5417e Mon Sep 17 00:00:00 2001 From: adityamparikh Date: Fri, 24 Apr 2026 14:04:42 -0400 Subject: [PATCH] fix: add Jackson annotations and defensive copying to SearchResponse Add @JsonInclude(NON_NULL) and @JsonIgnoreProperties(ignoreUnknown = true) annotations for consistency with collection DTOs in Dtos.java. Add compact constructor with defensive copying using List.copyOf() and Map.copyOf() for the mutable documents and facets fields, defaulting to empty collections when null. Co-Authored-By: Claude Opus 4.6 (1M context) Signed-off-by: adityamparikh --- .../apache/solr/mcp/server/search/SearchResponse.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/main/java/org/apache/solr/mcp/server/search/SearchResponse.java b/src/main/java/org/apache/solr/mcp/server/search/SearchResponse.java index 3e8d914f..d271db21 100644 --- a/src/main/java/org/apache/solr/mcp/server/search/SearchResponse.java +++ b/src/main/java/org/apache/solr/mcp/server/search/SearchResponse.java @@ -16,6 +16,8 @@ */ package org.apache.solr.mcp.server.search; +import com.fasterxml.jackson.annotation.JsonIgnoreProperties; +import com.fasterxml.jackson.annotation.JsonInclude; import java.util.List; import java.util.Map; @@ -134,6 +136,13 @@ * @see org.apache.solr.client.solrj.response.QueryResponse * @see org.apache.solr.common.SolrDocumentList */ +@JsonIgnoreProperties(ignoreUnknown = true) +@JsonInclude(JsonInclude.Include.NON_NULL) public record SearchResponse(long numFound, long start, Float maxScore, List> documents, Map> facets) { + + public SearchResponse { + documents = documents != null ? List.copyOf(documents) : List.of(); + facets = facets != null ? Map.copyOf(facets) : Map.of(); + } }