From a598b973a399d57d54339a12d9a0c952245fa9fd Mon Sep 17 00:00:00 2001 From: Chengyuan Zhang Date: Sun, 28 Feb 2021 23:36:27 -0800 Subject: [PATCH] api: add ServerBuilder.addServices() API (#7926) --- .../java/io/grpc/alts/AltsServerBuilder.java | 8 ++++++++ .../java/io/grpc/ForwardingServerBuilder.java | 7 +++++++ api/src/main/java/io/grpc/ServerBuilder.java | 19 +++++++++++++++++++ .../internal/AbstractServerImplBuilder.java | 7 +++++++ 4 files changed, 41 insertions(+) diff --git a/alts/src/main/java/io/grpc/alts/AltsServerBuilder.java b/alts/src/main/java/io/grpc/alts/AltsServerBuilder.java index 108b294e21..1c98409944 100644 --- a/alts/src/main/java/io/grpc/alts/AltsServerBuilder.java +++ b/alts/src/main/java/io/grpc/alts/AltsServerBuilder.java @@ -30,6 +30,7 @@ import io.grpc.ServerTransportFilter; import io.grpc.netty.NettyServerBuilder; import java.io.File; import java.net.InetSocketAddress; +import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; @@ -117,6 +118,13 @@ public final class AltsServerBuilder extends ServerBuilder { return this; } + /** {@inheritDoc} */ + @Override + public AltsServerBuilder addServices(List services) { + delegate.addServices(services); + return this; + } + /** {@inheritDoc} */ @Override public AltsServerBuilder fallbackHandlerRegistry(HandlerRegistry fallbackRegistry) { diff --git a/api/src/main/java/io/grpc/ForwardingServerBuilder.java b/api/src/main/java/io/grpc/ForwardingServerBuilder.java index 27358d0699..5be391824d 100644 --- a/api/src/main/java/io/grpc/ForwardingServerBuilder.java +++ b/api/src/main/java/io/grpc/ForwardingServerBuilder.java @@ -19,6 +19,7 @@ package io.grpc; import com.google.common.base.MoreObjects; import java.io.File; import java.io.InputStream; +import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; @@ -71,6 +72,12 @@ public abstract class ForwardingServerBuilder> extend return thisT(); } + @Override + public T addServices(List services) { + delegate().addServices(services); + return thisT(); + } + @Override public T intercept(ServerInterceptor interceptor) { delegate().intercept(interceptor); diff --git a/api/src/main/java/io/grpc/ServerBuilder.java b/api/src/main/java/io/grpc/ServerBuilder.java index 64a63ad2ac..fdad0d0554 100644 --- a/api/src/main/java/io/grpc/ServerBuilder.java +++ b/api/src/main/java/io/grpc/ServerBuilder.java @@ -16,9 +16,12 @@ package io.grpc; +import static com.google.common.base.Preconditions.checkNotNull; + import com.google.common.base.Preconditions; import java.io.File; import java.io.InputStream; +import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; @@ -89,6 +92,22 @@ public abstract class ServerBuilder> { */ public abstract T addService(BindableService bindableService); + /** + * Adds a list of service implementations to the handler registry together. + * + * @param services the list of ServerServiceDefinition objects + * @return this + * @since 1.37.0 + */ + @ExperimentalApi("https://github.com/grpc/grpc-java/issues/7925") + public T addServices(List services) { + checkNotNull(services, "services"); + for (ServerServiceDefinition service : services) { + addService(service); + } + return thisT(); + } + /** * Adds a {@link ServerInterceptor} that is run for all services on the server. Interceptors * added through this method always run before per-service interceptors added through {@link diff --git a/core/src/main/java/io/grpc/internal/AbstractServerImplBuilder.java b/core/src/main/java/io/grpc/internal/AbstractServerImplBuilder.java index 715161c063..37d3dc66ff 100644 --- a/core/src/main/java/io/grpc/internal/AbstractServerImplBuilder.java +++ b/core/src/main/java/io/grpc/internal/AbstractServerImplBuilder.java @@ -30,6 +30,7 @@ import io.grpc.ServerStreamTracer; import io.grpc.ServerTransportFilter; import java.io.File; import java.io.InputStream; +import java.util.List; import java.util.concurrent.Executor; import java.util.concurrent.TimeUnit; import javax.annotation.Nullable; @@ -85,6 +86,12 @@ public abstract class AbstractServerImplBuilder return thisT(); } + @Override + public T addServices(List services) { + delegate().addServices(services); + return thisT(); + } + @Override public T intercept(ServerInterceptor interceptor) { delegate().intercept(interceptor);