diff options
author | jonmv <venstad@gmail.com> | 2024-06-28 07:19:10 +0200 |
---|---|---|
committer | jonmv <venstad@gmail.com> | 2024-06-28 07:19:10 +0200 |
commit | 47df1a39960805906ea97f7f47390142689336ec (patch) | |
tree | c3017d1a0d75111e8c6ab27e93d9295b2f30d0da /container-core/src/main/java/com/yahoo/container | |
parent | 1b83df15841dd6afdccbc52bb068ec00e1b28800 (diff) |
Revert "Merge pull request #31745 from vespa-engine/revert-31709-jonmv/provide-filter-on-data-plane-filters"
This reverts commit 1b83df15841dd6afdccbc52bb068ec00e1b28800, reversing
changes made to fbc5944cf8c46f29f4be8525fabf327d1571eede.
Diffstat (limited to 'container-core/src/main/java/com/yahoo/container')
-rw-r--r-- | container-core/src/main/java/com/yahoo/container/http/filter/FilterChainRepository.java | 26 |
1 files changed, 18 insertions, 8 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 10f8400fa37..7d9aea8fd63 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 @@ -7,6 +7,8 @@ import com.yahoo.component.ComponentSpecification; import com.yahoo.component.chain.Chain; import com.yahoo.component.chain.ChainedComponent; import com.yahoo.component.chain.ChainsConfigurer; +import com.yahoo.component.chain.dependencies.Dependencies; +import com.yahoo.component.chain.model.Chainable; import com.yahoo.component.chain.model.ChainsModel; import com.yahoo.component.chain.model.ChainsModelBuilder; import com.yahoo.component.provider.ComponentRegistry; @@ -65,16 +67,18 @@ public class FilterChainRepository extends AbstractComponent { } } + @SafeVarargs private static void addAllChains(ComponentRegistry<Object> destination, ChainsConfig chainsConfig, - ComponentRegistry<?>... filters) { + ComponentRegistry<? extends Chainable>... filters) { ChainRegistry<FilterWrapper> chainRegistry = buildChainRegistry(chainsConfig, filters); chainRegistry.allComponents() .forEach(chain -> destination.register(chain.getId(), toJDiscChain(chain))); } + @SafeVarargs private static ChainRegistry<FilterWrapper> buildChainRegistry(ChainsConfig chainsConfig, - ComponentRegistry<?>... filters) { + ComponentRegistry<? extends Chainable>... filters) { ChainRegistry<FilterWrapper> chainRegistry = new ChainRegistry<>(); ChainsModel chainsModel = ChainsModelBuilder.buildFromConfig(chainsConfig); ChainsConfigurer.prepareChainRegistry(chainRegistry, chainsModel, allFiltersWrapped(filters)); @@ -146,9 +150,10 @@ public class FilterChainRepository extends AbstractComponent { } } - private static ComponentRegistry<FilterWrapper> allFiltersWrapped(ComponentRegistry<?>... registries) { + @SafeVarargs + private static ComponentRegistry<FilterWrapper> allFiltersWrapped(ComponentRegistry<? extends Chainable>... registries) { ComponentRegistry<FilterWrapper> wrappedFilters = new ComponentRegistry<>(); - for (ComponentRegistry<?> registry : registries) { + for (ComponentRegistry<? extends Chainable> registry : registries) { registry.allComponentsById() .forEach((id, filter) -> wrappedFilters.register(id, new FilterWrapper(id, filter))); } @@ -176,16 +181,21 @@ public class FilterChainRepository extends AbstractComponent { } private static class FilterWrapper extends ChainedComponent { - public final Object filter; - public final Class<?> filterType; + public final Chainable filter; + public final Class<? extends Chainable> filterType; - public FilterWrapper(ComponentId id, Object filter) { + public FilterWrapper(ComponentId id, Chainable filter) { super(id); this.filter = filter; this.filterType = getFilterType(filter); } - private static Class<?> getFilterType(Object filter) { + @Override + public Dependencies getAnnotatedDependencies() { + return filter == null ? super.getAnnotatedDependencies() : filter.getAnnotatedDependencies(); + } + + private static Class<? extends Chainable> getFilterType(Object filter) { if (filter instanceof RequestFilter) return RequestFilter.class; else if (filter instanceof ResponseFilter) |