From 2db4852e231f58e8c2faccdf7feea08077a62a87 Mon Sep 17 00:00:00 2001 From: Eric Anderson Date: Mon, 7 Apr 2025 14:26:14 -0700 Subject: [PATCH] core: Loop over interceptors when computing effective interceptors A post-merge review of 8516cfef9 suggested this change and the comment had been lost in my inbox. --- .../internal/ManagedChannelImplBuilder.java | 20 +++++++++---------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/core/src/main/java/io/grpc/internal/ManagedChannelImplBuilder.java b/core/src/main/java/io/grpc/internal/ManagedChannelImplBuilder.java index 20f7e901dd..fc3c789100 100644 --- a/core/src/main/java/io/grpc/internal/ManagedChannelImplBuilder.java +++ b/core/src/main/java/io/grpc/internal/ManagedChannelImplBuilder.java @@ -737,18 +737,16 @@ public final class ManagedChannelImplBuilder // TODO(zdapeng): FIX IT @VisibleForTesting List getEffectiveInterceptors(String computedTarget) { - List effectiveInterceptors = new ArrayList<>(this.interceptors); - for (int i = 0; i < effectiveInterceptors.size(); i++) { - if (!(effectiveInterceptors.get(i) instanceof InterceptorFactoryWrapper)) { - continue; + List effectiveInterceptors = new ArrayList<>(this.interceptors.size()); + for (ClientInterceptor interceptor : this.interceptors) { + if (interceptor instanceof InterceptorFactoryWrapper) { + InterceptorFactory factory = ((InterceptorFactoryWrapper) interceptor).factory; + interceptor = factory.newInterceptor(computedTarget); + if (interceptor == null) { + throw new NullPointerException("Factory returned null interceptor: " + factory); + } } - InterceptorFactory factory = - ((InterceptorFactoryWrapper) effectiveInterceptors.get(i)).factory; - ClientInterceptor interceptor = factory.newInterceptor(computedTarget); - if (interceptor == null) { - throw new NullPointerException("Factory returned null interceptor: " + factory); - } - effectiveInterceptors.set(i, interceptor); + effectiveInterceptors.add(interceptor); } boolean disableImplicitCensus = InternalConfiguratorRegistry.wasSetConfiguratorsCalled();