From d7bfdd85bf272cc64320b90deff5bd87b84d4a88 Mon Sep 17 00:00:00 2001 From: Spencer Gibb Date: Wed, 15 Mar 2017 12:32:20 -0600 Subject: [PATCH] Change initializing map to use `computeIfAbsent` --- .../gateway/handler/FilteringWebHandler.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java index 84712720..5bad99b0 100644 --- a/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java +++ b/spring-cloud-gateway-core/src/main/java/org/springframework/cloud/gateway/handler/FilteringWebHandler.java @@ -114,25 +114,25 @@ public class FilteringWebHandler extends WebHandlerDecorator { if (!route.isPresent()) { return Collections.emptyList(); } - List combinedFilters = this.combinedFiltersForRoute.get(route.get().getId()); - if (combinedFilters == null) { + List combinedFilters = this.combinedFiltersForRoute.computeIfAbsent( + route.get().getId(), s -> { //TODO: probably a java 8 stream way of doing this - combinedFilters = new ArrayList<>(loadFilters(this.globalFilters)); + List combined = new ArrayList<>(loadFilters(this.globalFilters)); //TODO: support option to apply defaults after route specific filters? if (!this.gatewayProperties.getDefaultFilters().isEmpty()) { - combinedFilters.addAll(loadWebFilters("defaultFilters", + combined.addAll(loadWebFilters("defaultFilters", this.gatewayProperties.getDefaultFilters())); } if (route.isPresent() && !route.get().getFilters().isEmpty()) { - combinedFilters.addAll(loadWebFilters(route.get().getId(), route.get().getFilters())); + combined.addAll(loadWebFilters(route.get().getId(), route.get().getFilters())); } - AnnotationAwareOrderComparator.sort(combinedFilters); - this.combinedFiltersForRoute.put(route.get().getId(), combinedFilters); - } + AnnotationAwareOrderComparator.sort(combined); + return combined; + }); return combinedFilters; }