From 1bdcee593092918ca7af686edec686d443480082 Mon Sep 17 00:00:00 2001 From: Dave Syer Date: Thu, 12 Sep 2024 12:28:44 +0100 Subject: [PATCH] Add path parameter to GrpcChannelConfigurer --- .../grpc/client/DefaultGrpcChannelFactory.java | 14 ++++++++++---- .../grpc/client/GrpcChannelConfigurer.java | 14 ++------------ .../grpc/server/GrpcServerConfigurer.java | 10 ---------- 3 files changed, 12 insertions(+), 26 deletions(-) diff --git a/spring-grpc-core/src/main/java/org/springframework/grpc/client/DefaultGrpcChannelFactory.java b/spring-grpc-core/src/main/java/org/springframework/grpc/client/DefaultGrpcChannelFactory.java index ac73953..9c43be2 100644 --- a/spring-grpc-core/src/main/java/org/springframework/grpc/client/DefaultGrpcChannelFactory.java +++ b/spring-grpc-core/src/main/java/org/springframework/grpc/client/DefaultGrpcChannelFactory.java @@ -30,6 +30,8 @@ import io.grpc.ManagedChannelBuilder; public class DefaultGrpcChannelFactory implements GrpcChannelFactory, DisposableBean { + private final Map> builders = new ConcurrentHashMap<>(); + private final Map channels = new ConcurrentHashMap<>(); private final List configurers = new ArrayList<>(); @@ -43,11 +45,15 @@ public class DefaultGrpcChannelFactory implements GrpcChannelFactory, Disposable @Override public ManagedChannelBuilder createChannel(String authority) { - ManagedChannelBuilder target = Grpc.newChannelBuilder(authority, InsecureChannelCredentials.create()); - for (GrpcChannelConfigurer configurer : configurers) { - configurer.accept(target); - } + ManagedChannelBuilder target = builders.computeIfAbsent(authority, path -> { + ManagedChannelBuilder builder = Grpc.newChannelBuilder(path, InsecureChannelCredentials.create()); + for (GrpcChannelConfigurer configurer : configurers) { + configurer.accept(path, builder); + } + return builder; + }); return new DisposableChannelBuilder(authority, target); + } @Override diff --git a/spring-grpc-core/src/main/java/org/springframework/grpc/client/GrpcChannelConfigurer.java b/spring-grpc-core/src/main/java/org/springframework/grpc/client/GrpcChannelConfigurer.java index d5d4ab3..71b20e3 100644 --- a/spring-grpc-core/src/main/java/org/springframework/grpc/client/GrpcChannelConfigurer.java +++ b/spring-grpc-core/src/main/java/org/springframework/grpc/client/GrpcChannelConfigurer.java @@ -15,21 +15,11 @@ */ package org.springframework.grpc.client; -import java.util.Objects; -import java.util.function.Consumer; +import java.util.function.BiConsumer; import io.grpc.ManagedChannelBuilder; @FunctionalInterface -public interface GrpcChannelConfigurer extends Consumer> { - - @Override - default GrpcChannelConfigurer andThen(final Consumer> after) { - Objects.requireNonNull(after); - return t -> { - accept(t); - after.accept(t); - }; - } +public interface GrpcChannelConfigurer extends BiConsumer> { } diff --git a/spring-grpc-core/src/main/java/org/springframework/grpc/server/GrpcServerConfigurer.java b/spring-grpc-core/src/main/java/org/springframework/grpc/server/GrpcServerConfigurer.java index 7cf39dd..1e692c3 100644 --- a/spring-grpc-core/src/main/java/org/springframework/grpc/server/GrpcServerConfigurer.java +++ b/spring-grpc-core/src/main/java/org/springframework/grpc/server/GrpcServerConfigurer.java @@ -15,7 +15,6 @@ */ package org.springframework.grpc.server; -import java.util.Objects; import java.util.function.Consumer; import io.grpc.ServerBuilder; @@ -23,13 +22,4 @@ import io.grpc.ServerBuilder; @FunctionalInterface public interface GrpcServerConfigurer extends Consumer> { - @Override - default GrpcServerConfigurer andThen(final Consumer> after) { - Objects.requireNonNull(after); - return t -> { - accept(t); - after.accept(t); - }; - } - }