Skip to content

Commit

Permalink
allow overriding registration client in blocking or reactive env
Browse files Browse the repository at this point in the history
  • Loading branch information
Fuud committed Mar 10, 2022
1 parent 17ab1aa commit 73dff1c
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -137,7 +137,7 @@ public static class BlockingRegistrationClientConfig {

@Bean
@ConditionalOnMissingBean
public BlockingRegistrationClient registrationClient(ClientProperties client) {
public RegistrationClient registrationClient(ClientProperties client) {
RestTemplateBuilder builder = new RestTemplateBuilder().setConnectTimeout(client.getConnectTimeout())
.setReadTimeout(client.getReadTimeout());
if (client.getUsername() != null && client.getPassword() != null) {
Expand All @@ -155,7 +155,7 @@ public static class ReactiveRegistrationClientConfig {

@Bean
@ConditionalOnMissingBean
public ReactiveRegistrationClient registrationClient(ClientProperties client, WebClient.Builder webClient) {
public RegistrationClient registrationClient(ClientProperties client, WebClient.Builder webClient) {
if (client.getUsername() != null && client.getPassword() != null) {
webClient = webClient.filter(basicAuthentication(client.getUsername(), client.getPassword()));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,18 +16,25 @@

package de.codecentric.boot.admin.client.config;


import org.junit.jupiter.api.Test;
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigurations;
import org.springframework.boot.autoconfigure.web.client.RestTemplateAutoConfiguration;
import org.springframework.boot.autoconfigure.web.reactive.function.client.WebClientAutoConfiguration;
import org.springframework.boot.autoconfigure.web.servlet.DispatcherServletAutoConfiguration;
import org.springframework.boot.context.annotation.UserConfigurations;
import org.springframework.boot.test.context.runner.ApplicationContextRunner;
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.client.RestTemplate;

import de.codecentric.boot.admin.client.registration.ApplicationRegistrator;
import de.codecentric.boot.admin.client.registration.BlockingRegistrationClient;
import de.codecentric.boot.admin.client.registration.RegistrationClient;

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

Expand Down Expand Up @@ -76,4 +83,24 @@ public void reactiveEnvironment() {
.run((context) -> assertThat(context).hasSingleBean(ApplicationRegistrator.class));
}

@Test
public void customBlockingClientInReactiveAndBlockingEnvironment() {
ReactiveWebApplicationContextRunner reactiveContextRunner = new ReactiveWebApplicationContextRunner()
.withConfiguration(UserConfigurations.of(CustomBlockingConfiguration.class)).withConfiguration(
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class,
WebClientAutoConfiguration.class, SpringBootAdminClientAutoConfiguration.class));
reactiveContextRunner.withPropertyValues("spring.boot.admin.client.url:http://localhost:8081")
.run((context) -> assertThat(context).hasSingleBean(ApplicationRegistrator.class));
}

@Configuration
static class CustomBlockingConfiguration {

@Bean
public RegistrationClient registrationClient() {
return new BlockingRegistrationClient(new RestTemplate());
}

}

}

0 comments on commit 73dff1c

Please sign in to comment.