summaryrefslogtreecommitdiffstats
path: root/container-core
diff options
context:
space:
mode:
authorgjoranv <gjoranv@gmail.com>2018-05-23 13:16:57 +0200
committerGitHub <noreply@github.com>2018-05-23 13:16:57 +0200
commitce4245cadc7acfe407f21eb8b55ed40f557e241e (patch)
tree364185fc883ca31e9616fba7ad1a1d5f6feca565 /container-core
parente3615e953e154cee870c36eb79c135c0f4fc9436 (diff)
Revert "Revert "Remove empty filter chains from filter chain repo.""
Diffstat (limited to 'container-core')
-rw-r--r--container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java14
1 files changed, 13 insertions, 1 deletions
diff --git a/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java b/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java
index e4ec09e3948..31bceca9337 100644
--- a/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java
+++ b/container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java
@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Set;
+import java.util.logging.Logger;
import static java.util.Collections.emptyList;
import static java.util.stream.Collectors.toList;
@@ -37,6 +38,7 @@ import static java.util.stream.Collectors.toSet;
* @author bjorncs
*/
public class FilterChainRepository extends AbstractComponent {
+ private static final Logger log = Logger.getLogger(FilterChainRepository.class.getName());
private final ComponentRegistry<Object> filterAndChains;
@@ -77,12 +79,23 @@ public class FilterChainRepository extends AbstractComponent {
ChainRegistry<FilterWrapper> chainRegistry = new ChainRegistry<>();
ChainsModel chainsModel = ChainsModelBuilder.buildFromConfig(chainsConfig);
ChainsConfigurer.prepareChainRegistry(chainRegistry, chainsModel, allFiltersWrapped(filters));
+ removeEmptyChains(chainRegistry);
chainRegistry.freeze();
return chainRegistry;
}
+ private static void removeEmptyChains(ChainRegistry<FilterWrapper> chainRegistry) {
+ chainRegistry.allComponents().stream()
+ .filter(chain -> chain.components().isEmpty())
+ .map(Chain::getId)
+ .peek(id -> log.warning("Removing empty filter chain: " + id))
+ .forEach(chainRegistry::unregister);
+ }
+
@SuppressWarnings("unchecked")
private static Object toJDiscChain(Chain<FilterWrapper> chain) {
+ if (chain.components().isEmpty())
+ throw new IllegalArgumentException("Empty filter chain: " + chain.getId());
checkFilterTypesCompatible(chain);
List<?> jdiscFilters = chain.components().stream()
.map(filterWrapper -> filterWrapper.filter)
@@ -98,7 +111,6 @@ public class FilterChainRepository extends AbstractComponent {
}
private static List<?> wrapSecurityFilters(List<?> filters) {
- if (filters.isEmpty()) return emptyList();
List<Object> aggregatedSecurityFilters = new ArrayList<>();
List<Object> wrappedFilters = new ArrayList<>();
for (Object filter : filters) {