From 2af788d4930021ffbdadbd97127a95af957e4492 Mon Sep 17 00:00:00 2001 From: Daniel Fiala Date: Sun, 21 Apr 2024 22:42:11 +0200 Subject: [PATCH] feat(transcoding): removed unnecessary code --- .../grpc/deployment/GrpcServerProcessor.java | 5 --- .../grpc/runtime/GrpcTranscodingRecorder.java | 38 +++++++++++-------- .../transcoding/GrpcTranscodingBridge.java | 9 +---- .../transcoding/GrpcTranscodingMetadata.java | 34 ++++++++++++++--- .../transcoding/GrpcTranscodingServer.java | 37 +++++------------- .../transcoding/GrpcTranscodingStorage.java | 16 -------- 6 files changed, 61 insertions(+), 78 deletions(-) delete mode 100644 extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingStorage.java diff --git a/extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcServerProcessor.java b/extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcServerProcessor.java index 037e0127c5f83c..dd42eb2c7b2a3c 100644 --- a/extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcServerProcessor.java +++ b/extensions/grpc/deployment/src/main/java/io/quarkus/grpc/deployment/GrpcServerProcessor.java @@ -689,7 +689,6 @@ ServiceStartBuildItem initializeServer(GrpcServerRecorder recorder, // Build the list of blocking methods per service implementation Map> blocking = new HashMap<>(); for (BindableServiceBuildItem bindable : bindables) { - log.infof("Bindable service: %s", bindable.serviceClass); if (bindable.hasBlockingMethods()) { blocking.put(bindable.serviceClass.toString(), bindable.blockingMethods); } @@ -701,10 +700,6 @@ ServiceStartBuildItem initializeServer(GrpcServerRecorder recorder, } } - log.infov("Blocking methods: {0}", blocking.size()); - log.infov("Virtual methods: {0}", virtuals.size()); - log.infov("Global interceptors: {0}", bindables.size()); - if (!bindables.isEmpty() || (LaunchMode.current() == LaunchMode.DEVELOPMENT && buildTimeConfig.devMode.forceServerStart)) { //Uses mainrouter when the 'quarkus.http.root-path' is not '/' diff --git a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/GrpcTranscodingRecorder.java b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/GrpcTranscodingRecorder.java index 410438a60f6345..049eb54942f694 100644 --- a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/GrpcTranscodingRecorder.java +++ b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/GrpcTranscodingRecorder.java @@ -8,11 +8,14 @@ import org.jboss.logging.Logger; +import com.google.protobuf.Message; + import io.grpc.BindableService; import io.grpc.MethodDescriptor; import io.grpc.ServerMethodDefinition; import io.grpc.ServerServiceDefinition; import io.quarkus.arc.Arc; +import io.quarkus.grpc.GrpcTranscodingMarshaller; import io.quarkus.grpc.MutinyTranscodingService; import io.quarkus.grpc.auth.GrpcSecurityInterceptor; import io.quarkus.grpc.runtime.transcoding.*; @@ -60,24 +63,18 @@ public RuntimeValue initializeMarshallingServer(RuntimeVa transcodingService.getGrpcServiceName()); for (ServerMethodDefinition serviceDefinition : grpcService.definition.getMethods()) { - MethodDescriptor methodDescriptor = serviceDefinition.getMethodDescriptor(); + MethodDescriptor methodDescriptor = (MethodDescriptor) serviceDefinition + .getMethodDescriptor(); GrpcTranscodingMethod transcodingMethod = findTranscodingMethod(transcodingMethods, methodDescriptor); String path = transcodingMethod.getUriTemplate(); HttpMethod httpMethod = HttpMethod.valueOf(transcodingMethod.getHttpMethodName()); - LOGGER.info("Registering transcoding route for " + grpcService.getImplementationClassName() + " method " - + methodDescriptor.getFullMethodName() + " => " + httpMethod + " " + path); - - String fullMethodName = methodDescriptor.getFullMethodName() - .substring(methodDescriptor.getFullMethodName().lastIndexOf("/") + 1); - fullMethodName = Character.toLowerCase(fullMethodName.charAt(0)) + fullMethodName.substring(1); + GrpcTranscodingMetadata metadata = createMetadata(transcodingMethod, methodDescriptor, + transcodingService); transcodingServer.addMethodMapping(path, methodDescriptor.getFullMethodName()); - transcodingServer.addRequestMarshaller(methodDescriptor.getFullMethodName(), - transcodingService.findRequestMarshaller(fullMethodName)); - transcodingServer.addResponseMarshaller(methodDescriptor.getFullMethodName(), - transcodingService.findResponseMarshaller(fullMethodName)); + transcodingServer.addMetadataHandler(methodDescriptor.getFullMethodName(), metadata); mappedMethods.add(serviceDefinition); @@ -105,13 +102,26 @@ public void handle(Void unused) { } } - LOGGER.info("Binding transcoding server"); GrpcTranscodingBridge bridge = new GrpcTranscodingBridge(mappedMethods); bridge.bind(transcodingServer); return new RuntimeValue<>(transcodingServer); } + private GrpcTranscodingMetadata createMetadata( + GrpcTranscodingMethod transcodingMethod, MethodDescriptor methodDescriptor, + MutinyTranscodingService transcodingService) { + String fullMethodName = methodDescriptor.getFullMethodName() + .substring(methodDescriptor.getFullMethodName().lastIndexOf("/") + 1); + fullMethodName = Character.toLowerCase(fullMethodName.charAt(0)) + fullMethodName.substring(1); + + GrpcTranscodingMarshaller requestMarshaller = transcodingService.findRequestMarshaller(fullMethodName); + GrpcTranscodingMarshaller responseMarshaller = transcodingService.findResponseMarshaller(fullMethodName); + + return new GrpcTranscodingMetadata<>(transcodingMethod.getHttpMethodName(), fullMethodName, requestMarshaller, + responseMarshaller, methodDescriptor); + } + private List findTranscodingMethods(Map> transcodingMethods, String grpcServiceName) { List methods = new ArrayList<>(); @@ -131,7 +141,6 @@ private GrpcTranscodingMethod findTranscodingMethod(List fullMethodName = Character.toLowerCase(fullMethodName.charAt(0)) + fullMethodName.substring(1); for (GrpcTranscodingMethod transcodingMethod : transcodingMethods) { - LOGGER.info("Transcoding method: " + transcodingMethod.getGrpcMethodName()); if (transcodingMethod.getGrpcMethodName().startsWith(fullMethodName)) { return transcodingMethod; } @@ -162,10 +171,7 @@ private static List collectTranscodingServices(Instanc private static GrpcServerRecorder.GrpcServiceDefinition findGrpcService( List grpcServices, MutinyTranscodingService transcodingService) { - LOGGER.info("Looking for gRPC service " + transcodingService.getGrpcServiceName() + " in " + grpcServices.size() - + " services"); for (GrpcServerRecorder.GrpcServiceDefinition grpcService : grpcServices) { - LOGGER.info("gRPC service: " + grpcService.getImplementationClassName()); if (grpcService.getImplementationClassName().startsWith(transcodingService.getGrpcServiceName())) { return grpcService; } diff --git a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingBridge.java b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingBridge.java index 0697e65196c736..5eb20a0f3bc953 100644 --- a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingBridge.java +++ b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingBridge.java @@ -62,8 +62,6 @@ private static class ServerCallImpl extends ServerCall { private final TranscodingReadStreamAdapter readAdapter; private final TranscodingWriteStreamAdapter writeAdapter; private ServerCall.Listener listener; - private final Decompressor decompressor; - private Compressor compressor; private boolean halfClosed; private boolean closed; private int messagesSent; @@ -71,9 +69,6 @@ private static class ServerCallImpl extends ServerCall { public ServerCallImpl(GrpcServerRequest req, ServerMethodDefinition methodDef, MethodDescriptor.Marshaller reqMarshaller, MethodDescriptor.Marshaller respMarshaller) { - String encoding = "identity"; - - this.decompressor = DecompressorRegistry.getDefaultInstance().lookupDecompressor(encoding); this.req = (GrpcTranscodingRequest) req; this.methodDef = methodDef; this.reqMarshaller = reqMarshaller; @@ -186,8 +181,8 @@ public MethodDescriptor getMethodDescriptor() { @Override public void setCompression(String encoding) { - compressor = CompressorRegistry.getDefaultInstance().lookupCompressor(encoding); - req.response().encoding(encoding); + // ???? + super.setCompression(encoding); } @Override diff --git a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingMetadata.java b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingMetadata.java index 476ba90869ed74..1b4808b51c6358 100644 --- a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingMetadata.java +++ b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingMetadata.java @@ -1,23 +1,45 @@ package io.quarkus.grpc.runtime.transcoding; -import com.google.api.HttpRule; +import com.google.protobuf.Message; import io.grpc.MethodDescriptor; +import io.quarkus.grpc.GrpcTranscodingMarshaller; -public class GrpcTranscodingMetadata { +public class GrpcTranscodingMetadata { + private final String httpMethodName; + private final String grpcMethodName; + private final GrpcTranscodingMarshaller requestMarshaller; + private final GrpcTranscodingMarshaller responseMarshaller; private final MethodDescriptor methodDescriptor; - public GrpcTranscodingMetadata(MethodDescriptor methodDescriptor, HttpRule httpRule) { + public GrpcTranscodingMetadata(String httpMethodName, String grpcMethodName, + GrpcTranscodingMarshaller requestMarshaller, + GrpcTranscodingMarshaller responseMarshaller, MethodDescriptor methodDescriptor) { + this.httpMethodName = httpMethodName; + this.grpcMethodName = grpcMethodName; + this.requestMarshaller = requestMarshaller; + this.responseMarshaller = responseMarshaller; this.methodDescriptor = methodDescriptor; } - public String getName() { - return "grpc/" + methodDescriptor.getFullMethodName(); + public String getHttpMethodName() { + return httpMethodName; + } + + public String getGrpcMethodName() { + return grpcMethodName; + } + + public GrpcTranscodingMarshaller getRequestMarshaller() { + return requestMarshaller; + } + + public GrpcTranscodingMarshaller getResponseMarshaller() { + return responseMarshaller; } public MethodDescriptor getMethodDescriptor() { return methodDescriptor; } - } diff --git a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingServer.java b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingServer.java index 2813f21338324c..83ce07a6f979b7 100644 --- a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingServer.java +++ b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingServer.java @@ -4,7 +4,6 @@ import java.util.Map; import io.grpc.MethodDescriptor; -import io.quarkus.grpc.GrpcTranscodingMarshaller; import io.vertx.core.Handler; import io.vertx.core.Vertx; import io.vertx.core.buffer.Buffer; @@ -20,9 +19,8 @@ public class GrpcTranscodingServer implements GrpcServer { private final Vertx vertx; private Handler> requestHandler; private Map methodMapping = new HashMap<>(); - private Map> requestMarshallers = new HashMap<>(); - private Map> responseMarshallers = new HashMap<>(); private Map> methodCallHandlers = new HashMap<>(); + private Map> metadataHandlers = new HashMap<>(); public GrpcTranscodingServer(Vertx vertx) { this.vertx = vertx; @@ -32,7 +30,6 @@ public GrpcTranscodingServer(Vertx vertx) { public void handle(HttpServerRequest httpRequest) { String mappedMethod = methodMapping.get(httpRequest.path()); if (mappedMethod == null) { - httpRequest.response().setStatusCode(404).end(); return; } @@ -42,17 +39,6 @@ public void handle(HttpServerRequest httpRequest) { if (method != null) { handle(method, httpRequest, methodCall); } else { - /* - * Handler> handler = requestHandler; - * if (handler != null) { - * GrpcServerRequestImpl grpcRequest = new GrpcServerRequestImpl<>(httpRequest, - * GrpcMessageDecoder.IDENTITY, GrpcMessageEncoder.IDENTITY, methodCall); - * grpcRequest.init(); - * handler.handle(grpcRequest); - * } else { - * httpRequest.response().setStatusCode(500).end(); - * } - */ httpRequest.response().setStatusCode(500).end(); } } @@ -75,11 +61,8 @@ public GrpcServer callHandler(Handler> handler public GrpcServer callHandler(MethodDescriptor methodDesc, Handler> handler) { if (handler != null) { - MethodDescriptor.Marshaller reqMarshaller = (MethodDescriptor.Marshaller) requestMarshallers - .get(methodDesc.getFullMethodName()); - - MethodDescriptor.Marshaller respMarshaller = (MethodDescriptor.Marshaller) responseMarshallers - .get(methodDesc.getFullMethodName()); + MethodDescriptor.Marshaller reqMarshaller = findRequestMarshaller(methodDesc.getFullMethodName()); + MethodDescriptor.Marshaller respMarshaller = findResponseMarshaller(methodDesc.getFullMethodName()); methodCallHandlers.put(methodDesc.getFullMethodName(), new GrpcTranscodingServer.MethodCallHandler<>(methodDesc, @@ -95,22 +78,20 @@ public void addMethodMapping(String path, String fullMethodName) { methodMapping.put(path, fullMethodName); } - public void addRequestMarshaller(String fullMethodName, GrpcTranscodingMarshaller marshaller) { - requestMarshallers.put(fullMethodName, marshaller); - } - - public void addResponseMarshaller(String fullMethodName, GrpcTranscodingMarshaller marshaller) { - responseMarshallers.put(fullMethodName, marshaller); + public void addMetadataHandler(String fullMethodName, GrpcTranscodingMetadata metadata) { + metadataHandlers.put(fullMethodName, metadata); } @SuppressWarnings("unchecked") public MethodDescriptor.Marshaller findRequestMarshaller(String fullMethodName) { - return (MethodDescriptor.Marshaller) requestMarshallers.get(fullMethodName); + GrpcTranscodingMetadata metadata = metadataHandlers.get(fullMethodName); + return (MethodDescriptor.Marshaller) metadata.getRequestMarshaller(); } @SuppressWarnings("unchecked") public MethodDescriptor.Marshaller findResponseMarshaller(String fullMethodName) { - return (MethodDescriptor.Marshaller) responseMarshallers.get(fullMethodName); + GrpcTranscodingMetadata metadata = metadataHandlers.get(fullMethodName); + return (MethodDescriptor.Marshaller) metadata.getResponseMarshaller(); } private static class MethodCallHandler implements Handler> { diff --git a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingStorage.java b/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingStorage.java deleted file mode 100644 index 30e9ba671eb74a..00000000000000 --- a/extensions/grpc/runtime/src/main/java/io/quarkus/grpc/runtime/transcoding/GrpcTranscodingStorage.java +++ /dev/null @@ -1,16 +0,0 @@ -package io.quarkus.grpc.runtime.transcoding; - -import java.util.Map; - -public class GrpcTranscodingStorage { - - private final Map> transcodingMetadata; - - public GrpcTranscodingStorage(Map> transcodingMetadata) { - this.transcodingMetadata = transcodingMetadata; - } - - public Map> getTranscodingMetadata() { - return transcodingMetadata; - } -}