From e9e1af8a91887d1a204e1385c091a6c8fd4af743 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Fri, 17 Mar 2017 16:46:12 -0600 Subject: [PATCH] rename DefaultRouteLocator to RouteDefinitionRouteLocator --- .../config/GatewayAutoConfiguration.java | 20 ++++++++++++++----- ....java => RouteDefinitionRouteLocator.java} | 20 +++++++++---------- 2 files changed, 25 insertions(+), 15 deletions(-) rename spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/{DefaultRouteLocator.java => RouteDefinitionRouteLocator.java} (96%) 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 428097f4..419f1d84 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 @@ -20,9 +20,11 @@ package org.springframework.cloud.gateway.config; import java.util.List; import org.springframework.boot.actuate.endpoint.Endpoint; +import org.springframework.boot.autoconfigure.AutoConfigureBefore; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean; +import org.springframework.boot.autoconfigure.web.reactive.HttpHandlerAutoConfiguration; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.client.loadbalancer.LoadBalancerClient; import org.springframework.cloud.gateway.actuate.GatewayEndpoint; @@ -65,7 +67,7 @@ import org.springframework.cloud.gateway.handler.predicate.QueryRequestPredicate import org.springframework.cloud.gateway.handler.predicate.RemoteAddrRequestPredicateFactory; import org.springframework.cloud.gateway.handler.predicate.RequestPredicateFactory; import org.springframework.cloud.gateway.support.CachingRouteLocator; -import org.springframework.cloud.gateway.support.DefaultRouteLocator; +import org.springframework.cloud.gateway.support.RouteDefinitionRouteLocator; import org.springframework.cloud.gateway.support.InMemoryRouteDefinitionRepository; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @@ -81,6 +83,7 @@ import rx.RxReactiveStreams; @Configuration @ConditionalOnBean(GatewayConfiguration.Marker.class) @EnableConfigurationProperties +@AutoConfigureBefore(HttpHandlerAutoConfiguration.class) public class GatewayAutoConfiguration { @Configuration @@ -113,13 +116,12 @@ public class GatewayAutoConfiguration { } @Bean - @ConditionalOnMissingBean - public RouteLocator defaultRouteLocator(GatewayProperties properties, List globalFilters, + public RouteLocator routeDefinitionRouteLocator(GatewayProperties properties, List globalFilters, List webFilterFactories, List predicates, RouteDefinitionLocator routeDefinitionLocator) { - return new CachingRouteLocator(new DefaultRouteLocator(properties, routeDefinitionLocator, - predicates, globalFilters, webFilterFactories)); + return new CachingRouteLocator(new RouteDefinitionRouteLocator(routeDefinitionLocator, predicates, globalFilters, webFilterFactories, properties + )); } @Bean @@ -302,6 +304,14 @@ public class GatewayAutoConfiguration { return new InMemoryRouteDefinitionRepository(); } + /*@Bean + public RouterFunction test() { + RouterFunction route = RouterFunctions.route( + RequestPredicates.path("/testfun"), + request -> ServerResponse.ok().body(BodyInserters.fromObject("hello"))); + return route; + }*/ + @Configuration @ConditionalOnClass(Endpoint.class) protected static class GatewayActuatorConfiguration { diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/DefaultRouteLocator.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/RouteDefinitionRouteLocator.java similarity index 96% rename from spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/DefaultRouteLocator.java rename to spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/RouteDefinitionRouteLocator.java index 4580686e..b908042b 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/DefaultRouteLocator.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/support/RouteDefinitionRouteLocator.java @@ -24,7 +24,6 @@ import org.springframework.cloud.gateway.api.RouteLocator; import org.springframework.cloud.gateway.config.GatewayProperties; import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.factory.WebFilterFactory; -import org.springframework.cloud.gateway.handler.FilteringWebHandler; import org.springframework.cloud.gateway.handler.predicate.RequestPredicateFactory; import org.springframework.cloud.gateway.model.FilterDefinition; import org.springframework.cloud.gateway.model.PredicateDefinition; @@ -52,27 +51,28 @@ import java.util.stream.Collectors; import static java.util.Collections.emptyList; /** + * {@link RouteLocator} that loads routes from a {@link RouteDefinitionLocator} * @author Spencer Gibb */ -public class DefaultRouteLocator implements RouteLocator { +public class RouteDefinitionRouteLocator implements RouteLocator { protected final Log logger = LogFactory.getLog(getClass()); - private final GatewayProperties gatewayProperties; private final RouteDefinitionLocator routeDefinitionLocator; private final Map requestPredicates = new LinkedHashMap<>(); private final List globalFilters; private final Map webFilterFactories = new HashMap<>(); + private final GatewayProperties gatewayProperties; - public DefaultRouteLocator(GatewayProperties gatewayProperties, - RouteDefinitionLocator routeDefinitionLocator, - List requestPredicates, - List globalFilters, - List webFilterFactories) { - this.gatewayProperties = gatewayProperties; + public RouteDefinitionRouteLocator(RouteDefinitionLocator routeDefinitionLocator, + List requestPredicates, + List globalFilters, + List webFilterFactories, + GatewayProperties gatewayProperties) { this.routeDefinitionLocator = routeDefinitionLocator; - this.globalFilters = initList(globalFilters); initFactories(requestPredicates); + this.globalFilters = initList(globalFilters); webFilterFactories.forEach(factory -> this.webFilterFactories.put(factory.name(), factory)); + this.gatewayProperties = gatewayProperties; } private static List initList(List list) {