Browse Source

polish and renaming

pull/41/head
Spencer Gibb 8 years ago
parent
commit
7afc0c13a6
No known key found for this signature in database
GPG Key ID: 7788A47380690861
  1. 8
      src/main/java/org/springframework/cloud/gateway/actuate/GatewayEndpoint.java
  2. 32
      src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java
  3. 2
      src/main/java/org/springframework/cloud/gateway/filter/GlobalFilter.java
  4. 2
      src/main/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilter.java
  5. 2
      src/main/java/org/springframework/cloud/gateway/filter/WriteResponseFilter.java
  6. 39
      src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java
  7. 6
      src/main/java/org/springframework/cloud/gateway/handler/RoutePredicateHandlerMapping.java
  8. 4
      src/main/java/org/springframework/cloud/gateway/handler/WebClientRoutingWebHandler.java
  9. 14
      src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java

8
src/main/java/org/springframework/cloud/gateway/actuate/GatewayEndpoint.java

@ -2,7 +2,7 @@ package org.springframework.cloud.gateway.actuate; @@ -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; @@ -15,9 +15,9 @@ import java.util.Map;
*/
@ConfigurationProperties(prefix = "endpoints.gateway")
public class GatewayEndpoint extends AbstractEndpoint<Map<String, Object>> {
private List<GatewayFilter> filters;
private List<GlobalFilter> filters;
public GatewayEndpoint(List<GatewayFilter> filters) {
public GatewayEndpoint(List<GlobalFilter> filters) {
super("gateway");
this.filters = filters;
AnnotationAwareOrderComparator.sort(this.filters);
@ -28,7 +28,7 @@ public class GatewayEndpoint extends AbstractEndpoint<Map<String, Object>> { @@ -28,7 +28,7 @@ public class GatewayEndpoint extends AbstractEndpoint<Map<String, Object>> {
HashMap<String, Object> map = new HashMap<>();
ArrayList<String> filterNames = new ArrayList<>();
for (GatewayFilter filter : this.filters) {
for (GlobalFilter filter : this.filters) {
filterNames.add(filter.getClass().getName());
}
map.put("filters", filterNames);

32
src/main/java/org/springframework/cloud/gateway/config/GatewayAutoConfiguration.java

@ -9,7 +9,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean @@ -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; @@ -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 { @@ -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<GatewayFilter> gatewayFilters,
Map<String, RouteFilter> routeFilters) {
return new GatewayFilteringWebHandler(webHandler, gatewayFilters, routeFilters);
public FilteringWebHandler filteringWebHandler(WebClientRoutingWebHandler webHandler,
List<GlobalFilter> globalFilters,
Map<String, RouteFilter> routeFilters) {
return new FilteringWebHandler(webHandler, globalFilters, routeFilters);
}
@Bean
public GatewayPredicateHandlerMapping gatewayPredicateHandlerMapping(GatewayFilteringWebHandler webHandler,
Map<String, RoutePredicate> predicates,
RouteReader routeReader) {
return new GatewayPredicateHandlerMapping(webHandler, predicates, routeReader);
public RoutePredicateHandlerMapping routePredicateHandlerMapping(FilteringWebHandler webHandler,
Map<String, RoutePredicate> predicates,
RouteReader routeReader) {
return new RoutePredicateHandlerMapping(webHandler, predicates, routeReader);
}
// GatewayFilter beans
// GlobalFilter beans
@Bean
public RouteToRequestUrlFilter routeToRequestUrlFilter() {
@ -170,7 +170,7 @@ public class GatewayAutoConfiguration { @@ -170,7 +170,7 @@ public class GatewayAutoConfiguration {
protected static class GatewayActuatorConfiguration {
@Bean
public GatewayEndpoint gatewayEndpoint(List<GatewayFilter> filters) {
public GatewayEndpoint gatewayEndpoint(List<GlobalFilter> filters) {
return new GatewayEndpoint(filters);
}
}

2
src/main/java/org/springframework/cloud/gateway/filter/GatewayFilter.java → src/main/java/org/springframework/cloud/gateway/filter/GlobalFilter.java

@ -29,7 +29,7 @@ import reactor.core.publisher.Mono; @@ -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

2
src/main/java/org/springframework/cloud/gateway/filter/RouteToRequestUrlFilter.java

@ -18,7 +18,7 @@ import reactor.core.publisher.Mono; @@ -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;

2
src/main/java/org/springframework/cloud/gateway/filter/WriteResponseFilter.java

@ -19,7 +19,7 @@ import reactor.core.publisher.Mono; @@ -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);

39
src/main/java/org/springframework/cloud/gateway/handler/GatewayFilteringWebHandler.java → src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java

@ -29,7 +29,7 @@ import java.util.stream.Collectors; @@ -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 @@ -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<GatewayFilter> filters;
private final List<GlobalFilter> globalFilters;
private final Map<String, RouteFilter> routeFilters = new HashMap<>();
public GatewayFilteringWebHandler(WebHandler targetHandler, List<GatewayFilter> filters,
Map<String, RouteFilter> routeFilters) {
public FilteringWebHandler(WebHandler targetHandler, List<GlobalFilter> globalFilters,
Map<String, RouteFilter> 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 { @@ -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<GatewayFilter> getFilters() {
return this.filters;
public List<GlobalFilter> getGlobalFilters() {
return this.globalFilters;
}
@Override
public Mono<Void> handle(ServerWebExchange exchange) {
//TODO: probably a java 8 stream way of doing this
ArrayList<WebFilter> routeFilters = new ArrayList<>(loadGatewayFilters(this.filters));
ArrayList<WebFilter> routeFilters = new ArrayList<>(loadFilters(this.globalFilters));
Optional<Route> route = exchange.getAttribute(GATEWAY_ROUTE_ATTR);
if (route.isPresent() && !route.get().getFilters().isEmpty()) {
@ -94,10 +95,10 @@ public class GatewayFilteringWebHandler extends WebHandlerDecorator { @@ -94,10 +95,10 @@ public class GatewayFilteringWebHandler extends WebHandlerDecorator {
return new DefaultWebFilterChain(routeFilters, getDelegate()).filter(exchange);
}
private Collection<WebFilter> loadGatewayFilters(List<GatewayFilter> filters) {
private Collection<WebFilter> loadFilters(List<GlobalFilter> 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 { @@ -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 { @@ -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();

6
src/main/java/org/springframework/cloud/gateway/handler/GatewayPredicateHandlerMapping.java → src/main/java/org/springframework/cloud/gateway/handler/RoutePredicateHandlerMapping.java

@ -24,7 +24,7 @@ import static org.springframework.cloud.gateway.support.ServerWebExchangeUtils.G @@ -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<String, RoutePredicate> predicates = new LinkedHashMap<>();
private RouteReader routeReader;
@ -32,8 +32,8 @@ public class GatewayPredicateHandlerMapping extends AbstractHandlerMapping { @@ -32,8 +32,8 @@ public class GatewayPredicateHandlerMapping extends AbstractHandlerMapping {
private List<Route> routes;
public GatewayPredicateHandlerMapping(WebHandler webHandler, Map<String, RoutePredicate> predicates,
RouteReader routeReader) {
public RoutePredicateHandlerMapping(WebHandler webHandler, Map<String, RoutePredicate> predicates,
RouteReader routeReader) {
this.webHandler = webHandler;
this.routeReader = routeReader;

4
src/main/java/org/springframework/cloud/gateway/handler/GatewayWebHandler.java → src/main/java/org/springframework/cloud/gateway/handler/WebClientRoutingWebHandler.java

@ -18,11 +18,11 @@ import reactor.core.publisher.Mono; @@ -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;
}

14
src/test/java/org/springframework/cloud/gateway/test/GatewayIntegrationTests.java

@ -14,8 +14,8 @@ import org.springframework.boot.autoconfigure.EnableAutoConfiguration; @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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 { @@ -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));

Loading…
Cancel
Save