This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push: new 91cf3cfc63 Add debug logging to gRPC extension class generation build steps 91cf3cfc63 is described below commit 91cf3cfc636f98e7a2217d30c9a63a40d8284b99 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Thu Nov 9 11:52:12 2023 +0000 Add debug logging to gRPC extension class generation build steps Fixes #5490 --- .../component/grpc/deployment/GrpcProcessor.java | 25 +++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/extensions/grpc/deployment/src/main/java/org/apache/camel/quarkus/component/grpc/deployment/GrpcProcessor.java b/extensions/grpc/deployment/src/main/java/org/apache/camel/quarkus/component/grpc/deployment/GrpcProcessor.java index deb2cf76d2..0c6b9b0c72 100644 --- a/extensions/grpc/deployment/src/main/java/org/apache/camel/quarkus/component/grpc/deployment/GrpcProcessor.java +++ b/extensions/grpc/deployment/src/main/java/org/apache/camel/quarkus/component/grpc/deployment/GrpcProcessor.java @@ -51,9 +51,10 @@ import org.jboss.jandex.IndexView; import org.jboss.jandex.MethodInfo; import org.jboss.jandex.MethodParameterInfo; import org.jboss.jandex.Type; +import org.jboss.logging.Logger; class GrpcProcessor { - + private static final Logger LOG = Logger.getLogger(GrpcProcessor.class); private static final DotName BINDABLE_SERVICE_DOT_NAME = DotName.createSimple(BindableService.class.getName()); private static final DotName[] STUB_CLASS_DOT_NAMES = new DotName[] { DotName.createSimple(AbstractAsyncStub.class.getName()), @@ -102,7 +103,11 @@ class GrpcProcessor { // Override the various sync and async methods so that requests can be intercepted and delegated to Camel routing // This mimics similar logic in DefaultBindableServiceFactory that uses Javassist ProxyFactory & MethodHandler for (ClassInfo service : bindableServiceImpls) { + String superClassName = service.name().toString(); + String generatedClassName = superClassName + "QuarkusMethodHandler"; + if (!Modifier.isAbstract(service.flags())) { + logDebugMessage("Ignoring BindableService %s as it is not an interface or abstract class", superClassName); continue; } @@ -111,6 +116,7 @@ class GrpcProcessor { * Not skipping it here results in randomly registering the Mutiny one or the right one. * In case the Mutiny service one is registered, the client throws something like * io.grpc.StatusRuntimeException: UNIMPLEMENTED */ + logDebugMessage("Ignoring BindableService %s as it a Mutiny service", superClassName); continue; } @@ -120,19 +126,19 @@ class GrpcProcessor { .filter(className -> className.endsWith("AsyncService")) .findFirst(); if (asyncServiceInterface.isEmpty()) { + logDebugMessage("Ignoring BindableService %s as it does not implement AsyncService", superClassName); continue; } - String superClassName = service.name().toString(); - String generatedClassName = superClassName + "QuarkusMethodHandler"; - // Register the service classes for reflection reflectiveClass - .produce(ReflectiveClassBuildItem.builder(service.name().toString()).methods().build()); + .produce(ReflectiveClassBuildItem.builder(superClassName).methods().build()); reflectiveClass.produce( ReflectiveClassBuildItem.builder(service.enclosingClass().toString()).methods().build()); reflectiveClass.produce(ReflectiveClassBuildItem.builder(generatedClassName).methods().build()); + logDebugMessage("Generating CamelQuarkusBindableService %s extending %s", generatedClassName, superClassName); + try (ClassCreator classCreator = ClassCreator.builder() .classOutput(new GeneratedBeanGizmoAdaptor(generatedBean)) .className(generatedClassName) @@ -185,6 +191,9 @@ class GrpcProcessor { String returnType = method.returnType().name().toString(); try (MethodCreator methodCreator = classCreator.getMethodCreator(method.name(), returnType, params)) { + logDebugMessage("Creating service implementation for method %s in %s", method.name(), + generatedClassName); + method.exceptions() .stream() .map(type -> type.name().toString()) @@ -239,4 +248,10 @@ class GrpcProcessor { ResultHandle resultHandle = methodCreator.readInstanceField(fieldCreator.getFieldDescriptor(), methodCreator.getThis()); return methodCreator.invokeVirtualMethod(method, resultHandle, methodParams); } + + private void logDebugMessage(String message, Object... params) { + if (LOG.isDebugEnabled()) { + LOG.debugf(message, params); + } + } }