From 54fbfadde6dc4025318daa7ef7eeaa57665cac11 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(); + } }