diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java index 2bbdb64e..8531d608 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/route/RouteDefinitionRouteLocator.java @@ -134,36 +134,30 @@ public class RouteDefinitionRouteLocator implements RouteLocator, BeanFactoryAwa } @SuppressWarnings("unchecked") - private List loadGatewayFilters(String id, List filterDefinitions) { - List filters = filterDefinitions.stream() - .map(definition -> { - GatewayFilterFactory factory = this.gatewayFilterFactories.get(definition.getName()); - if (factory == null) { - throw new IllegalArgumentException("Unable to find GatewayFilterFactory with name " + definition.getName()); - } - Map args = definition.getArgs(); - if (logger.isDebugEnabled()) { - logger.debug("RouteDefinition " + id + " applying filter " + args + " to " + definition.getName()); - } + List loadGatewayFilters(String id, List filterDefinitions) { + ArrayList ordered = new ArrayList<>(filterDefinitions.size()); + for (int i = 0; i < filterDefinitions.size(); i++) { + FilterDefinition definition = filterDefinitions.get(i); + GatewayFilterFactory factory = this.gatewayFilterFactories.get(definition.getName()); + if (factory == null) { + throw new IllegalArgumentException("Unable to find GatewayFilterFactory with name " + definition.getName()); + } + Map args = definition.getArgs(); + if (logger.isDebugEnabled()) { + logger.debug("RouteDefinition " + id + " applying filter " + args + " to " + definition.getName()); + } - Map properties = factory.shortcutType().normalize(args, factory, this.parser, this.beanFactory); + Map properties = factory.shortcutType().normalize(args, factory, this.parser, this.beanFactory); - Object configuration = factory.newConfig(); + Object configuration = factory.newConfig(); - ConfigurationUtils.bind(configuration, properties, - factory.shortcutFieldPrefix(), definition.getName(), validator); + ConfigurationUtils.bind(configuration, properties, + factory.shortcutFieldPrefix(), definition.getName(), validator); - GatewayFilter gatewayFilter = factory.apply(configuration); - if (this.publisher != null) { - this.publisher.publishEvent(new FilterArgsEvent(this, id, properties)); - } - return gatewayFilter; - }) - .collect(Collectors.toList()); - - ArrayList ordered = new ArrayList<>(filters.size()); - for (int i = 0; i < filters.size(); i++) { - GatewayFilter gatewayFilter = filters.get(i); + GatewayFilter gatewayFilter = factory.apply(configuration); + if (this.publisher != null) { + this.publisher.publishEvent(new FilterArgsEvent(this, id, properties)); + } if (gatewayFilter instanceof Ordered) { ordered.add(gatewayFilter); }