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

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

commit 37c756562a95d7dc173b46bbb9c3eeb8cf564e28
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Sat Feb 3 16:49:47 2024 +0100

    CAMEL-20378: Languages should be thread-safe and be configured only via 
properties array, all in the same way.
---
 .../org/apache/camel/language/csimple/CSimpleHelper.java   | 10 +++++-----
 .../camel/language/simple/SimpleExpressionBuilder.java     | 14 +++++++-------
 .../language/simple/ast/SimpleFunctionExpression.java      | 10 +++++-----
 .../apache/camel/support/builder/ExpressionBuilder.java    |  4 ++--
 4 files changed, 19 insertions(+), 19 deletions(-)

diff --git 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
index 4bf6cdd5f09..6d2200a866b 100644
--- 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
+++ 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleHelper.java
@@ -380,11 +380,11 @@ public final class CSimpleHelper {
             }
         }
 
-        Object[] properties = new Object[5];
-        properties[2] = type;
-        properties[3] = ref;
-        properties[1] = method;
-        properties[4] = scope;
+        Object[] properties = new Object[7];
+        properties[3] = type;
+        properties[4] = ref;
+        properties[2] = method;
+        properties[5] = scope;
         Expression exp = bean.createExpression(null, properties);
         exp.init(exchange.getContext());
         return exp.evaluate(exchange, Object.class);
diff --git 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
index 9ec436ae6ec..47fa8d95fb7 100644
--- 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
+++ 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/SimpleExpressionBuilder.java
@@ -691,7 +691,7 @@ public final class SimpleExpressionBuilder {
                 } catch (InvalidPayloadException e) {
                     throw 
CamelExecutionException.wrapCamelExecutionException(exchange, e);
                 }
-                Expression ognlExp = bean.createExpression(null, new Object[] 
{ body, ognl });
+                Expression ognlExp = bean.createExpression(null, new Object[] 
{ null, body, ognl });
                 ognlExp.init(exchange.getContext());
                 return ognlExp.evaluate(exchange, Object.class);
             }
@@ -772,7 +772,7 @@ public final class SimpleExpressionBuilder {
                 if (msg != null) {
                     // ognl is able to evaluate method name if it contains 
nested functions
                     // so we should not eager evaluate ognl as a string
-                    Expression ognlExp = bean.createExpression(null, new 
Object[] { msg, ognl });
+                    Expression ognlExp = bean.createExpression(null, new 
Object[] { null, msg, ognl });
                     ognlExp.init(exchange.getContext());
                     return ognlExp.evaluate(exchange, Object.class);
                 } else {
@@ -818,7 +818,7 @@ public final class SimpleExpressionBuilder {
                 if (body != null) {
                     // ognl is able to evaluate method name if it contains 
nested functions
                     // so we should not eager evaluate ognl as a string
-                    Expression ognlExp = bean.createExpression(null, new 
Object[] { body, ognl });
+                    Expression ognlExp = bean.createExpression(null, new 
Object[] { null, body, ognl });
                     ognlExp.init(exchange.getContext());
                     return ognlExp.evaluate(exchange, Object.class);
                 } else {
@@ -854,7 +854,7 @@ public final class SimpleExpressionBuilder {
             public Object evaluate(Exchange exchange) {
                 // ognl is able to evaluate method name if it contains nested 
functions
                 // so we should not eager evaluate ognl as a string
-                Expression ognlExp = bean.createExpression(null, new Object[] 
{ exchange, ognl });
+                Expression ognlExp = bean.createExpression(null, new Object[] 
{ null, exchange, ognl });
                 ognlExp.init(exchange.getContext());
                 return ognlExp.evaluate(exchange, Object.class);
             }
@@ -915,7 +915,7 @@ public final class SimpleExpressionBuilder {
                 if (body == null) {
                     return null;
                 }
-                Expression ognlExp = bean.createExpression(null, new Object[] 
{ body, ognl });
+                Expression ognlExp = bean.createExpression(null, new Object[] 
{ null, body, ognl });
                 ognlExp.init(exchange.getContext());
                 return ognlExp.evaluate(exchange, Object.class);
             }
@@ -1063,7 +1063,7 @@ public final class SimpleExpressionBuilder {
 
                 // ognl is able to evaluate method name if it contains nested 
functions
                 // so we should not eager evaluate ognl as a string
-                Expression ognlExp = bean.createExpression(null, new Object[] 
{ exception, ognl });
+                Expression ognlExp = bean.createExpression(null, new Object[] 
{ null, exception, ognl });
                 ognlExp.init(exchange.getContext());
                 return ognlExp.evaluate(exchange, Object.class);
             }
@@ -1145,7 +1145,7 @@ public final class SimpleExpressionBuilder {
                 return null;
             }
             if (method != null) {
-                Expression exp = beanLanguage.createExpression(null, new 
Object[] { property, method });
+                Expression exp = beanLanguage.createExpression(null, new 
Object[] { null, property, method });
                 exp.init(exchange.getContext());
                 return exp.evaluate(exchange, Object.class);
             } else {
diff --git 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
index a9276250d2e..89ca1043278 100644
--- 
a/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
+++ 
b/core/camel-core-languages/src/main/java/org/apache/camel/language/simple/ast/SimpleFunctionExpression.java
@@ -265,11 +265,11 @@ public class SimpleFunctionExpression extends 
LiteralExpression {
             }
 
             // there are parameters then map them into properties
-            Object[] properties = new Object[5];
-            properties[2] = type;
-            properties[3] = ref;
-            properties[1] = method;
-            properties[4] = scope;
+            Object[] properties = new Object[7];
+            properties[3] = type;
+            properties[4] = ref;
+            properties[2] = method;
+            properties[5] = scope;
             return bean.createExpression(null, properties);
         }
 
diff --git 
a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
 
b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
index 47cef3ba81c..dbd7d6e3a34 100644
--- 
a/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
+++ 
b/core/camel-support/src/main/java/org/apache/camel/support/builder/ExpressionBuilder.java
@@ -2299,7 +2299,7 @@ public class ExpressionBuilder {
             public void init(CamelContext context) {
                 super.init(context);
                 final Language language = context.resolveLanguage("bean");
-                this.exp = language.createExpression(null, new Object[] { 
bean, method });
+                this.exp = language.createExpression(null, new Object[] { 
null, bean, method });
                 this.exp.init(context);
             }
 
@@ -2316,7 +2316,7 @@ public class ExpressionBuilder {
             @Override
             public Object evaluate(Exchange exchange) {
                 Object bean = expression.evaluate(exchange, Object.class);
-                Expression exp = language.createExpression(null, new Object[] 
{ bean, method });
+                Expression exp = language.createExpression(null, new Object[] 
{ null, bean, method });
                 exp.init(exchange.getContext());
                 return exp.evaluate(exchange, Object.class);
             }

Reply via email to