Skip to content

Commit

Permalink
Merge branch '2.3.x' into 2.4.x
Browse files Browse the repository at this point in the history
Closes gh-26029
  • Loading branch information
snicoll committed Apr 12, 2021
2 parents fd6ad5b + d96fcf3 commit 305bcb1
Show file tree
Hide file tree
Showing 2 changed files with 70 additions and 7 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -16,6 +16,8 @@

package org.springframework.boot.autoconfigure.data.elasticsearch;

import java.util.Collections;

import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.action.support.WriteRequest;
import org.elasticsearch.client.RestHighLevelClient;
Expand All @@ -31,6 +33,7 @@
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchOperations;
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchCustomConversions;
import org.springframework.data.elasticsearch.core.convert.MappingElasticsearchConverter;
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
import org.springframework.web.reactive.function.client.WebClient;
Expand All @@ -43,6 +46,7 @@
*
* @author Brian Clozel
* @author Scott Frederick
* @author Stephane Nicoll
*/
abstract class ElasticsearchDataConfiguration {

Expand All @@ -51,14 +55,26 @@ static class BaseConfiguration {

@Bean
@ConditionalOnMissingBean
ElasticsearchConverter elasticsearchConverter(SimpleElasticsearchMappingContext mappingContext) {
return new MappingElasticsearchConverter(mappingContext);
ElasticsearchCustomConversions elasticsearchCustomConversions() {
return new ElasticsearchCustomConversions(Collections.emptyList());
}

@Bean
@ConditionalOnMissingBean
SimpleElasticsearchMappingContext mappingContext(
ElasticsearchCustomConversions elasticsearchCustomConversions) {
SimpleElasticsearchMappingContext mappingContext = new SimpleElasticsearchMappingContext();
mappingContext.setSimpleTypeHolder(elasticsearchCustomConversions.getSimpleTypeHolder());
return mappingContext;
}

@Bean
@ConditionalOnMissingBean
SimpleElasticsearchMappingContext mappingContext() {
return new SimpleElasticsearchMappingContext();
ElasticsearchConverter elasticsearchConverter(SimpleElasticsearchMappingContext mappingContext,
ElasticsearchCustomConversions elasticsearchCustomConversions) {
MappingElasticsearchConverter converter = new MappingElasticsearchConverter(mappingContext);
converter.setConversions(elasticsearchCustomConversions);
return converter;
}

}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* Copyright 2012-2020 the original author or authors.
* Copyright 2012-2021 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
Expand All @@ -16,6 +16,10 @@

package org.springframework.boot.autoconfigure.data.elasticsearch;

import java.math.BigDecimal;
import java.util.Collections;

import org.assertj.core.api.InstanceOfAssertFactories;
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
Expand All @@ -25,9 +29,13 @@
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.convert.converter.Converter;
import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate;
import org.springframework.data.elasticsearch.core.ReactiveElasticsearchTemplate;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
import org.springframework.data.elasticsearch.core.convert.ElasticsearchCustomConversions;
import org.springframework.data.elasticsearch.core.mapping.SimpleElasticsearchMappingContext;
import org.springframework.data.mapping.model.SimpleTypeHolder;

import static org.assertj.core.api.Assertions.assertThat;
import static org.mockito.Mockito.mock;
Expand All @@ -40,6 +48,7 @@
* @author Brian Clozel
* @author Peter-Josef Meisch
* @author Scott Frederick
* @author Stephane Nicoll
*/
class ElasticsearchDataAutoConfigurationTests {

Expand All @@ -61,7 +70,26 @@ void tearDown() {
void defaultRestBeansRegistered() {
this.contextRunner.run((context) -> assertThat(context).hasSingleBean(ElasticsearchRestTemplate.class)
.hasSingleBean(ReactiveElasticsearchTemplate.class).hasSingleBean(ElasticsearchConverter.class)
.hasSingleBean(ElasticsearchConverter.class));
.hasSingleBean(ElasticsearchConverter.class).hasSingleBean(ElasticsearchCustomConversions.class));
}

@Test
void defaultConversionsRegisterBigDecimalAsSimpleType() {
this.contextRunner.run((context) -> {
SimpleElasticsearchMappingContext mappingContext = context.getBean(SimpleElasticsearchMappingContext.class);
assertThat(mappingContext)
.extracting("simpleTypeHolder", InstanceOfAssertFactories.type(SimpleTypeHolder.class)).satisfies(
(simpleTypeHolder) -> assertThat(simpleTypeHolder.isSimpleType(BigDecimal.class)).isTrue());
});
}

@Test
void customConversionsShouldBeUsed() {
this.contextRunner.withUserConfiguration(CustomElasticsearchCustomConversions.class).run((context) -> {
assertThat(context).hasSingleBean(ElasticsearchCustomConversions.class).hasBean("testCustomConversions");
assertThat(context.getBean(ElasticsearchConverter.class).getConversionService()
.canConvert(ElasticsearchRestTemplate.class, Boolean.class)).isTrue();
});
}

@Test
Expand All @@ -77,6 +105,16 @@ void customReactiveRestTemplateShouldBeUsed() {
.contains("reactiveElasticsearchTemplate"));
}

@Configuration(proxyBeanMethods = false)
static class CustomElasticsearchCustomConversions {

@Bean
ElasticsearchCustomConversions testCustomConversions() {
return new ElasticsearchCustomConversions(Collections.singletonList(new MyConverter()));
}

}

@Configuration(proxyBeanMethods = false)
static class CustomRestTemplate {

Expand All @@ -97,4 +135,13 @@ ReactiveElasticsearchTemplate reactiveElasticsearchTemplate() {

}

static class MyConverter implements Converter<ElasticsearchRestTemplate, Boolean> {

@Override
public Boolean convert(ElasticsearchRestTemplate source) {
return null;
}

}

}

0 comments on commit 305bcb1

Please sign in to comment.