Skip to content

Commit b820c9a

Browse files
committed
DATAES-629 - ElasticsearchEntityMapper refactoring.
Original PR: spring-projects#309
1 parent 7a4aebf commit b820c9a

29 files changed

+874
-1508
lines changed

src/main/java/org/springframework/data/elasticsearch/config/AbstractElasticsearchConfiguration.java

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import org.springframework.context.annotation.Bean;
2020
import org.springframework.data.elasticsearch.core.ElasticsearchOperations;
2121
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
22+
import org.springframework.data.elasticsearch.core.ResultsMapper;
23+
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
2224

2325
/**
2426
* @author Christoph Strobl
@@ -42,8 +44,9 @@ public abstract class AbstractElasticsearchConfiguration extends ElasticsearchCo
4244
*
4345
* @return never {@literal null}.
4446
*/
45-
@Bean(name = {"elasticsearchOperations", "elasticsearchTemplate"})
46-
public ElasticsearchOperations elasticsearchOperations() {
47-
return new ElasticsearchRestTemplate(elasticsearchClient(), elasticsearchConverter(), resultsMapper());
47+
@Bean(name = { "elasticsearchOperations", "elasticsearchTemplate" })
48+
public ElasticsearchOperations elasticsearchOperations(MappingElasticsearchConverter mappingElasticsearchConverter,
49+
ResultsMapper resultsMapper) {
50+
return new ElasticsearchRestTemplate(elasticsearchClient(), mappingElasticsearchConverter, resultsMapper);
4851
}
4952
}

src/main/java/org/springframework/data/elasticsearch/config/AbstractReactiveElasticsearchConfiguration.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,8 @@
2222
import org.springframework.data.elasticsearch.client.reactive.ReactiveElasticsearchClient;
2323
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations;
2424
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate;
25+
import org.springframework.data.elasticsearch.core.ResultsMapper;
26+
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
2527
import org.springframework.lang.Nullable;
2628

2729
/**
@@ -47,10 +49,11 @@ public abstract class AbstractReactiveElasticsearchConfiguration extends Elastic
4749
* @return never {@literal null}.
4850
*/
4951
@Bean
50-
public ReactiveElasticsearchOperations reactiveElasticsearchTemplate() {
52+
public ReactiveElasticsearchOperations reactiveElasticsearchTemplate(
53+
MappingElasticsearchConverter mappingElasticsearchConverter, ResultsMapper resultsMapper) {
5154

5255
ReactiveElasticsearchTemplate template = new ReactiveElasticsearchTemplate(reactiveElasticsearchClient(),
53-
elasticsearchConverter(), resultsMapper());
56+
mappingElasticsearchConverter, resultsMapper);
5457
template.setIndicesOptions(indicesOptions());
5558
template.setRefreshPolicy(refreshPolicy());
5659

src/main/java/org/springframework/data/elasticsearch/config/ElasticsearchConfigurationSupport.java

Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -27,14 +27,13 @@
2727
import org.springframework.context.annotation.ClassPathScanningCandidateComponentProvider;
2828
import org.springframework.context.annotation.Configuration;
2929
import org.springframework.core.convert.converter.Converter;
30+
import org.springframework.core.convert.support.DefaultConversionService;
3031
import org.springframework.core.type.filter.AnnotationTypeFilter;
3132
import org.springframework.data.annotation.Persistent;
3233
import org.springframework.data.elasticsearch.annotations.Document;
33-
import org.springframework.data.elasticsearch.core.DefaultEntityMapper;
3434
import org.springframework.data.elasticsearch.core.DefaultResultMapper;
3535
import org.springframework.data.elasticsearch.core.EntityMapper;
3636
import org.springframework.data.elasticsearch.core.ResultsMapper;
37-
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
3837
import org.springframework.data.elasticsearch.core.convert.ElasticsearchCustomConversions;
3938
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
4039
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
@@ -43,14 +42,16 @@
4342

4443
/**
4544
* @author Christoph Strobl
45+
* @author Peter-Josef Meisch
4646
* @since 3.2
4747
*/
4848
@Configuration
4949
public class ElasticsearchConfigurationSupport {
5050

5151
@Bean
52-
public ElasticsearchConverter elasticsearchConverter() {
53-
return new MappingElasticsearchConverter(elasticsearchMappingContext());
52+
public MappingElasticsearchConverter elasticsearchEntityMapper(
53+
SimpleElasticsearchMappingContext elasticsearchMappingContext) {
54+
return new MappingElasticsearchConverter(elasticsearchMappingContext);
5455
}
5556

5657
/**
@@ -71,33 +72,15 @@ public SimpleElasticsearchMappingContext elasticsearchMappingContext() {
7172
return mappingContext;
7273
}
7374

74-
/**
75-
* Returns the {@link EntityMapper} used for mapping between the source and domain type. <br />
76-
* <strong>Hint</strong>: you can use {@link org.springframework.data.elasticsearch.core.ElasticsearchEntityMapper} as
77-
* an alternative to the {@link DefaultEntityMapper}.
78-
*
79-
* <pre class="code">
80-
* ElasticsearchEntityMapper entityMapper = new ElasticsearchEntityMapper(elasticsearchMappingContext(),
81-
* new DefaultConversionService());
82-
* entityMapper.setConversions(elasticsearchCustomConversions());
83-
* </pre>
84-
*
85-
* @return never {@literal null}.
86-
*/
87-
@Bean
88-
public EntityMapper entityMapper() {
89-
return new DefaultEntityMapper(elasticsearchMappingContext());
90-
}
91-
9275
/**
9376
* Returns the {@link ResultsMapper} to be used for search responses.
9477
*
95-
* @see #entityMapper()
78+
* @see MappingElasticsearchConverter
9679
* @return never {@literal null}.
9780
*/
9881
@Bean
99-
public ResultsMapper resultsMapper() {
100-
return new DefaultResultMapper(elasticsearchMappingContext(), entityMapper());
82+
public ResultsMapper resultsMapper(SimpleElasticsearchMappingContext elasticsearchMappingContext) {
83+
return new DefaultResultMapper(elasticsearchMappingContext, elasticsearchEntityMapper(elasticsearchMappingContext));
10184
}
10285

10386
/**

src/main/java/org/springframework/data/elasticsearch/core/DefaultEntityMapper.java

Lines changed: 0 additions & 190 deletions
This file was deleted.

src/main/java/org/springframework/data/elasticsearch/core/DefaultResultMapper.java

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.springframework.data.elasticsearch.annotations.ScriptedField;
3333
import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage;
3434
import org.springframework.data.elasticsearch.core.aggregation.impl.AggregatedPageImpl;
35+
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
3536
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentEntity;
3637
import org.springframework.data.elasticsearch.core.mapping.ElasticsearchPersistentProperty;
3738
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
@@ -65,7 +66,7 @@ public DefaultResultMapper() {
6566

6667
public DefaultResultMapper(
6768
MappingContext<? extends ElasticsearchPersistentEntity<?>, ElasticsearchPersistentProperty> mappingContext) {
68-
this(mappingContext, initEntityMapper(mappingContext));
69+
this(mappingContext, null);
6970
}
7071

7172
public DefaultResultMapper(EntityMapper entityMapper) {
@@ -84,7 +85,9 @@ private static EntityMapper initEntityMapper(
8485
MappingContext<? extends ElasticsearchPersistentEntity<?>, ElasticsearchPersistentProperty> mappingContext) {
8586

8687
Assert.notNull(mappingContext, "MappingContext must not be null!");
87-
return new DefaultEntityMapper(mappingContext);
88+
MappingElasticsearchConverter mappingElasticsearchConverter = new MappingElasticsearchConverter(mappingContext, null);
89+
mappingElasticsearchConverter.afterPropertiesSet();
90+
return mappingElasticsearchConverter;
8891
}
8992

9093
@Override

0 commit comments

Comments
 (0)