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-mcp.git
The following commit(s) were added to refs/heads/main by this push:
new 48966a2 fix(indexing): inject Spring ObjectMapper in
JsonDocumentCreator (#101)
48966a2 is described below
commit 48966a2dd9c3d0ac2bef921a1a8c5fab832ed6a9
Author: Aditya Parikh <[email protected]>
AuthorDate: Fri May 8 17:00:36 2026 -0400
fix(indexing): inject Spring ObjectMapper in JsonDocumentCreator (#101)
Replace per-call `new ObjectMapper()` allocation in
JsonDocumentCreator.create() with a Spring-injected instance.
ObjectMapper is expensive to create and thread-safe, so reusing the
Spring-managed singleton improves performance and ensures consistent
Jackson configuration across the application.
Signed-off-by: adityamparikh <[email protected]>
Co-authored-by: Claude Opus 4.6 (1M context) <[email protected]>
---
.../mcp/server/indexing/documentcreator/JsonDocumentCreator.java | 9 +++++++--
.../mcp/server/indexing/documentcreator/SolrDocumentCreator.java | 2 +-
.../solr/mcp/server/indexing/IndexingServiceIntegrationTest.java | 3 ++-
3 files changed, 10 insertions(+), 4 deletions(-)
diff --git
a/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/JsonDocumentCreator.java
b/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/JsonDocumentCreator.java
index 1a8a149..e21a356 100644
---
a/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/JsonDocumentCreator.java
+++
b/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/JsonDocumentCreator.java
@@ -41,6 +41,12 @@ public class JsonDocumentCreator implements
SolrDocumentCreator {
private static final int MAX_INPUT_SIZE_BYTES = 10 * 1024 * 1024;
+ private final ObjectMapper objectMapper;
+
+ public JsonDocumentCreator(ObjectMapper objectMapper) {
+ this.objectMapper = objectMapper;
+ }
+
/**
* Creates a list of schema-less SolrInputDocument objects from a JSON
string.
*
@@ -111,8 +117,7 @@ public class JsonDocumentCreator implements
SolrDocumentCreator {
List<SolrInputDocument> documents = new ArrayList<>();
try {
- ObjectMapper mapper = new ObjectMapper();
- JsonNode rootNode = mapper.readTree(json);
+ JsonNode rootNode = this.objectMapper.readTree(json);
if (rootNode.isArray()) {
for (JsonNode item : rootNode) {
diff --git
a/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/SolrDocumentCreator.java
b/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/SolrDocumentCreator.java
index 2e24077..5761fed 100644
---
a/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/SolrDocumentCreator.java
+++
b/src/main/java/org/apache/solr/mcp/server/indexing/documentcreator/SolrDocumentCreator.java
@@ -56,7 +56,7 @@ import org.apache.solr.common.SolrInputDocument;
* <strong>Usage Example:</strong>
*
* <pre>{@code
- * SolrDocumentCreator creator = new JsonDocumentCreator();
+ * SolrDocumentCreator creator = new JsonDocumentCreator(new ObjectMapper());
* String jsonData = "[{\"title\":\"Document 1\",\"content\":\"Content
here\"}]";
* List<SolrInputDocument> documents = creator.create(jsonData);
* }</pre>
diff --git
a/src/test/java/org/apache/solr/mcp/server/indexing/IndexingServiceIntegrationTest.java
b/src/test/java/org/apache/solr/mcp/server/indexing/IndexingServiceIntegrationTest.java
index 93a5b98..933e668 100644
---
a/src/test/java/org/apache/solr/mcp/server/indexing/IndexingServiceIntegrationTest.java
+++
b/src/test/java/org/apache/solr/mcp/server/indexing/IndexingServiceIntegrationTest.java
@@ -70,7 +70,8 @@ class IndexingServiceIntegrationTest {
// Boot test
XmlDocumentCreator xmlDocumentCreator = new
XmlDocumentCreator();
CsvDocumentCreator csvDocumentCreator = new
CsvDocumentCreator();
- JsonDocumentCreator jsonDocumentCreator = new
JsonDocumentCreator();
+ JsonDocumentCreator jsonDocumentCreator = new
JsonDocumentCreator(
+ new
com.fasterxml.jackson.databind.ObjectMapper());
indexingDocumentCreator = new
IndexingDocumentCreator(xmlDocumentCreator, csvDocumentCreator,
jsonDocumentCreator);