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);
+        }
+    }
 }

Reply via email to