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