@ -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.Gateway Filter ;
import org.springframework.cloud.gateway.filter.Global Filter ;
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 Gateway Filter } instances and then
* to the target { @link WebHandler } .
* WebHandler that delegates to a chain of { @link Global Filter } 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 Gateway FilteringWebHandler extends WebHandlerDecorator {
public class FilteringWebHandler extends WebHandlerDecorator {
protected final Log logger = LogFactory . getLog ( getClass ( ) ) ;
private final List < GatewayFilter > f ilters ;
private final List < GlobalFilter > globalF ilters ;
private final Map < String , RouteFilter > routeFilters = new HashMap < > ( ) ;
public Gateway FilteringWebHandler( WebHandler targetHandler , List < GatewayFilter > f ilters ,
Map < String , RouteFilter > routeFilters ) {
public FilteringWebHandler ( WebHandler targetHandler , List < GlobalFilter > globalF ilters ,
Map < String , RouteFilter > routeFilters ) {
super ( targetHandler ) ;
this . f ilters = initList ( f ilters) ;
this . globalF ilters = initList ( globalF ilters) ;
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 f ilters.
* Return a read - only list of the configured globalF ilters.
* /
public List < Gateway Filter > getFilters ( ) {
return this . f ilters;
public List < Global Filter > getGlobal Filters ( ) {
return this . globalF ilters;
}
@Override
public Mono < Void > handle ( ServerWebExchange exchange ) {
//TODO: probably a java 8 stream way of doing this
ArrayList < WebFilter > routeFilters = new ArrayList < > ( loadGateway Filters ( this . f ilters) ) ;
ArrayList < WebFilter > routeFilters = new ArrayList < > ( loadFilters ( this . globalF ilters) ) ;
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 > loadGateway Filters ( List < Gateway Filter > filters ) {
private Collection < WebFilter > loadFilters ( List < Global Filter > filters ) {
return filters . stream ( )
. map ( filter - > {
Gateway WebFilter webFilter = new Gateway WebFilter( filter ) ;
WebFilterAdap ter webFilter = new WebFilterAdap ter ( 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 Gateway WebFilter implements WebFilter {
private static class WebFilterAdap ter implements WebFilter {
private final Gateway Filter delegate ;
private final Global Filter delegate ;
public Gateway WebFilter( Gateway Filter delegate ) {
public WebFilterAdap ter ( Global Filter 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 ( "Gateway WebFilter{" ) ;
final StringBuilder sb = new StringBuilder ( "WebFilterAdap ter{" ) ;
sb . append ( "delegate=" ) . append ( delegate ) ;
sb . append ( '}' ) ;
return sb . toString ( ) ;