From 676567910def774f2745507af1be9dc98ad3b76b Mon Sep 17 00:00:00 2001 From: "P.J. Meisch" Date: Fri, 12 Apr 2019 15:16:17 +0200 Subject: [PATCH] DATAES-561 - Reuse ObjectMapper in ElasticsearchEntityMapper Original pull request: #269 --- .../core/ElasticsearchEntityMapper.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchEntityMapper.java b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchEntityMapper.java index 1900b122f..49db1e0d7 100644 --- a/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchEntityMapper.java +++ b/src/main/java/org/springframework/data/elasticsearch/core/ElasticsearchEntityMapper.java @@ -15,6 +15,8 @@ */ package org.springframework.data.elasticsearch.core; +import com.fasterxml.jackson.databind.ObjectReader; +import com.fasterxml.jackson.databind.ObjectWriter; import lombok.RequiredArgsConstructor; import java.io.IOException; @@ -56,6 +58,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; * {@link ElasticsearchPersistentEntity metadata}. * * @author Christoph Strobl + * @author Peter-Josef Meisch * @since 3.2 */ public class ElasticsearchEntityMapper implements @@ -65,6 +68,8 @@ public class ElasticsearchEntityMapper implements private final MappingContext, ElasticsearchPersistentProperty> mappingContext; private final GenericConversionService conversionService; + private final ObjectReader objectReader; + private final ObjectWriter objectWriter; private CustomConversions conversions = new ElasticsearchCustomConversions(Collections.emptyList()); private EntityInstantiators instantiators = new EntityInstantiators(); @@ -78,6 +83,10 @@ public class ElasticsearchEntityMapper implements this.mappingContext = mappingContext; this.conversionService = conversionService != null ? conversionService : new DefaultConversionService(); this.typeMapper = ElasticsearchTypeMapper.create(mappingContext); + + ObjectMapper objectMapper = new ObjectMapper(); + objectReader = objectMapper.readerFor(HashMap.class); + objectWriter = objectMapper.writer(); } // --> GETTERS / SETTERS @@ -543,12 +552,12 @@ public class ElasticsearchEntityMapper implements Map sink = new LinkedHashMap<>(); write(source, sink); - return new ObjectMapper().writeValueAsString(sink); + return objectWriter.writeValueAsString(sink); } @Override public T mapToObject(String source, Class clazz) throws IOException { - return read(clazz, new ObjectMapper().readerFor(HashMap.class).readValue(source)); + return read(clazz, objectReader.readValue(source)); } // --> PRIVATE HELPERS