From 28a7da86ceda46590cf922040f6cc2c1b93c37c0 Mon Sep 17 00:00:00 2001 From: spencergibb Date: Fri, 27 Sep 2024 13:15:39 -0400 Subject: [PATCH] Moves enabled filter out of GatewayProperties Since GatewayProperties is just a holder, I moved the business logic of filtering to PropertiesRouteDefinitionLocator See gh-3026 --- .../cloud/gateway/config/GatewayProperties.java | 2 +- .../config/PropertiesRouteDefinitionLocator.java | 2 +- .../gateway/test/GatewayIntegrationTests.java | 16 +++++++++------- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayProperties.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayProperties.java index a2b8acac..53ea714c 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayProperties.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/GatewayProperties.java @@ -69,7 +69,7 @@ public class GatewayProperties { private boolean failOnRouteDefinitionError = true; public List getRoutes() { - return routes.stream().filter(RouteDefinition::isEnabled).toList(); + return routes; } public void setRoutes(List routes) { diff --git a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/PropertiesRouteDefinitionLocator.java b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/PropertiesRouteDefinitionLocator.java index e7b038ac..724fbcb7 100644 --- a/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/PropertiesRouteDefinitionLocator.java +++ b/spring-cloud-gateway-server/src/main/java/org/springframework/cloud/gateway/config/PropertiesRouteDefinitionLocator.java @@ -34,7 +34,7 @@ public class PropertiesRouteDefinitionLocator implements RouteDefinitionLocator @Override public Flux getRouteDefinitions() { - return Flux.fromIterable(this.properties.getRoutes()); + return Flux.fromIterable(this.properties.getRoutes()).filter(RouteDefinition::isEnabled); } } diff --git a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java index b2fcfc5a..e79e8e0a 100644 --- a/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java +++ b/spring-cloud-gateway-server/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java @@ -39,7 +39,6 @@ import org.springframework.cloud.gateway.filter.headers.ForwardedHeadersFilter; import org.springframework.cloud.gateway.filter.headers.XForwardedHeadersFilter; import org.springframework.cloud.gateway.handler.RoutePredicateHandlerMapping; import org.springframework.cloud.gateway.route.CachingRouteLocator; -import org.springframework.cloud.gateway.route.Route; import org.springframework.cloud.gateway.route.RouteDefinition; import org.springframework.context.ApplicationContext; import org.springframework.context.ApplicationListener; @@ -84,12 +83,15 @@ class GatewayIntegrationTests extends BaseWebClientTests { } @Test - void checkDisabledFilterNotPresent() { - Optional disabledRoute = properties.getRoutes().stream() - .filter(r -> "disabled_config_test".equals(r.getId())) - .findFirst(); - assertThat(disabledRoute).as("Disabled route is not present") - .isEmpty(); + void checkFilterIsDisabled() { + Optional disabledRoute = properties.getRoutes() + .stream() + .filter(r -> "disabled_config_test".equals(r.getId())) + .findFirst(); + assertThat(disabledRoute).as("Disabled route is present") + .isPresent() + .get() + .hasFieldOrPropertyWithValue("enabled", false); } @Test