You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/11/23 17:47:48 UTC

(camel) 01/01: CAMEL-20141: Add debug logging to Java compiler via joor to better see what happens

This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch CAMEL-20141
in repository https://gitbox.apache.org/repos/asf/camel.git

commit f0b53ba88f7b6d31243ff69554cb7e7728bcd831
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Thu Nov 23 16:54:21 2023 +0100

    CAMEL-20141: Add debug logging to Java compiler via joor to better see what happens
---
 .../java/org/apache/camel/language/joor/JoorCompiler.java     |  2 ++
 .../org/apache/camel/language/joor/JoorScriptingCompiler.java |  2 ++
 .../java/org/apache/camel/dsl/java/joor/CompilationUnit.java  |  5 +++++
 .../apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java   |  5 ++++-
 .../java/org/apache/camel/dsl/java/joor/MultiCompile.java     | 11 +++++++++++
 5 files changed, 24 insertions(+), 1 deletion(-)

diff --git a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorCompiler.java b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorCompiler.java
index d6e59d2f94f..b957440d29e 100644
--- a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorCompiler.java
+++ b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorCompiler.java
@@ -104,8 +104,10 @@ public class JoorCompiler extends ServiceSupport implements StaticService {
             if (LOG.isDebugEnabled()) {
                 LOG.debug("Compiling code:\n\n{}\n", code);
             }
+            LOG.debug("Compiling: {}", className);
             Reflect ref = Reflect.compile(className, code);
             Class<?> clazz = ref.type();
+            LOG.debug("Compiled to Java class: {}", clazz);
             answer = (JoorMethod) clazz.getConstructor(CamelContext.class).newInstance(camelContext);
         } catch (Exception e) {
             throw new JoorCompilationException(className, code, e);
diff --git a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorScriptingCompiler.java b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorScriptingCompiler.java
index 7855cca7708..1be6bc8e29c 100644
--- a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorScriptingCompiler.java
+++ b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorScriptingCompiler.java
@@ -93,8 +93,10 @@ public class JoorScriptingCompiler extends ServiceSupport implements StaticServi
                 co = new CompileOptions();
                 co = co.classLoader(cl);
             }
+            LOG.debug("Compiling: {}", className);
             Reflect ref = Reflect.compile(className, code, co);
             Class<?> clazz = ref.type();
+            LOG.debug("Compiled to Java class: {}", clazz);
             answer = (JoorScriptingMethod) clazz.getConstructor(CamelContext.class).newInstance(camelContext);
         } catch (Exception e) {
             throw new JoorCompilationException(className, code, e);
diff --git a/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/CompilationUnit.java b/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/CompilationUnit.java
index e53b365f1ec..3f802eafc50 100644
--- a/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/CompilationUnit.java
+++ b/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/CompilationUnit.java
@@ -112,4 +112,9 @@ public class CompilationUnit {
         return files;
     }
 
+    @Override
+    public String toString() {
+        String names = String.join(", ", files.keySet());
+        return "CompilationUnit[" + names + "]";
+    }
 }
diff --git a/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java b/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java
index 54ea61bf897..b3605946ff7 100644
--- a/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java
+++ b/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java
@@ -181,7 +181,10 @@ public class JavaRoutesBuilderLoader extends ExtendedRouteBuilderLoaderSupport {
             }
         }
 
-        LOG.debug("Compiling unit: {}", unit);
+        if (LOG.isDebugEnabled()) {
+            String names = String.join(", ", unit.getInput().keySet());
+            LOG.debug("Compiling: {}", names);
+        }
         CompilationUnit.Result result = MultiCompile.compileUnit(unit);
 
         // remember the last loaded resource-set if route reloading is enabled
diff --git a/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/MultiCompile.java b/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/MultiCompile.java
index 05a85739c67..24984f7ad82 100644
--- a/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/MultiCompile.java
+++ b/dsl/camel-java-joor-dsl/src/main/java/org/apache/camel/dsl/java/joor/MultiCompile.java
@@ -94,7 +94,9 @@ public final class MultiCompile {
             try {
                 Class<?> clazz = cl.loadClass(cn);
                 result.addResult(cn, clazz, null);
+                LOG.debug("Class already compiled: {}", cn);
             } catch (ClassNotFoundException ignore) {
+                LOG.debug("Class must be compiled: {}", cn);
                 files.add(new CharSequenceJavaFileObject(cn, code));
             }
         });
@@ -143,7 +145,11 @@ public final class MultiCompile {
             StringWriter out = new StringWriter();
             CompilationTask task = compiler.getTask(out, fileManager, dc, options, null, files);
 
+            if (LOG.isDebugEnabled()) {
+                LOG.debug("Compiling files: {}", files);
+            }
             boolean success = task.call();
+            LOG.debug("Compiled success: {}", success);
             // after compilation then we need to clean up some unexpected output
             cleanupWaste();
 
@@ -351,6 +357,11 @@ public final class MultiCompile {
         public CharSequence getCharContent(boolean ignoreEncodingErrors) {
             return content;
         }
+
+        @Override
+        public String toString() {
+            return className;
+        }
     }
 
     /**