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 218b32d137748ea6f0ac07058f9df3a5223e36f7 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Dec 12 12:06:08 2023 +0100 CAMEL-20141: Consolidate camel-joor and camel-java-joor-dsl --- .../camel/language/joor/JoorScriptingCompiler.java | 24 ++++++++++++---------- 1 file changed, 13 insertions(+), 11 deletions(-) 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 c41335ac9b7..b3bef416b69 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 @@ -34,15 +34,11 @@ import org.apache.camel.support.ScriptHelper; import org.apache.camel.support.service.ServiceSupport; import org.apache.camel.util.ObjectHelper; import org.apache.camel.util.StopWatch; -import org.joor.CompileOptions; -import org.joor.Reflect; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class JoorScriptingCompiler extends ServiceSupport implements StaticService { - // TODO: Use MultiCompile - private static final Pattern BEAN_INJECTION_PATTERN = Pattern.compile("(#bean:)([A-Za-z0-9-_]*)"); private static final Logger LOG = LoggerFactory.getLogger(JoorScriptingCompiler.class); @@ -87,19 +83,25 @@ public class JoorScriptingCompiler extends ServiceSupport implements StaticServi if (LOG.isDebugEnabled()) { LOG.debug("Compiling code:\n\n{}\n", code); } + CompilationUnit unit = CompilationUnit.input(); + unit.addClass(className, code); + // include classloader from Camel, so we can load any already compiled and loaded classes - CompileOptions co = new CompileOptions(); ClassLoader parent = MethodHandles.lookup().lookupClass().getClassLoader(); if (parent instanceof URLClassLoader ucl) { ClassLoader cl = new CamelJoorClassLoader(ucl, camelContext); - co = new CompileOptions(); - co = co.classLoader(cl); + unit.withClassLoader(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); + + CompilationUnit.Result result = MultiCompile.compileUnit(unit); + Class<?> clazz = result.getClass(className); + if (clazz != null) { + LOG.debug("Compiled to Java class: {}", clazz); + answer = (JoorScriptingMethod) clazz.getConstructor(CamelContext.class).newInstance(camelContext); + } else { + answer = null; + } } catch (Exception e) { throw new JoorCompilationException(className, code, e); }