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

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


The following commit(s) were added to refs/heads/camel-4.4.x by this push:
     new d5221711eb9 CAMEL-20771: camel-jbang - Does not hot-reload java source 
changes
d5221711eb9 is described below

commit d5221711eb9398e97813ba50ba1c790d761857b9
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed May 15 11:13:38 2024 +0200

    CAMEL-20771: camel-jbang - Does not hot-reload java source changes
---
 .../org/apache/camel/language/joor/JavaJoorClassLoader.java  | 12 ++++++++++++
 .../apache/camel/dsl/java/joor/JavaRoutesBuilderLoader.java  |  2 ++
 2 files changed, 14 insertions(+)

diff --git 
a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JavaJoorClassLoader.java
 
b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JavaJoorClassLoader.java
index e1694f04a9d..ab9dae26f78 100644
--- 
a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JavaJoorClassLoader.java
+++ 
b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JavaJoorClassLoader.java
@@ -76,6 +76,18 @@ public class JavaJoorClassLoader extends ClassLoader {
         }
     }
 
+    public void removeClass(String name) {
+        if (name != null) {
+            classes.remove(name);
+            if (compileDirectory != null) {
+                String fname = name.replace('.', '/');
+                fname = compileDirectory + "/" + fname + ".class";
+                File target = new File(fname);
+                FileUtil.deleteFile(target);
+            }
+        }
+    }
+
     private static void saveByteCodeToDisk(String outputDirectory, String 
name, byte[] byteCode) {
         // write to disk (can be triggered multiple times so only write once)
         String fname = name.replace('.', '/');
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 73f74bbe366..1021b543861 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
@@ -188,6 +188,8 @@ public class JavaRoutesBuilderLoader extends 
ExtendedRouteBuilderLoaderSupport {
                 String content = IOHelper.loadText(is);
                 String name = determineName(resource, content);
                 unit.addClass(name, content);
+                // ensure class gets recompiled
+                classLoader.removeClass(name);
                 nameToResource.put(name, resource);
             }
         }

Reply via email to