Skip to content

Commit e6f6ee7

Browse files
committed
Move ReactiveElasticsearchClient auto-config to correct module
Closes gh-47848
1 parent 8a52f49 commit e6f6ee7

File tree

11 files changed

+60
-159
lines changed

11 files changed

+60
-159
lines changed
Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
* limitations under the License.
1515
*/
1616

17-
package org.springframework.boot.elasticsearch.autoconfigure;
17+
package org.springframework.boot.data.elasticsearch.autoconfigure;
1818

1919
import java.util.Map;
2020

@@ -27,28 +27,29 @@
2727
import reactor.core.publisher.Mono;
2828

2929
import org.springframework.boot.autoconfigure.AutoConfigurations;
30-
import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration;
30+
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchClientAutoConfiguration;
31+
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchRestClientAutoConfiguration;
3132
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3233
import org.springframework.boot.testsupport.container.TestImage;
3334
import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient;
3435

3536
import static org.assertj.core.api.Assertions.assertThat;
3637

3738
/**
38-
* Integration tests for {@link ElasticsearchReactiveClientAutoConfiguration}.
39+
* Integration tests for {@link DataElasticsearchAutoConfiguration}.
3940
*
4041
* @author Brian Clozel
4142
* @author Andy Wilkinson
4243
*/
4344
@Testcontainers(disabledWithoutDocker = true)
44-
class ElasticsearchReactiveClientAutoConfigurationIntegrationTests {
45+
class DataElasticsearchAutoConfigurationIntegrationTests {
4546

4647
@Container
4748
static final ElasticsearchContainer elasticsearch = TestImage.container(ElasticsearchContainer.class);
4849

4950
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
50-
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class,
51-
ElasticsearchRestClientAutoConfiguration.class, ElasticsearchReactiveClientAutoConfiguration.class));
51+
.withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class,
52+
ElasticsearchClientAutoConfiguration.class, DataElasticsearchAutoConfiguration.class));
5253

5354
@Test
5455
void reactiveClientCanQueryElasticsearchNode() {

module/spring-boot-data-elasticsearch/src/dockerTest/java/org/springframework/boot/data/elasticsearch/autoconfigure/DataElasticsearchReactiveRepositoriesAutoConfigurationTests.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@
2828
import org.springframework.boot.data.elasticsearch.domain.city.ReactiveCityRepository;
2929
import org.springframework.boot.data.elasticsearch.domain.empty.EmptyDataPackage;
3030
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchClientAutoConfiguration;
31-
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchReactiveClientAutoConfiguration;
3231
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchRestClientAutoConfiguration;
3332
import org.springframework.boot.test.context.FilteredClassLoader;
3433
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
@@ -57,8 +56,7 @@ class DataElasticsearchReactiveRepositoriesAutoConfigurationTests {
5756
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
5857
.withConfiguration(AutoConfigurations.of(ElasticsearchClientAutoConfiguration.class,
5958
ElasticsearchRestClientAutoConfiguration.class,
60-
DataElasticsearchReactiveRepositoriesAutoConfiguration.class, DataElasticsearchAutoConfiguration.class,
61-
ElasticsearchReactiveClientAutoConfiguration.class))
59+
DataElasticsearchReactiveRepositoriesAutoConfiguration.class, DataElasticsearchAutoConfiguration.class))
6260
.withPropertyValues(
6361
"spring.elasticsearch.uris=" + elasticsearch.getHost() + ":" + elasticsearch.getFirstMappedPort(),
6462
"spring.elasticsearch.socket-timeout=30s");

module/spring-boot-data-elasticsearch/src/main/java/org/springframework/boot/data/elasticsearch/autoconfigure/DataElasticsearchAutoConfiguration.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
2121
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2222
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchClientAutoConfiguration;
23-
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchReactiveClientAutoConfiguration;
2423
import org.springframework.context.annotation.Import;
2524
import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
2625
import org.springframework.data.elasticsearch.repository.config.EnableElasticsearchRepositories;
@@ -37,8 +36,7 @@
3736
* @see EnableElasticsearchRepositories
3837
* @see EnableReactiveElasticsearchRepositories
3938
*/
40-
@AutoConfiguration(
41-
after = { ElasticsearchClientAutoConfiguration.class, ElasticsearchReactiveClientAutoConfiguration.class })
39+
@AutoConfiguration(after = ElasticsearchClientAutoConfiguration.class)
4240
@ConditionalOnClass({ ElasticsearchTemplate.class })
4341
@Import({ DataElasticsearchConfiguration.BaseConfiguration.class,
4442
DataElasticsearchConfiguration.JavaClientConfiguration.class,

module/spring-boot-data-elasticsearch/src/main/java/org/springframework/boot/data/elasticsearch/autoconfigure/DataElasticsearchConfiguration.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.util.Collections;
2020

2121
import co.elastic.clients.elasticsearch.ElasticsearchClient;
22+
import co.elastic.clients.transport.ElasticsearchTransport;
23+
import reactor.core.publisher.Mono;
2224

2325
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2426
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
@@ -94,11 +96,18 @@ ElasticsearchTemplate elasticsearchTemplate(ElasticsearchClient client, Elastics
9496
}
9597

9698
@Configuration(proxyBeanMethods = false)
99+
@ConditionalOnBean(ElasticsearchTransport.class)
100+
@ConditionalOnClass({ ReactiveElasticsearchClient.class, ElasticsearchTransport.class, Mono.class })
97101
static class ReactiveRestClientConfiguration {
98102

103+
@Bean
104+
@ConditionalOnMissingBean
105+
ReactiveElasticsearchClient reactiveElasticsearchClient(ElasticsearchTransport transport) {
106+
return new ReactiveElasticsearchClient(transport);
107+
}
108+
99109
@Bean
100110
@ConditionalOnMissingBean(value = ReactiveElasticsearchOperations.class, name = "reactiveElasticsearchTemplate")
101-
@ConditionalOnBean(ReactiveElasticsearchClient.class)
102111
ReactiveElasticsearchTemplate reactiveElasticsearchTemplate(ReactiveElasticsearchClient client,
103112
ElasticsearchConverter converter) {
104113
return new ReactiveElasticsearchTemplate(client, converter);

module/spring-boot-data-elasticsearch/src/main/java/org/springframework/boot/data/elasticsearch/autoconfigure/health/DataElasticsearchReactiveHealthContributorAutoConfiguration.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,8 @@
2424
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2525
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2626
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
27+
import org.springframework.boot.data.elasticsearch.autoconfigure.DataElasticsearchAutoConfiguration;
2728
import org.springframework.boot.data.elasticsearch.health.DataElasticsearchReactiveHealthIndicator;
28-
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchReactiveClientAutoConfiguration;
2929
import org.springframework.boot.health.autoconfigure.contributor.CompositeReactiveHealthContributorConfiguration;
3030
import org.springframework.boot.health.autoconfigure.contributor.ConditionalOnEnabledHealthIndicator;
3131
import org.springframework.boot.health.contributor.ReactiveHealthContributor;
@@ -40,7 +40,7 @@
4040
* @author Aleksander Lech
4141
* @since 4.0.0
4242
*/
43-
@AutoConfiguration(after = ElasticsearchReactiveClientAutoConfiguration.class)
43+
@AutoConfiguration(after = DataElasticsearchAutoConfiguration.class)
4444
@ConditionalOnClass({ ReactiveElasticsearchClient.class, Flux.class, DataElasticsearchReactiveHealthIndicator.class,
4545
ConditionalOnEnabledHealthIndicator.class })
4646
@ConditionalOnBean(ReactiveElasticsearchClient.class)

module/spring-boot-data-elasticsearch/src/test/java/org/springframework/boot/data/elasticsearch/autoconfigure/DataElasticsearchAutoConfigurationTests.java

Lines changed: 37 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,8 @@
1919
import java.math.BigDecimal;
2020
import java.util.Collections;
2121

22+
import co.elastic.clients.transport.ElasticsearchTransport;
23+
import co.elastic.clients.transport.rest5_client.low_level.Rest5Client;
2224
import org.assertj.core.api.InstanceOfAssertFactories;
2325
import org.jspecify.annotations.Nullable;
2426
import org.junit.jupiter.api.Test;
@@ -27,13 +29,13 @@
2729
import org.springframework.boot.autoconfigure.TestAutoConfigurationPackage;
2830
import org.springframework.boot.data.elasticsearch.domain.city.City;
2931
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchClientAutoConfiguration;
30-
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchReactiveClientAutoConfiguration;
3132
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchRestClientAutoConfiguration;
3233
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
3334
import org.springframework.context.annotation.Bean;
3435
import org.springframework.context.annotation.Configuration;
3536
import org.springframework.core.convert.converter.Converter;
3637
import org.springframework.data.elasticsearch.client.elc.ElasticsearchTemplate;
38+
import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchClient;
3739
import org.springframework.data.elasticsearch.client.elc.ReactiveElasticsearchTemplate;
3840
import org.springframework.data.elasticsearch.core.convert.ElasticsearchConverter;
3941
import org.springframework.data.elasticsearch.core.convert.ElasticsearchCustomConversions;
@@ -57,8 +59,7 @@ class DataElasticsearchAutoConfigurationTests {
5759

5860
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
5961
.withConfiguration(AutoConfigurations.of(ElasticsearchRestClientAutoConfiguration.class,
60-
ElasticsearchClientAutoConfiguration.class, DataElasticsearchAutoConfiguration.class,
61-
ElasticsearchReactiveClientAutoConfiguration.class));
62+
ElasticsearchClientAutoConfiguration.class, DataElasticsearchAutoConfiguration.class));
6263

6364
@Test
6465
void defaultRestBeansRegistered() {
@@ -113,6 +114,39 @@ void shouldFilterInitialEntityScanWithDocumentAnnotation() {
113114
});
114115
}
115116

117+
@Test
118+
void configureWithRestClientShouldCreateTransportAndClient() {
119+
this.contextRunner.withUserConfiguration(RestClientConfiguration.class)
120+
.run((context) -> assertThat(context).hasSingleBean(ReactiveElasticsearchClient.class));
121+
}
122+
123+
@Test
124+
void configureWhenCustomClientShouldBackOff() {
125+
this.contextRunner.withUserConfiguration(RestClientConfiguration.class, CustomClientConfiguration.class)
126+
.run((context) -> assertThat(context).hasSingleBean(ReactiveElasticsearchClient.class)
127+
.hasBean("customClient"));
128+
}
129+
130+
@Configuration(proxyBeanMethods = false)
131+
static class RestClientConfiguration {
132+
133+
@Bean
134+
Rest5Client restClient() {
135+
return mock(Rest5Client.class);
136+
}
137+
138+
}
139+
140+
@Configuration(proxyBeanMethods = false)
141+
static class CustomClientConfiguration {
142+
143+
@Bean
144+
ReactiveElasticsearchClient customClient(ElasticsearchTransport transport) {
145+
return new ReactiveElasticsearchClient(transport);
146+
}
147+
148+
}
149+
116150
@Configuration(proxyBeanMethods = false)
117151
static class CustomElasticsearchCustomConversions {
118152

module/spring-boot-data-elasticsearch/src/test/java/org/springframework/boot/data/elasticsearch/autoconfigure/health/DataElasticsearchReactiveHealthContributorAutoConfigurationTests.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
import org.springframework.boot.autoconfigure.AutoConfigurations;
2222
import org.springframework.boot.data.elasticsearch.autoconfigure.DataElasticsearchAutoConfiguration;
2323
import org.springframework.boot.data.elasticsearch.health.DataElasticsearchReactiveHealthIndicator;
24-
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchReactiveClientAutoConfiguration;
24+
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchClientAutoConfiguration;
2525
import org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchRestClientAutoConfiguration;
2626
import org.springframework.boot.elasticsearch.autoconfigure.health.ElasticsearchRestHealthContributorAutoConfiguration;
2727
import org.springframework.boot.elasticsearch.health.ElasticsearchRestClientHealthIndicator;
@@ -39,7 +39,7 @@ class DataElasticsearchReactiveHealthContributorAutoConfigurationTests {
3939

4040
private final ApplicationContextRunner contextRunner = new ApplicationContextRunner()
4141
.withConfiguration(AutoConfigurations.of(DataElasticsearchAutoConfiguration.class,
42-
ElasticsearchReactiveClientAutoConfiguration.class, ElasticsearchRestClientAutoConfiguration.class,
42+
ElasticsearchClientAutoConfiguration.class, ElasticsearchRestClientAutoConfiguration.class,
4343
DataElasticsearchReactiveHealthContributorAutoConfiguration.class,
4444
HealthContributorAutoConfiguration.class));
4545

module/spring-boot-elasticsearch/build.gradle

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -41,9 +41,6 @@ dependencies {
4141

4242
optional("com.fasterxml.jackson.core:jackson-databind")
4343
optional("jakarta.json.bind:jakarta.json.bind-api")
44-
optional("org.springframework.data:spring-data-elasticsearch") {
45-
exclude group: "org.elasticsearch.client", module: "transport"
46-
}
4744
optional("org.testcontainers:testcontainers-elasticsearch")
4845
optional("tools.jackson.core:jackson-databind")
4946

module/spring-boot-elasticsearch/src/main/java/org/springframework/boot/elasticsearch/autoconfigure/ElasticsearchReactiveClientAutoConfiguration.java

Lines changed: 0 additions & 55 deletions
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
11
org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchClientAutoConfiguration
2-
org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchReactiveClientAutoConfiguration
32
org.springframework.boot.elasticsearch.autoconfigure.ElasticsearchRestClientAutoConfiguration
43
org.springframework.boot.elasticsearch.autoconfigure.health.ElasticsearchRestHealthContributorAutoConfiguration

0 commit comments

Comments
 (0)