From 5680d1d3d79bc3d922d8385fc9394e92fe1a3ab8 Mon Sep 17 00:00:00 2001 From: Scott Mitchell Date: Thu, 10 Mar 2022 09:35:57 -0800 Subject: [PATCH] grpc-protoc addService -> addBlockingService Motivation: The generated code to build a service has two methods with the same name: * `addService(X)` * `addService(BlockingX)` The method overloading approach requires that folks cast their services if they are implemented as lambdas. We can avoid this ambiguity by qualifying the method name to: * `addBlockingService(BlockingX)` --- .../grpc/netty/ProtocolCompatibilityTest.java | 2 +- .../java/io/servicetalk/grpc/protoc/Generator.java | 13 ++++++++++++- .../main/java/io/servicetalk/grpc/protoc/Words.java | 1 + 3 files changed, 14 insertions(+), 2 deletions(-) diff --git a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java index 7097f52f9e..897be0c627 100644 --- a/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java +++ b/servicetalk-grpc-netty/src/test/java/io/servicetalk/grpc/netty/ProtocolCompatibilityTest.java @@ -1058,7 +1058,7 @@ private static TestServerContext serviceTalkServerBlocking(final ErrorMode error .listenAndAwait(new ServiceFactory.Builder() .bufferDecoderGroup(serviceTalkDecompression(compression)) .bufferEncoders(serviceTalkCompressions(compression)) - .addService(new BlockingCompatService() { + .addBlockingService(new BlockingCompatService() { @Override public void bidirectionalStreamingCall( final GrpcServiceContext ctx, final BlockingIterable request, diff --git a/servicetalk-grpc-protoc/src/main/java/io/servicetalk/grpc/protoc/Generator.java b/servicetalk-grpc-protoc/src/main/java/io/servicetalk/grpc/protoc/Generator.java index 5dc29e6b73..edbf04c7e2 100644 --- a/servicetalk-grpc-protoc/src/main/java/io/servicetalk/grpc/protoc/Generator.java +++ b/servicetalk-grpc-protoc/src/main/java/io/servicetalk/grpc/protoc/Generator.java @@ -123,6 +123,7 @@ import static io.servicetalk.grpc.protoc.Words.Rpc; import static io.servicetalk.grpc.protoc.Words.Service; import static io.servicetalk.grpc.protoc.Words.To; +import static io.servicetalk.grpc.protoc.Words.addBlockingService; import static io.servicetalk.grpc.protoc.Words.addService; import static io.servicetalk.grpc.protoc.Words.bind; import static io.servicetalk.grpc.protoc.Words.bufferDecoderGroup; @@ -597,7 +598,17 @@ private TypeSpec.Builder addServiceFactory(final State state, final TypeSpec.Bui .addStatement("return this") .build()); - final MethodSpec.Builder addBlockingServiceMethodSpecBuilder = methodBuilder(addService) + serviceBuilderSpecBuilder.addMethod(methodBuilder(addService) + .addModifiers(PUBLIC) + .addAnnotation(Deprecated.class) + .addJavadoc(JAVADOC_DEPRECATED + "Use {@link #$L($T)}." + lineSeparator(), addBlockingService, + state.blockingServiceClass) + .returns(builderClass) + .addParameter(state.blockingServiceClass, service, FINAL) + .addStatement("return $L($L)", addBlockingService, service) + .build()); + + final MethodSpec.Builder addBlockingServiceMethodSpecBuilder = methodBuilder(addBlockingService) .addModifiers(PUBLIC) .returns(builderClass) .addParameter(state.blockingServiceClass, service, FINAL); diff --git a/servicetalk-grpc-protoc/src/main/java/io/servicetalk/grpc/protoc/Words.java b/servicetalk-grpc-protoc/src/main/java/io/servicetalk/grpc/protoc/Words.java index 618c6f1afd..61bd6499be 100644 --- a/servicetalk-grpc-protoc/src/main/java/io/servicetalk/grpc/protoc/Words.java +++ b/servicetalk-grpc-protoc/src/main/java/io/servicetalk/grpc/protoc/Words.java @@ -37,6 +37,7 @@ final class Words { static final String rpc = "rpc"; static final String initSerializationProvider = "initSerializationProvider"; static final String addService = "addService"; + static final String addBlockingService = "addBlockingService"; static final String registerRoutes = "registerRoutes"; static final String service = "service"; static final String strategy = "strategy";