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/12/12 15:32:22 UTC

(camel) 02/07: CAMEL-20141: Consolidate camel-joor and camel-java-joor-dsl

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

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

commit 68b8b9a9fc58bb389a117e7f90a412623add2f54
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Dec 12 12:01:11 2023 +0100

    CAMEL-20141: Consolidate camel-joor and camel-java-joor-dsl
---
 .../org/apache/camel/language/joor/CompilationUnit.java     | 13 +++++++++++++
 .../java/org/apache/camel/language/joor/MultiCompile.java   |  4 ++--
 2 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/components/camel-joor/src/main/java/org/apache/camel/language/joor/CompilationUnit.java b/components/camel-joor/src/main/java/org/apache/camel/language/joor/CompilationUnit.java
index 5f3f677e559..64fd9bfc56f 100644
--- a/components/camel-joor/src/main/java/org/apache/camel/language/joor/CompilationUnit.java
+++ b/components/camel-joor/src/main/java/org/apache/camel/language/joor/CompilationUnit.java
@@ -27,6 +27,7 @@ import java.util.Set;
 public class CompilationUnit {
 
     private final Map<String, String> files = new LinkedHashMap<>();
+    private ClassLoader classLoader;
 
     /**
      * The result of the compilation that holds mapping for each className -> class.
@@ -108,10 +109,22 @@ public class CompilationUnit {
         return this;
     }
 
+    /**
+     * To use a custom classloader
+     */
+    public CompilationUnit withClassLoader(ClassLoader classLoader) {
+        this.classLoader = classLoader;
+        return this;
+    }
+
     public Map<String, String> getInput() {
         return files;
     }
 
+    public ClassLoader getClassLoader() {
+        return classLoader;
+    }
+
     @Override
     public String toString() {
         String names = String.join(", ", files.keySet());
diff --git a/components/camel-joor/src/main/java/org/apache/camel/language/joor/MultiCompile.java b/components/camel-joor/src/main/java/org/apache/camel/language/joor/MultiCompile.java
index 7a5e07f387a..9ef05add484 100644
--- a/components/camel-joor/src/main/java/org/apache/camel/language/joor/MultiCompile.java
+++ b/components/camel-joor/src/main/java/org/apache/camel/language/joor/MultiCompile.java
@@ -89,7 +89,7 @@ public final class MultiCompile {
         List<CharSequenceJavaFileObject> files = new ArrayList<>();
 
         Lookup lookup = MethodHandles.lookup();
-        ClassLoader cl = lookup.lookupClass().getClassLoader();
+        ClassLoader cl = unit.getClassLoader() != null ? unit.getClassLoader() : lookup.lookupClass().getClassLoader();
         unit.getInput().forEach((cn, code) -> {
             try {
                 Class<?> clazz = cl.loadClass(cn);
@@ -124,7 +124,7 @@ public final class MultiCompile {
 
                 if (cl instanceof URLClassLoader) {
                     for (URL url : ((URLClassLoader) cl).getURLs()) {
-                        if (classpath.length() > 0) {
+                        if (!classpath.isEmpty()) {
                             classpath.append(separator);
                         }