From 1e38e767aa387c95bd05e05e15719a5923167c44 Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Thu, 22 Sep 2022 11:59:16 +0200 Subject: [PATCH] Optimize convertCustomFilterList() Rather than creating a temporary collection, use Streams.concat() to acquire a combined stream. Also collect directly to an ImmutableList, so that we do not have two objects allocated. Change-Id: Id9fdaa2f83524cdf0c8cc133f8cab9e1767c94c0 Signed-off-by: Robert Varga --- .../CustomFilterAdapterConfigurationImpl.java | 17 ++++++----------- 1 file changed, 6 insertions(+), 11 deletions(-) diff --git a/aaa-filterchain/src/main/java/org/opendaylight/aaa/filterchain/configuration/impl/CustomFilterAdapterConfigurationImpl.java b/aaa-filterchain/src/main/java/org/opendaylight/aaa/filterchain/configuration/impl/CustomFilterAdapterConfigurationImpl.java index 45a9c7dba..4848c240c 100644 --- a/aaa-filterchain/src/main/java/org/opendaylight/aaa/filterchain/configuration/impl/CustomFilterAdapterConfigurationImpl.java +++ b/aaa-filterchain/src/main/java/org/opendaylight/aaa/filterchain/configuration/impl/CustomFilterAdapterConfigurationImpl.java @@ -12,16 +12,15 @@ import static java.util.Objects.requireNonNull; import com.google.common.base.Strings; import com.google.common.collect.ImmutableList; import com.google.common.collect.Iterators; +import com.google.common.collect.Streams; import java.util.Collection; import java.util.Collections; import java.util.Enumeration; import java.util.HashMap; -import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; -import java.util.stream.Collectors; import java.util.stream.Stream; import javax.servlet.Filter; import javax.servlet.FilterConfig; @@ -144,11 +143,8 @@ public final class CustomFilterAdapterConfigurationImpl implements CustomFilterA * The newly injected FilterDTO list */ private void updateListener(final CustomFilterAdapterListener listener) { - final Optional listenerServletContext = extractServletContext(listener); - final List filterList = convertCustomFilterList(listenerServletContext); - + final var filterList = convertCustomFilterList(extractServletContext(listener)); LOG.debug("Notifying listener {} of filters {}", listener, filterList); - listener.updateInjectedFilters(filterList); } @@ -176,11 +172,10 @@ public final class CustomFilterAdapterConfigurationImpl implements CustomFilterA * a list of class names, ideally Filters * @return a list of derived Filter(s) */ - private List convertCustomFilterList(final Optional listenerServletContext) { - final List filterList = ImmutableList.builder().addAll(namedFilterDTOs) - .addAll(instanceFilterDTOs).build().stream().flatMap( - filter -> getFilterInstance(filter, listenerServletContext)).collect(Collectors.toList()); - return Collections.unmodifiableList(filterList); + private ImmutableList convertCustomFilterList(final Optional listenerServletContext) { + return Streams.concat(namedFilterDTOs.stream(), instanceFilterDTOs.stream()) + .flatMap(filter -> getFilterInstance(filter, listenerServletContext)) + .collect(ImmutableList.toImmutableList()); } /** -- 2.36.6