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 2021/05/10 06:34:46 UTC

[camel] 05/06: CAMEL-16596: ScriptingLanguage SPI.

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

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

commit 608bad0210a6cebe265d987c3a2ccda35ea9cccd
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon May 10 08:27:44 2021 +0200

    CAMEL-16596: ScriptingLanguage SPI.
---
 .../src/main/java/org/apache/camel/language/joor/JoorLanguage.java | 7 +------
 .../java/org/apache/camel/language/joor/JoorScriptingCompiler.java | 5 ++---
 .../java/org/apache/camel/language/joor/JoorScriptingMethod.java   | 4 +++-
 3 files changed, 6 insertions(+), 10 deletions(-)

diff --git a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorLanguage.java b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorLanguage.java
index b3788d6..040b1f6 100644
--- a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorLanguage.java
+++ b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorLanguage.java
@@ -90,12 +90,7 @@ public class JoorLanguage extends LanguageSupport implements ScriptingLanguage,
         Object out;
         JoorScriptingMethod target = scriptingCompiler.compile(getCamelContext(), script, bindings, resultType, singleQuotes);
         try {
-            if (bindings != null && !bindings.isEmpty()) {
-                Object[] args = bindings.values().toArray(new Object[0]);
-                out = target.evaluate(args);
-            } else {
-                out = target.evaluate();
-            }
+            out = target.evaluate(bindings);
         } catch (Exception e) {
             throw RuntimeCamelException.wrapRuntimeException(e);
         }
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 6527dd7..e5c3106 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
@@ -156,16 +156,15 @@ public class JoorScriptingCompiler extends ServiceSupport implements StaticServi
 
         sb.append("    @Override\n");
         sb.append(
-                "    public Object evaluate(Object... args) throws Exception {\n");
+                "    public Object evaluate(Map<String, Object> args) throws Exception {\n");
         sb.append("        ");
 
         // bindings as local variables
         if (bindings != null) {
-            int i = 0;
             for (Map.Entry<String, Object> bind : bindings.entrySet()) {
                 String vn = bind.getKey();
                 String cn = ObjectHelper.className(bind.getValue());
-                String b = String.format("        var %s = (%s) args[%s];\n", vn, cn, i++);
+                String b = String.format("        var %s = (%s) args.get(\"%s\");\n", vn, cn, vn);
                 sb.append(b);
             }
             sb.append("\n");
diff --git a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorScriptingMethod.java b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorScriptingMethod.java
index 2d2eec6..1132634 100644
--- a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorScriptingMethod.java
+++ b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JoorScriptingMethod.java
@@ -16,11 +16,13 @@
  */
 package org.apache.camel.language.joor;
 
+import java.util.Map;
+
 /**
  * Interface for the compiled joor scripting method when evaluating as scripting language.
  */
 public interface JoorScriptingMethod {
 
-    Object evaluate(Object... args) throws Exception;
+    Object evaluate(Map<String, Object> args) throws Exception;
 
 }