Skip to content

Commit 06647de

Browse files
snicollphilwebb
authored andcommitted
Move Actuator infrastructure for WebFlux to spring-boot-webflux
Issue: 46138
1 parent 7495fcc commit 06647de

File tree

41 files changed

+239
-105
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+239
-105
lines changed

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryWebFluxEndpointHandlerMapping.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
import org.springframework.boot.actuate.endpoint.web.ExposableWebEndpoint;
4242
import org.springframework.boot.actuate.endpoint.web.Link;
4343
import org.springframework.boot.actuate.endpoint.web.WebOperation;
44-
import org.springframework.boot.actuate.endpoint.web.reactive.AbstractWebFluxEndpointHandlerMapping;
44+
import org.springframework.boot.webflux.actuate.endpoint.web.AbstractWebFluxEndpointHandlerMapping;
4545
import org.springframework.context.annotation.ImportRuntimeHints;
4646
import org.springframework.http.HttpStatus;
4747
import org.springframework.http.ResponseEntity;

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/main/java/org/springframework/boot/actuate/autoconfigure/web/exchanges/HttpExchangesAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@
1818

1919
import org.springframework.boot.actuate.web.exchanges.HttpExchange;
2020
import org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository;
21-
import org.springframework.boot.actuate.web.exchanges.reactive.HttpExchangesWebFilter;
2221
import org.springframework.boot.actuate.web.exchanges.servlet.HttpExchangesFilter;
2322
import org.springframework.boot.autoconfigure.AutoConfiguration;
2423
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
@@ -28,6 +27,7 @@
2827
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication;
2928
import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication.Type;
3029
import org.springframework.boot.context.properties.EnableConfigurationProperties;
30+
import org.springframework.boot.webflux.actuate.web.exchanges.HttpExchangesWebFilter;
3131
import org.springframework.context.annotation.Bean;
3232
import org.springframework.context.annotation.Configuration;
3333

Original file line numberDiff line numberDiff line change
@@ -1,3 +1 @@
1-
org.springframework.boot.actuate.autoconfigure.endpoint.web.reactive.WebFluxEndpointManagementContextConfiguration
21
org.springframework.boot.actuate.autoconfigure.security.servlet.SecurityRequestMatchersManagementContextConfiguration
3-
org.springframework.boot.actuate.autoconfigure.web.reactive.ReactiveManagementChildContextConfiguration

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebFluxEndpointCorsIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323
import org.springframework.boot.actuate.autoconfigure.beans.BeansEndpointAutoConfiguration;
2424
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
2525
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
26-
import org.springframework.boot.actuate.autoconfigure.endpoint.web.reactive.WebFluxEndpointManagementContextConfiguration;
2726
import org.springframework.boot.actuate.autoconfigure.web.server.ManagementContextAutoConfiguration;
2827
import org.springframework.boot.autoconfigure.AutoConfigurations;
2928
import org.springframework.boot.http.codec.autoconfigure.CodecsAutoConfiguration;
3029
import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration;
3130
import org.springframework.boot.test.context.runner.ContextConsumer;
3231
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
3332
import org.springframework.boot.web.context.reactive.ReactiveWebApplicationContext;
33+
import org.springframework.boot.webflux.actuate.autoconfigure.endpoint.web.WebFluxEndpointManagementContextConfiguration;
3434
import org.springframework.boot.webflux.autoconfigure.HttpHandlerAutoConfiguration;
3535
import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration;
3636
import org.springframework.http.HttpHeaders;

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/integrationtest/WebFluxHealthEndpointAdditionalPathIntegrationTests.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.springframework.boot.web.context.reactive.ConfigurableReactiveWebApplicationContext;
3333
import org.springframework.boot.web.server.context.ServerPortInfoApplicationContextInitializer;
3434
import org.springframework.boot.web.server.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
35+
import org.springframework.boot.webflux.actuate.autoconfigure.health.WebFluxHealthEndpointExtensionAutoConfiguration;
3536
import org.springframework.boot.webflux.autoconfigure.HttpHandlerAutoConfiguration;
3637
import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration;
3738

@@ -47,9 +48,9 @@ class WebFluxHealthEndpointAdditionalPathIntegrationTests extends
4748
super(new ReactiveWebApplicationContextRunner(AnnotationConfigReactiveWebServerApplicationContext::new)
4849
.withConfiguration(AutoConfigurations.of(JacksonAutoConfiguration.class, CodecsAutoConfiguration.class,
4950
WebFluxAutoConfiguration.class, HttpHandlerAutoConfiguration.class, EndpointAutoConfiguration.class,
50-
HealthEndpointAutoConfiguration.class, DiskSpaceHealthContributorAutoConfiguration.class,
51-
WebEndpointAutoConfiguration.class, ManagementContextAutoConfiguration.class,
52-
NettyReactiveWebServerAutoConfiguration.class,
51+
HealthEndpointAutoConfiguration.class, WebFluxHealthEndpointExtensionAutoConfiguration.class,
52+
DiskSpaceHealthContributorAutoConfiguration.class, WebEndpointAutoConfiguration.class,
53+
ManagementContextAutoConfiguration.class, NettyReactiveWebServerAutoConfiguration.class,
5354
NettyReactiveManagementContextAutoConfiguration.class, BeansEndpointAutoConfiguration.class))
5455
.withInitializer(new ServerPortInfoApplicationContextInitializer())
5556
.withPropertyValues("server.port=0"));

spring-boot-project/spring-boot-actuator-autoconfigure-all/src/test/java/org/springframework/boot/actuate/autoconfigure/web/exchanges/HttpExchangesAutoConfigurationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,11 +25,11 @@
2525
import org.springframework.boot.actuate.web.exchanges.HttpExchangeRepository;
2626
import org.springframework.boot.actuate.web.exchanges.InMemoryHttpExchangeRepository;
2727
import org.springframework.boot.actuate.web.exchanges.Include;
28-
import org.springframework.boot.actuate.web.exchanges.reactive.HttpExchangesWebFilter;
2928
import org.springframework.boot.actuate.web.exchanges.servlet.HttpExchangesFilter;
3029
import org.springframework.boot.autoconfigure.AutoConfigurations;
3130
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
3231
import org.springframework.boot.test.context.runner.WebApplicationContextRunner;
32+
import org.springframework.boot.webflux.actuate.web.exchanges.HttpExchangesWebFilter;
3333
import org.springframework.context.annotation.Bean;
3434
import org.springframework.context.annotation.Configuration;
3535

spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/health/HealthEndpointReactiveWebExtensionConfiguration.java

Lines changed: 0 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -16,15 +16,8 @@
1616

1717
package org.springframework.boot.actuate.autoconfigure.health;
1818

19-
import java.util.Collection;
20-
2119
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnAvailableEndpoint;
2220
import org.springframework.boot.actuate.autoconfigure.endpoint.expose.EndpointExposure;
23-
import org.springframework.boot.actuate.endpoint.web.EndpointMapping;
24-
import org.springframework.boot.actuate.endpoint.web.ExposableWebEndpoint;
25-
import org.springframework.boot.actuate.endpoint.web.WebEndpointsSupplier;
26-
import org.springframework.boot.actuate.endpoint.web.WebServerNamespace;
27-
import org.springframework.boot.actuate.endpoint.web.reactive.AdditionalHealthEndpointPathsWebFluxHandlerMapping;
2821
import org.springframework.boot.actuate.health.HealthEndpoint;
2922
import org.springframework.boot.actuate.health.HealthEndpointGroups;
3023
import org.springframework.boot.actuate.health.ReactiveHealthContributorRegistry;
@@ -58,21 +51,4 @@ ReactiveHealthEndpointWebExtension reactiveHealthEndpointWebExtension(
5851
properties.getLogging().getSlowIndicatorThreshold());
5952
}
6053

61-
@Configuration(proxyBeanMethods = false)
62-
static class WebFluxAdditionalHealthEndpointPathsConfiguration {
63-
64-
@Bean
65-
AdditionalHealthEndpointPathsWebFluxHandlerMapping healthEndpointWebFluxHandlerMapping(
66-
WebEndpointsSupplier webEndpointsSupplier, HealthEndpointGroups groups) {
67-
Collection<ExposableWebEndpoint> webEndpoints = webEndpointsSupplier.getEndpoints();
68-
ExposableWebEndpoint health = webEndpoints.stream()
69-
.filter((endpoint) -> endpoint.getEndpointId().equals(HealthEndpoint.ID))
70-
.findFirst()
71-
.orElse(null);
72-
return new AdditionalHealthEndpointPathsWebFluxHandlerMapping(new EndpointMapping(""), health,
73-
groups.getAllWithAdditionalPath(WebServerNamespace.SERVER));
74-
}
75-
76-
}
77-
7854
}

spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/health/HealthEndpointAutoConfigurationTests.java

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,11 @@
2424
import reactor.core.publisher.Mono;
2525

2626
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
27-
import org.springframework.boot.actuate.autoconfigure.endpoint.condition.WithTestEndpointOutcomeExposureContributor;
2827
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
2928
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointConfiguration.HealthEndpointGroupMembershipValidator.NoSuchHealthContributorException;
30-
import org.springframework.boot.actuate.autoconfigure.health.HealthEndpointReactiveWebExtensionConfiguration.WebFluxAdditionalHealthEndpointPathsConfiguration;
3129
import org.springframework.boot.actuate.endpoint.ApiVersion;
3230
import org.springframework.boot.actuate.endpoint.SecurityContext;
3331
import org.springframework.boot.actuate.endpoint.web.WebEndpointResponse;
34-
import org.springframework.boot.actuate.endpoint.web.WebEndpointsSupplier;
3532
import org.springframework.boot.actuate.endpoint.web.WebServerNamespace;
3633
import org.springframework.boot.actuate.health.CompositeHealthContributor;
3734
import org.springframework.boot.actuate.health.DefaultHealthContributorRegistry;
@@ -340,23 +337,6 @@ void runWithReactiveContextAndIndicatorsInParentContextFindsIndicators() {
340337
}));
341338
}
342339

343-
@Test
344-
@WithTestEndpointOutcomeExposureContributor
345-
void additionalReactiveHealthEndpointsPathsTolerateHealthEndpointThatIsNotWebExposed() {
346-
this.reactiveContextRunner
347-
.withConfiguration(
348-
AutoConfigurations.of(EndpointAutoConfiguration.class, WebEndpointAutoConfiguration.class))
349-
.withPropertyValues("management.endpoints.web.exposure.exclude=*",
350-
"management.endpoints.test.exposure.include=*")
351-
.run((context) -> {
352-
assertThat(context).hasNotFailed();
353-
assertThat(context).hasSingleBean(HealthEndpoint.class);
354-
assertThat(context).hasSingleBean(ReactiveHealthEndpointWebExtension.class);
355-
assertThat(context.getBean(WebEndpointsSupplier.class).getEndpoints()).isEmpty();
356-
assertThat(context).hasSingleBean(WebFluxAdditionalHealthEndpointPathsConfiguration.class);
357-
});
358-
}
359-
360340
@Configuration(proxyBeanMethods = false)
361341
static class HealthIndicatorsConfiguration {
362342

spring-boot-project/spring-boot-actuator-docs/src/test/java/org/springframework/boot/actuate/docs/AbstractEndpointDocumentationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,13 +31,13 @@
3131
import org.springframework.boot.actuate.autoconfigure.endpoint.EndpointAutoConfiguration;
3232
import org.springframework.boot.actuate.autoconfigure.endpoint.jackson.JacksonEndpointAutoConfiguration;
3333
import org.springframework.boot.actuate.autoconfigure.endpoint.web.WebEndpointAutoConfiguration;
34-
import org.springframework.boot.actuate.autoconfigure.endpoint.web.reactive.WebFluxEndpointManagementContextConfiguration;
3534
import org.springframework.boot.actuate.docs.AbstractEndpointDocumentationTests.BaseDocumentationConfiguration;
3635
import org.springframework.boot.actuate.endpoint.jackson.EndpointObjectMapper;
3736
import org.springframework.boot.autoconfigure.ImportAutoConfiguration;
3837
import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration;
3938
import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration;
4039
import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration;
40+
import org.springframework.boot.webflux.actuate.autoconfigure.endpoint.web.WebFluxEndpointManagementContextConfiguration;
4141
import org.springframework.boot.webflux.autoconfigure.HttpHandlerAutoConfiguration;
4242
import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration;
4343
import org.springframework.boot.webmvc.actuate.autoconfigure.endpoint.web.WebMvcEndpointManagementContextConfiguration;

spring-boot-project/spring-boot-actuator-integration-tests/src/test/java/org/springframework/boot/actuate/endpoint/web/reactive/ControllerEndpointHandlerMappingIntegrationTests.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
import org.springframework.boot.test.context.runner.ContextConsumer;
3939
import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner;
4040
import org.springframework.boot.web.server.reactive.context.AnnotationConfigReactiveWebServerApplicationContext;
41+
import org.springframework.boot.webflux.actuate.endpoint.web.ControllerEndpointHandlerMapping;
4142
import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration;
4243
import org.springframework.context.ApplicationContext;
4344
import org.springframework.context.annotation.Bean;

0 commit comments

Comments
 (0)