From d13f3052643782b47bb13fe4b3377915ed1c0215 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Mon, 22 Jan 2018 13:03:21 -0500 Subject: [PATCH] Uses new @ControllerEndpoint for gateway endpoint. fixes gh-153 --- ...point.java => GatewayControllerEndpoint.java} | 14 +++++++------- .../gateway/config/GatewayAutoConfiguration.java | 16 ++++++++-------- .../sample/GatewaySampleApplicationTests.java | 3 --- 3 files changed, 15 insertions(+), 18 deletions(-) rename spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/actuate/{GatewayWebfluxEndpoint.java => GatewayControllerEndpoint.java} (92%) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/actuate/GatewayWebfluxEndpoint.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/actuate/GatewayControllerEndpoint.java similarity index 92% rename from spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/actuate/GatewayWebfluxEndpoint.java rename to spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/actuate/GatewayControllerEndpoint.java index e81c599ac..1cd4d045c 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/actuate/GatewayWebfluxEndpoint.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/actuate/GatewayControllerEndpoint.java @@ -24,6 +24,7 @@ import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.springframework.boot.actuate.endpoint.web.annotation.ControllerEndpoint; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.factory.GatewayFilterFactory; import org.springframework.cloud.gateway.route.RefreshRoutesEvent; @@ -42,7 +43,6 @@ import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; import reactor.core.publisher.Flux; @@ -52,10 +52,10 @@ import reactor.core.publisher.Mono; * @author Spencer Gibb */ @RestController -@RequestMapping("${management.endpoints.web.base-path:/actuator}/gateway") -public class GatewayWebfluxEndpoint implements ApplicationEventPublisherAware { +@ControllerEndpoint(id = "gateway") +public class GatewayControllerEndpoint implements ApplicationEventPublisherAware { - private static final Log log = LogFactory.getLog(GatewayWebfluxEndpoint.class); + private static final Log log = LogFactory.getLog(GatewayControllerEndpoint.class); private RouteDefinitionLocator routeDefinitionLocator; private List globalFilters; @@ -64,9 +64,9 @@ public class GatewayWebfluxEndpoint implements ApplicationEventPublisherAware { private RouteLocator routeLocator; private ApplicationEventPublisher publisher; - public GatewayWebfluxEndpoint(RouteDefinitionLocator routeDefinitionLocator, List globalFilters, - List GatewayFilters, RouteDefinitionWriter routeDefinitionWriter, - RouteLocator routeLocator) { + public GatewayControllerEndpoint(RouteDefinitionLocator routeDefinitionLocator, List globalFilters, + List GatewayFilters, RouteDefinitionWriter routeDefinitionWriter, + RouteLocator routeLocator) { this.routeDefinitionLocator = routeDefinitionLocator; this.globalFilters = globalFilters; this.GatewayFilters = GatewayFilters; diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java index 566562e86..99c1b5342 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java @@ -22,7 +22,7 @@ import java.util.function.Consumer; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.annotation.Qualifier; -import org.springframework.boot.actuate.autoconfigure.web.ManagementContextConfiguration; +import org.springframework.boot.actuate.autoconfigure.endpoint.condition.ConditionalOnEnabledEndpoint; import org.springframework.boot.actuate.health.Health; import org.springframework.boot.autoconfigure.AutoConfigureAfter; import org.springframework.boot.autoconfigure.AutoConfigureBefore; @@ -32,7 +32,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty; import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; -import org.springframework.cloud.gateway.actuate.GatewayWebfluxEndpoint; +import org.springframework.cloud.gateway.actuate.GatewayControllerEndpoint; import org.springframework.cloud.gateway.filter.ForwardRoutingFilter; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.HttpHeadersFilter; @@ -409,16 +409,16 @@ public class GatewayAutoConfiguration { return new SaveSessionGatewayFilterFactory(); } - @ManagementContextConfiguration - @ConditionalOnProperty(value = "management.gateway.enabled", matchIfMissing = true) + @Configuration @ConditionalOnClass(Health.class) protected static class GatewayActuatorConfiguration { @Bean - public GatewayWebfluxEndpoint gatewayWebfluxEndpoint(RouteDefinitionLocator routeDefinitionLocator, List globalFilters, - List GatewayFilters, RouteDefinitionWriter routeDefinitionWriter, - RouteLocator routeLocator) { - return new GatewayWebfluxEndpoint(routeDefinitionLocator, globalFilters, GatewayFilters, routeDefinitionWriter, routeLocator); + @ConditionalOnEnabledEndpoint + public GatewayControllerEndpoint gatewayControllerEndpoint(RouteDefinitionLocator routeDefinitionLocator, List globalFilters, + List GatewayFilters, RouteDefinitionWriter routeDefinitionWriter, + RouteLocator routeLocator) { + return new GatewayControllerEndpoint(routeDefinitionLocator, globalFilters, GatewayFilters, routeDefinitionWriter, routeLocator); } } diff --git a/spring-cloud-gateway-sample/src/test/java/org/springframework/cloud/gateway/sample/GatewaySampleApplicationTests.java b/spring-cloud-gateway-sample/src/test/java/org/springframework/cloud/gateway/sample/GatewaySampleApplicationTests.java index 98a2f0746..b298462e3 100644 --- a/spring-cloud-gateway-sample/src/test/java/org/springframework/cloud/gateway/sample/GatewaySampleApplicationTests.java +++ b/spring-cloud-gateway-sample/src/test/java/org/springframework/cloud/gateway/sample/GatewaySampleApplicationTests.java @@ -20,10 +20,8 @@ package org.springframework.cloud.gateway.sample; import org.junit.AfterClass; import org.junit.Before; import org.junit.BeforeClass; -import org.junit.Ignore; import org.junit.Test; import org.junit.runner.RunWith; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.web.server.LocalServerPort; import org.springframework.test.context.junit4.SpringRunner; @@ -84,7 +82,6 @@ public class GatewaySampleApplicationTests { } @Test - @Ignore // waiting on https://github.com/spring-projects/spring-boot/issues/10257 public void actuatorManagementPort() { webClient.get() .uri("http://localhost:"+managementPort+"/actuator/gateway/routes")