diff --git a/src/main/java/org/springframework/cloud/gateway/actuate/GatewayEndpoint.java b/src/main/java/org/springframework/cloud/gateway/actuate/GatewayEndpoint.java index 9cce4330..a0bd7ff7 100644 --- a/src/main/java/org/springframework/cloud/gateway/actuate/GatewayEndpoint.java +++ b/src/main/java/org/springframework/cloud/gateway/actuate/GatewayEndpoint.java @@ -2,7 +2,7 @@ package org.springframework.cloud.gateway.actuate; import org.springframework.boot.actuate.endpoint.AbstractEndpoint; import org.springframework.boot.context.properties.ConfigurationProperties; -import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.core.annotation.AnnotationAwareOrderComparator; import java.util.ArrayList; @@ -15,9 +15,9 @@ import java.util.Map; */ @ConfigurationProperties(prefix = "endpoints.gateway") public class GatewayEndpoint extends AbstractEndpoint> { - private List filters; + private List filters; - public GatewayEndpoint(List filters) { + public GatewayEndpoint(List filters) { super("gateway"); this.filters = filters; AnnotationAwareOrderComparator.sort(this.filters); @@ -28,7 +28,7 @@ public class GatewayEndpoint extends AbstractEndpoint> { HashMap map = new HashMap<>(); ArrayList filterNames = new ArrayList<>(); - for (GatewayFilter filter : this.filters) { + for (GlobalFilter filter : this.filters) { filterNames.add(filter.getClass().getName()); } map.put("filters", filterNames); diff --git a/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java b/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java index 25166b84..e3d46b33 100644 --- a/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java +++ b/src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java @@ -9,7 +9,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.gateway.actuate.GatewayEndpoint; import org.springframework.cloud.gateway.api.RouteReader; -import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.RouteToRequestUrlFilter; import org.springframework.cloud.gateway.filter.WriteResponseFilter; import org.springframework.cloud.gateway.filter.route.AddRequestHeaderRouteFilter; @@ -21,9 +21,9 @@ import org.springframework.cloud.gateway.filter.route.RouteFilter; import org.springframework.cloud.gateway.filter.route.SetPathRouteFilter; import org.springframework.cloud.gateway.filter.route.SetResponseHeaderRouteFilter; import org.springframework.cloud.gateway.filter.route.SetStatusRouteFilter; -import org.springframework.cloud.gateway.handler.GatewayFilteringWebHandler; -import org.springframework.cloud.gateway.handler.GatewayPredicateHandlerMapping; -import org.springframework.cloud.gateway.handler.GatewayWebHandler; +import org.springframework.cloud.gateway.handler.FilteringWebHandler; +import org.springframework.cloud.gateway.handler.RoutePredicateHandlerMapping; +import org.springframework.cloud.gateway.handler.WebClientRoutingWebHandler; import org.springframework.cloud.gateway.handler.predicate.CookieRoutePredicate; import org.springframework.cloud.gateway.handler.predicate.HeaderRoutePredicate; import org.springframework.cloud.gateway.handler.predicate.HostRoutePredicate; @@ -61,25 +61,25 @@ public class GatewayAutoConfiguration { } @Bean - public GatewayWebHandler gatewayWebHandler(WebClient webClient) { - return new GatewayWebHandler(webClient); + public WebClientRoutingWebHandler webClientRoutingWebHandler(WebClient webClient) { + return new WebClientRoutingWebHandler(webClient); } @Bean - public GatewayFilteringWebHandler gatewayFilteringWebHandler(GatewayWebHandler webHandler, - List gatewayFilters, - Map routeFilters) { - return new GatewayFilteringWebHandler(webHandler, gatewayFilters, routeFilters); + public FilteringWebHandler filteringWebHandler(WebClientRoutingWebHandler webHandler, + List globalFilters, + Map routeFilters) { + return new FilteringWebHandler(webHandler, globalFilters, routeFilters); } @Bean - public GatewayPredicateHandlerMapping gatewayPredicateHandlerMapping(GatewayFilteringWebHandler webHandler, - Map predicates, - RouteReader routeReader) { - return new GatewayPredicateHandlerMapping(webHandler, predicates, routeReader); + public RoutePredicateHandlerMapping routePredicateHandlerMapping(FilteringWebHandler webHandler, + Map predicates, + RouteReader routeReader) { + return new RoutePredicateHandlerMapping(webHandler, predicates, routeReader); } - // GatewayFilter beans + // GlobalFilter beans @Bean public RouteToRequestUrlFilter routeToRequestUrlFilter() { @@ -170,7 +170,7 @@ public class GatewayAutoConfiguration { protected static class GatewayActuatorConfiguration { @Bean - public GatewayEndpoint gatewayEndpoint(List filters) { + public GatewayEndpoint gatewayEndpoint(List filters) { return new GatewayEndpoint(filters); } } diff --git a/src/main/java/org/springframework/cloud/gateway/filter/GatewayFilter.java b/src/main/java/org/springframework/cloud/gateway/filter/GlobalFilter.java similarity index 97% rename from src/main/java/org/springframework/cloud/gateway/filter/GatewayFilter.java rename to src/main/java/org/springframework/cloud/gateway/filter/GlobalFilter.java index 5f5161e1..d105d5be 100644 --- a/src/main/java/org/springframework/cloud/gateway/filter/GatewayFilter.java +++ b/src/main/java/org/springframework/cloud/gateway/filter/GlobalFilter.java @@ -29,7 +29,7 @@ import reactor.core.publisher.Mono; * @author Rossen Stoyanchev * @since 5.0 */ -public interface GatewayFilter { +public interface GlobalFilter { /** * Process the Web request and (optionally) delegate to the next diff --git a/src/main/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilter.java b/src/main/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilter.java index 6a05df73..10f641fe 100644 --- a/src/main/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilter.java +++ b/src/main/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilter.java @@ -18,7 +18,7 @@ import reactor.core.publisher.Mono; /** * @author Spencer Gibb */ -public class RouteToRequestUrlFilter implements GatewayFilter, Ordered { +public class RouteToRequestUrlFilter implements GlobalFilter, Ordered { private static final Log log = LogFactory.getLog(RouteToRequestUrlFilter.class); public static final int ROUTE_TO_URL_FILTER_ORDER = 10000; diff --git a/src/main/java/org/springframework/cloud/gateway/filter/WriteResponseFilter.java b/src/main/java/org/springframework/cloud/gateway/filter/WriteResponseFilter.java index c8236517..3882e5cc 100644 --- a/src/main/java/org/springframework/cloud/gateway/filter/WriteResponseFilter.java +++ b/src/main/java/org/springframework/cloud/gateway/filter/WriteResponseFilter.java @@ -19,7 +19,7 @@ import reactor.core.publisher.Mono; /** * @author Spencer Gibb */ -public class WriteResponseFilter implements GatewayFilter, Ordered { +public class WriteResponseFilter implements GlobalFilter, Ordered { private static final Log log = LogFactory.getLog(WriteResponseFilter.class); diff --git a/src/main/java/org/springframework/cloud/gateway/handler/GatewayFilteringWebHandler.java b/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java similarity index 83% rename from src/main/java/org/springframework/cloud/gateway/handler/GatewayFilteringWebHandler.java rename to src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java index b452c606..b95f834c 100644 --- a/src/main/java/org/springframework/cloud/gateway/handler/GatewayFilteringWebHandler.java +++ b/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java @@ -29,7 +29,7 @@ import java.util.stream.Collectors; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.cloud.gateway.config.Route; -import org.springframework.cloud.gateway.filter.GatewayFilter; +import org.springframework.cloud.gateway.filter.GlobalFilter; import org.springframework.cloud.gateway.filter.route.RouteFilter; import org.springframework.core.Ordered; import org.springframework.core.annotation.AnnotationAwareOrderComparator; @@ -45,22 +45,23 @@ import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.G import reactor.core.publisher.Mono; /** - * WebHandler that delegates to a chain of {@link GatewayFilter} instances and then - * to the target {@link WebHandler}. + * WebHandler that delegates to a chain of {@link GlobalFilter} instances and + * {@link RouteFilter} instances then to the target {@link WebHandler}. * * @author Rossen Stoyanchev - * @since 5.0 + * @author Spencer Gibb + * @since 0.1 */ -public class GatewayFilteringWebHandler extends WebHandlerDecorator { +public class FilteringWebHandler extends WebHandlerDecorator { protected final Log logger = LogFactory.getLog(getClass()); - private final List filters; + private final List globalFilters; private final Map routeFilters = new HashMap<>(); - public GatewayFilteringWebHandler(WebHandler targetHandler, List filters, - Map routeFilters) { + public FilteringWebHandler(WebHandler targetHandler, List globalFilters, + Map routeFilters) { super(targetHandler); - this.filters = initList(filters); + this.globalFilters = initList(globalFilters); routeFilters.forEach((name, def) -> this.routeFilters.put(nornamlizeName(name), def)); } @@ -73,16 +74,16 @@ public class GatewayFilteringWebHandler extends WebHandlerDecorator { } /** - * Return a read-only list of the configured filters. + * Return a read-only list of the configured globalFilters. */ - public List getFilters() { - return this.filters; + public List getGlobalFilters() { + return this.globalFilters; } @Override public Mono handle(ServerWebExchange exchange) { //TODO: probably a java 8 stream way of doing this - ArrayList routeFilters = new ArrayList<>(loadGatewayFilters(this.filters)); + ArrayList routeFilters = new ArrayList<>(loadFilters(this.globalFilters)); Optional route = exchange.getAttribute(GATEWAY_ROUTE_ATTR); if (route.isPresent() && !route.get().getFilters().isEmpty()) { @@ -94,10 +95,10 @@ public class GatewayFilteringWebHandler extends WebHandlerDecorator { return new DefaultWebFilterChain(routeFilters, getDelegate()).filter(exchange); } - private Collection loadGatewayFilters(List filters) { + private Collection loadFilters(List filters) { return filters.stream() .map(filter -> { - GatewayWebFilter webFilter = new GatewayWebFilter(filter); + WebFilterAdapter webFilter = new WebFilterAdapter(filter); if (filter instanceof Ordered) { int order = ((Ordered) filter).getOrder(); return new OrderedWebFilter(webFilter, order); @@ -135,11 +136,11 @@ public class GatewayFilteringWebHandler extends WebHandlerDecorator { return ordered; } - private static class GatewayWebFilter implements WebFilter { + private static class WebFilterAdapter implements WebFilter { - private final GatewayFilter delegate; + private final GlobalFilter delegate; - public GatewayWebFilter(GatewayFilter delegate) { + public WebFilterAdapter(GlobalFilter delegate) { this.delegate = delegate; } @@ -150,7 +151,7 @@ public class GatewayFilteringWebHandler extends WebHandlerDecorator { @Override public String toString() { - final StringBuilder sb = new StringBuilder("GatewayWebFilter{"); + final StringBuilder sb = new StringBuilder("WebFilterAdapter{"); sb.append("delegate=").append(delegate); sb.append('}'); return sb.toString(); diff --git a/src/main/java/org/springframework/cloud/gateway/handler/GatewayPredicateHandlerMapping.java b/src/main/java/org/springframework/cloud/gateway/handler/RoutePredicateHandlerMapping.java similarity index 96% rename from src/main/java/org/springframework/cloud/gateway/handler/GatewayPredicateHandlerMapping.java rename to src/main/java/org/springframework/cloud/gateway/handler/RoutePredicateHandlerMapping.java index 74aacb0d..4330233a 100644 --- a/src/main/java/org/springframework/cloud/gateway/handler/GatewayPredicateHandlerMapping.java +++ b/src/main/java/org/springframework/cloud/gateway/handler/RoutePredicateHandlerMapping.java @@ -24,7 +24,7 @@ import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.G /** * @author Spencer Gibb */ -public class GatewayPredicateHandlerMapping extends AbstractHandlerMapping { +public class RoutePredicateHandlerMapping extends AbstractHandlerMapping { private Map predicates = new LinkedHashMap<>(); private RouteReader routeReader; @@ -32,8 +32,8 @@ public class GatewayPredicateHandlerMapping extends AbstractHandlerMapping { private List routes; - public GatewayPredicateHandlerMapping(WebHandler webHandler, Map predicates, - RouteReader routeReader) { + public RoutePredicateHandlerMapping(WebHandler webHandler, Map predicates, + RouteReader routeReader) { this.webHandler = webHandler; this.routeReader = routeReader; diff --git a/src/main/java/org/springframework/cloud/gateway/handler/GatewayWebHandler.java b/src/main/java/org/springframework/cloud/gateway/handler/WebClientRoutingWebHandler.java similarity index 93% rename from src/main/java/org/springframework/cloud/gateway/handler/GatewayWebHandler.java rename to src/main/java/org/springframework/cloud/gateway/handler/WebClientRoutingWebHandler.java index 5da4cc83..69e74229 100644 --- a/src/main/java/org/springframework/cloud/gateway/handler/GatewayWebHandler.java +++ b/src/main/java/org/springframework/cloud/gateway/handler/WebClientRoutingWebHandler.java @@ -18,11 +18,11 @@ import reactor.core.publisher.Mono; /** * @author Spencer Gibb */ -public class GatewayWebHandler implements WebHandler { +public class WebClientRoutingWebHandler implements WebHandler { private final WebClient webClient; - public GatewayWebHandler(WebClient webClient) { + public WebClientRoutingWebHandler(WebClient webClient) { this.webClient = webClient; } diff --git a/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java b/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java index 6cdc04b1..63782110 100644 --- a/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java +++ b/src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java @@ -14,8 +14,8 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.context.embedded.LocalServerPort; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.cloud.gateway.config.Route; -import org.springframework.cloud.gateway.filter.GatewayFilter; -import org.springframework.cloud.gateway.handler.GatewayPredicateHandlerMapping; +import org.springframework.cloud.gateway.filter.GlobalFilter; +import org.springframework.cloud.gateway.handler.RoutePredicateHandlerMapping; import org.springframework.context.annotation.Bean; import org.springframework.core.annotation.Order; import org.springframework.http.HttpHeaders; @@ -142,7 +142,7 @@ public class GatewayIntegrationTests { HttpHeaders httpHeaders = response.headers().asHttpHeaders(); HttpStatus statusCode = response.statusCode(); assertThat(httpHeaders.getFirst(HANDLER_MAPPER_HEADER)) - .isEqualTo(GatewayPredicateHandlerMapping.class.getSimpleName()); + .isEqualTo(RoutePredicateHandlerMapping.class.getSimpleName()); assertThat(httpHeaders.getFirst(ROUTE_ID_HEADER)) .isEqualTo("host_foo_path_headers_to_httpbin"); assertThat(httpHeaders.getFirst("X-Response-Foo")) @@ -169,7 +169,7 @@ public class GatewayIntegrationTests { HttpHeaders httpHeaders = response.headers().asHttpHeaders(); HttpStatus statusCode = response.statusCode(); assertThat(httpHeaders.getFirst(HANDLER_MAPPER_HEADER)) - .isEqualTo(GatewayPredicateHandlerMapping.class.getSimpleName()); + .isEqualTo(RoutePredicateHandlerMapping.class.getSimpleName()); assertThat(httpHeaders.getFirst(ROUTE_ID_HEADER)) .isEqualTo("host_example_to_httpbin"); assertThat(statusCode).isEqualTo(HttpStatus.OK); @@ -342,7 +342,7 @@ public class GatewayIntegrationTests { HttpHeaders httpHeaders = response.headers().asHttpHeaders(); HttpStatus statusCode = response.statusCode(); assertThat(httpHeaders.getFirst(HANDLER_MAPPER_HEADER)) - .isEqualTo(GatewayPredicateHandlerMapping.class.getSimpleName()); + .isEqualTo(RoutePredicateHandlerMapping.class.getSimpleName()); assertThat(httpHeaders.getFirst(ROUTE_ID_HEADER)) .isEqualTo("default_path_to_httpbin"); assertThat(statusCode).isEqualTo(HttpStatus.OK); @@ -360,7 +360,7 @@ public class GatewayIntegrationTests { @Bean @Order(500) - public GatewayFilter modifyResponseFilter() { + public GlobalFilter modifyResponseFilter() { return (exchange, chain) -> { log.info("modifyResponseFilter start"); String value = (String) exchange.getAttribute(GATEWAY_HANDLER_MAPPER_ATTR).orElse("N/A"); @@ -375,7 +375,7 @@ public class GatewayIntegrationTests { @Bean @Order(-1) - public GatewayFilter postFilter() { + public GlobalFilter postFilter() { return (exchange, chain) -> { log.info("postFilter start"); return chain.filter(exchange).then(postFilterWork(exchange));