in extensions/joor/deployment/src/main/java/org/apache/camel/quarkus/component/joor/deployment/JoorProcessor.java [72:120]
void collectExpressions(JoorExpressionConfig config,
ExpressionExtractionResultBuildItem result,
List<ExpressionBuildItem> expressions,
List<ScriptBuildItem> scripts,
BuildProducer<JoorExpressionSourceBuildItem> producer) throws Exception {
if (result.isSuccess()) {
List<ExpressionBuildItem> joorExpressions = expressions.stream()
.filter(exp -> "java".equals(exp.getLanguage()))
.collect(Collectors.toList());
List<ScriptBuildItem> joorScripts = scripts.stream()
.filter(exp -> "java".equals(exp.getLanguage()))
.collect(Collectors.toList());
if (joorExpressions.isEmpty() && joorScripts.isEmpty()) {
return;
}
// Don't close it as it won't be started and some log entries are added on close/stop
CamelContext ctx = CamelSupport.newBuildTimeCamelContext(true);
try (JavaLanguage language = new JavaLanguage()) {
language.setCamelContext(ctx);
language.setSingleQuotes(config.singleQuotes());
config.configResource().ifPresent(language::setConfigResource);
language.setPreCompile(false);
language.init();
JoorCompiler compiler = language.getCompiler();
for (ExpressionBuildItem expression : joorExpressions) {
JoorExpression exp = (JoorExpression) language.createExpression(expression.getExpression(),
expression.getProperties());
ExpressionUID id = new ExpressionUID(expression.getExpression(), exp.isSingleQuotes());
String name = String.format("%s.%s", PACKAGE_NAME, id);
String content = compiler.evalCode(ctx, name, expression.getExpression(), exp.isSingleQuotes());
if (LOG.isDebugEnabled()) {
LOG.debug("Compiling expression:\n\n{}\n", content);
}
producer.produce(new JoorExpressionSourceBuildItem(id, name, content));
}
JoorScriptingCompiler scriptingCompiler = language.getScriptingCompiler();
for (ScriptBuildItem script : joorScripts) {
ScriptUID id = new ScriptUID(script.getContent(), script.getBindings(), language.isSingleQuotes());
String name = String.format("%s.%s", PACKAGE_NAME, id);
String content = scriptingCompiler.evalCode(ctx, name, script.getContent(), script.getBindings(),
language.isSingleQuotes());
if (LOG.isDebugEnabled()) {
LOG.debug("Compiling script:\n\n{}\n", content);
}
producer.produce(new JoorExpressionSourceBuildItem(id, name, content));
}
}
}
}