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 2024/02/03 15:52:20 UTC

(camel) branch lang5 created (now 37c756562a9)

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

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


      at 37c756562a9 CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.

This branch includes the following new commits:

     new 2b4582724ff CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.
     new e8762a5fff1 CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.
     new ca4db0046f4 CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.
     new 37c756562a9 CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(camel) 01/04: CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.

Posted by da...@apache.org.
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 2b4582724ffe3c3be04bf4d5e143bd59ddb2e589
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Feb 3 13:06:53 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/CSimpleLanguage.java   |  2 +-
 .../camel/support/SingleInputTypedLanguageSupport.java       |  4 ++--
 .../java/org/apache/camel/support/TypedLanguageSupport.java  | 12 +-----------
 3 files changed, 4 insertions(+), 14 deletions(-)

diff --git a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleLanguage.java b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleLanguage.java
index 648974bdc09..0c38af295e0 100644
--- a/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleLanguage.java
+++ b/core/camel-core-languages/src/main/java/org/apache/camel/language/csimple/CSimpleLanguage.java
@@ -150,7 +150,7 @@ public class CSimpleLanguage extends TypedLanguageSupport implements StaticServi
 
     @Override
     public Expression createExpression(String expression, Object[] properties) {
-        Class<?> resultType = property(Class.class, properties, 0, getResultType());
+        Class<?> resultType = property(Class.class, properties, 0, null);
         if (Boolean.class == resultType || boolean.class == resultType) {
             // we want it compiled as a predicate
             return (Expression) createPredicate(expression);
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/SingleInputTypedLanguageSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/SingleInputTypedLanguageSupport.java
index c57f2055344..caf18859500 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/SingleInputTypedLanguageSupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/SingleInputTypedLanguageSupport.java
@@ -39,7 +39,7 @@ public abstract class SingleInputTypedLanguageSupport extends TypedLanguageSuppo
 
     @Override
     public Expression createExpression(String expression, Object[] properties) {
-        Class<?> type = property(Class.class, properties, 0, getResultType());
+        Class<?> type = property(Class.class, properties, 0, null);
         String variable = property(String.class, properties, 1, null);
         String header = property(String.class, properties, 2, null);
         String property = property(String.class, properties, 3, null);
@@ -52,7 +52,7 @@ public abstract class SingleInputTypedLanguageSupport extends TypedLanguageSuppo
 
     @Override
     public Predicate createPredicate(String expression, Object[] properties) {
-        Class<?> type = property(Class.class, properties, 0, getResultType());
+        Class<?> type = property(Class.class, properties, 0, null);
         String variable = property(String.class, properties, 1, null);
         String header = property(String.class, properties, 2, null);
         String property = property(String.class, properties, 3, null);
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/TypedLanguageSupport.java b/core/camel-support/src/main/java/org/apache/camel/support/TypedLanguageSupport.java
index 921f1d1c5b7..5bd2b4bbe92 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/TypedLanguageSupport.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/TypedLanguageSupport.java
@@ -25,19 +25,9 @@ import org.apache.camel.support.builder.ExpressionBuilder;
  */
 public abstract class TypedLanguageSupport extends LanguageSupport {
 
-    private Class<?> resultType;
-
-    public Class<?> getResultType() {
-        return resultType;
-    }
-
-    public void setResultType(Class<?> resultType) {
-        this.resultType = resultType;
-    }
-
     @Override
     public Expression createExpression(String expression, Object[] properties) {
-        Class<?> type = property(Class.class, properties, 0, getResultType());
+        Class<?> type = property(Class.class, properties, 0, null);
         if (type == null || type == Object.class) {
             return createExpression(expression);
         }


(camel) 03/04: CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.

Posted by da...@apache.org.
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 ca4db0046f430517c19cb89c6883cdea802c8fad
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Feb 3 14:18:00 2024 +0100

    CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.
---
 .../main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java   | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
index 0a6126ac729..84d998fa840 100644
--- a/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
+++ b/core/camel-core-catalog/src/main/java/org/apache/camel/catalog/impl/AbstractCamelCatalog.java
@@ -1457,7 +1457,7 @@ public abstract class AbstractCamelCatalog {
                     }
                     return answer;
                 } catch (NoSuchMethodException e) {
-                     // ignore
+                    // ignore
                 }
                 if (predicate) {
                     instance.getClass().getMethod("createPredicate", String.class).invoke(instance, text);


(camel) 04/04: CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.

Posted by da...@apache.org.
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 <cl...@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);
             }


(camel) 02/04: CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.

Posted by da...@apache.org.
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 e8762a5fff1cf69e6a10a39a6118a48a05d9f42e
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Sat Feb 3 14:07:42 2024 +0100

    CAMEL-20378: Languages should be thread-safe and be configured only via properties array, all in the same way.
---
 .../apache/camel/language/bean/BeanLanguage.java   | 18 +++++++----------
 .../language/datasonnet/DatasonnetLanguage.java    | 23 ++--------------------
 .../apache/camel/language/joor/JavaLanguage.java   |  4 ++--
 .../org/apache/camel/language/jq/JqLanguage.java   |  2 +-
 .../apache/camel/jsonpath/JsonPathLanguage.java    |  6 +-----
 .../camel/component/language/LanguageEndpoint.java | 12 ++++++++---
 .../camel/language/xquery/XQueryLanguage.java      |  6 +-----
 .../apache/camel/language/wasm/WasmLanguage.java   |  6 +-----
 .../apache/camel/language/xpath/XPathLanguage.java | 14 +++++--------
 .../reifier/language/JavaExpressionReifier.java    |  4 ++--
 .../reifier/language/JoorExpressionReifier.java    |  4 ++--
 .../language/MethodCallExpressionReifier.java      | 14 ++++++-------
 12 files changed, 40 insertions(+), 73 deletions(-)

diff --git a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
index 785dddb5204..2939f1e8b13 100644
--- a/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
+++ b/components/camel-bean/src/main/java/org/apache/camel/language/bean/BeanLanguage.java
@@ -86,10 +86,6 @@ public class BeanLanguage extends TypedLanguageSupport implements ScriptingLangu
             case "validate":
                 setValidate(PropertyConfigurerSupport.property(camelContext, Boolean.class, value));
                 return true;
-            case "resultType":
-            case "resulttype":
-                setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
-                return true;
             default:
                 return false;
         }
@@ -114,19 +110,19 @@ public class BeanLanguage extends TypedLanguageSupport implements ScriptingLangu
     public Expression createExpression(String expression, Object[] properties) {
         BeanExpression answer = null;
 
-        String method = property(String.class, properties, 1, null);
-        Object bean = property(Object.class, properties, 0, null);
+        Object bean = property(Object.class, properties, 1, null);
+        String method = property(String.class, properties, 2, null);
         if (bean != null) {
             answer = new BeanExpression(bean, method);
         }
         if (answer == null) {
-            Class<?> beanType = property(Class.class, properties, 2, null);
+            Class<?> beanType = property(Class.class, properties, 3, null);
             if (beanType != null) {
                 answer = new BeanExpression(beanType, method);
             }
         }
         if (answer == null) {
-            String ref = property(String.class, properties, 3, null);
+            String ref = property(String.class, properties, 4, null);
             if (ref != null) {
                 answer = new BeanExpression(ref, method);
             }
@@ -137,14 +133,14 @@ public class BeanLanguage extends TypedLanguageSupport implements ScriptingLangu
         if (answer == null) {
             throw new IllegalArgumentException("Bean language requires bean, beanType, or ref argument");
         }
-        Object scope = property(Object.class, properties, 4, null);
+        Object scope = property(Object.class, properties, 5, null);
         if (scope instanceof BeanScope) {
             answer.setScope((BeanScope) scope);
         } else if (scope != null) {
             answer.setScope(BeanScope.valueOf(scope.toString()));
         }
-        answer.setValidate(property(boolean.class, properties, 5, isValidate()));
-        answer.setResultType(property(Class.class, properties, 6, getResultType()));
+        answer.setValidate(property(boolean.class, properties, 6, isValidate()));
+        answer.setResultType(property(Class.class, properties, 0, null));
         answer.setBeanComponent(beanComponent);
         answer.setParameterMappingStrategy(parameterMappingStrategy);
         answer.setSimple(simple);
diff --git a/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/DatasonnetLanguage.java b/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/DatasonnetLanguage.java
index 2c53f177adb..b3f5b24187c 100644
--- a/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/DatasonnetLanguage.java
+++ b/components/camel-datasonnet/src/main/java/org/apache/camel/language/datasonnet/DatasonnetLanguage.java
@@ -27,19 +27,16 @@ import com.datasonnet.Mapper;
 import com.datasonnet.document.MediaType;
 import io.github.classgraph.ClassGraph;
 import io.github.classgraph.ScanResult;
-import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.annotations.Language;
 import org.apache.camel.support.LRUCacheFactory;
 import org.apache.camel.support.TypedLanguageSupport;
-import org.apache.camel.support.component.PropertyConfigurerSupport;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 @Language("datasonnet")
-public class DatasonnetLanguage extends TypedLanguageSupport implements PropertyConfigurer {
+public class DatasonnetLanguage extends TypedLanguageSupport {
     private static final Logger LOG = LoggerFactory.getLogger(DatasonnetLanguage.class);
 
     private static final Map<String, String> CLASSPATH_IMPORTS = new HashMap<>();
@@ -84,7 +81,7 @@ public class DatasonnetLanguage extends TypedLanguageSupport implements Property
         expression = loadResource(expression);
 
         DatasonnetExpression answer = new DatasonnetExpression(expression);
-        answer.setResultType(property(Class.class, properties, 0, getResultType()));
+        answer.setResultType(property(Class.class, properties, 0, null));
         String mediaType = property(String.class, properties, 1, null);
         if (mediaType != null) {
             answer.setBodyMediaType(MediaType.valueOf(mediaType));
@@ -111,20 +108,4 @@ public class DatasonnetLanguage extends TypedLanguageSupport implements Property
         return CLASSPATH_IMPORTS;
     }
 
-    @Override
-    public boolean configure(CamelContext camelContext, Object target, String name, Object value, boolean ignoreCase) {
-        if (target != this) {
-            throw new IllegalStateException("Can only configure our own instance !");
-        }
-
-        switch (ignoreCase ? name.toLowerCase() : name) {
-            case "resultType":
-            case "resulttype":
-                setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
-                return true;
-            default:
-                return false;
-        }
-    }
-
 }
diff --git a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JavaLanguage.java b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JavaLanguage.java
index 057222b1dfa..1b246cac11a 100644
--- a/components/camel-joor/src/main/java/org/apache/camel/language/joor/JavaLanguage.java
+++ b/components/camel-joor/src/main/java/org/apache/camel/language/joor/JavaLanguage.java
@@ -129,8 +129,8 @@ public class JavaLanguage extends TypedLanguageSupport implements ScriptingLangu
     public Expression createExpression(String expression, Object[] properties) {
         JoorExpression answer = new JoorExpression(expression);
         answer.setCompiler(compiler);
-        answer.setPreCompile(property(boolean.class, properties, 0, preCompile));
-        answer.setResultType(property(Class.class, properties, 1, getResultType()));
+        answer.setResultType(property(Class.class, properties, 0, null));
+        answer.setPreCompile(property(boolean.class, properties, 1, preCompile));
         answer.setSingleQuotes(property(boolean.class, properties, 2, singleQuotes));
         if (getCamelContext() != null) {
             answer.init(getCamelContext());
diff --git a/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqLanguage.java b/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqLanguage.java
index 9be23525b60..2686e84b437 100644
--- a/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqLanguage.java
+++ b/components/camel-jq/src/main/java/org/apache/camel/language/jq/JqLanguage.java
@@ -58,7 +58,7 @@ public class JqLanguage extends SingleInputTypedLanguageSupport implements Stati
     @Override
     public Expression createExpression(Expression source, String expression, Object[] properties) {
         JqExpression answer = new JqExpression(Scope.newChildScope(rootScope), expression);
-        answer.setResultType(property(Class.class, properties, 0, getResultType()));
+        answer.setResultType(property(Class.class, properties, 0, null));
         answer.setSource(source);
         if (getCamelContext() != null) {
             answer.init(getCamelContext());
diff --git a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
index c370359cb3a..233b8689900 100644
--- a/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
+++ b/components/camel-jsonpath/src/main/java/org/apache/camel/jsonpath/JsonPathLanguage.java
@@ -104,7 +104,7 @@ public class JsonPathLanguage extends SingleInputTypedLanguageSupport implements
         JsonPathExpression answer = new JsonPathExpression(expression);
         answer.setSource(source);
         answer.setPredicate(predicate);
-        answer.setResultType(property(Class.class, properties, 0, getResultType()));
+        answer.setResultType(property(Class.class, properties, 0, null));
         answer.setSuppressExceptions(property(boolean.class, properties, 4, isSuppressExceptions()));
         answer.setAllowSimple(property(boolean.class, properties, 5, isAllowSimple()));
         answer.setAllowEasyPredicate(property(boolean.class, properties, 6, isAllowEasyPredicate()));
@@ -151,10 +151,6 @@ public class JsonPathLanguage extends SingleInputTypedLanguageSupport implements
         }
 
         switch (ignoreCase ? name.toLowerCase() : name) {
-            case "resulttype":
-            case "resultType":
-                setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
-                return true;
             case "suppressexceptions":
             case "suppressExceptions":
                 setSuppressExceptions(PropertyConfigurerSupport.property(camelContext, boolean.class, value));
diff --git a/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java b/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
index b11f673bede..3d1ef2598d8 100644
--- a/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
+++ b/components/camel-language/src/main/java/org/apache/camel/component/language/LanguageEndpoint.java
@@ -48,7 +48,8 @@ import org.apache.camel.util.IOHelper;
  * defined as well.
  */
 @UriEndpoint(firstVersion = "2.5.0", scheme = "language", title = "Language", syntax = "language:languageName:resourceUri",
-             remote = false, producerOnly = true, category = { Category.CORE, Category.SCRIPT }, headersClass = LanguageConstants.class)
+             remote = false, producerOnly = true, category = { Category.CORE, Category.SCRIPT },
+             headersClass = LanguageConstants.class)
 public class LanguageEndpoint extends ResourceEndpoint {
     private Language language;
     private Expression expression;
@@ -93,16 +94,21 @@ public class LanguageEndpoint extends ResourceEndpoint {
         if (language == null && languageName != null) {
             language = getCamelContext().resolveLanguage(languageName);
         }
+        Object[] arr = null;
         if (language instanceof TypedLanguageSupport && resultType != null) {
             Class<?> clazz = getCamelContext().getClassResolver().resolveMandatoryClass(resultType);
-            ((TypedLanguageSupport) language).setResultType(clazz);
+            arr = new Object[] { clazz };
         }
         if (cacheScript && expression == null && script != null) {
             boolean external = script.startsWith("file:") || script.startsWith("http:");
             if (!external) {
                 // we can pre optimize this as the script can be loaded from classpath or registry etc
                 script = resolveScript(script);
-                expression = language.createExpression(script);
+                if (arr != null) {
+                    expression = language.createExpression(script, arr);
+                } else {
+                    expression = language.createExpression(script);
+                }
             }
         }
         if (expression != null) {
diff --git a/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java b/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
index 6fd03362817..cf1554b837c 100644
--- a/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
+++ b/components/camel-saxon/src/main/java/org/apache/camel/language/xquery/XQueryLanguage.java
@@ -53,7 +53,7 @@ public class XQueryLanguage extends SingleInputTypedLanguageSupport implements P
     protected void configureBuilder(XQueryBuilder builder, Object[] properties, Expression source) {
         builder.setSource(source);
 
-        Class<?> clazz = property(Class.class, properties, 0, getResultType());
+        Class<?> clazz = property(Class.class, properties, 0, null);
         if (clazz != null) {
             builder.setResultType(clazz);
         }
@@ -68,10 +68,6 @@ public class XQueryLanguage extends SingleInputTypedLanguageSupport implements P
             throw new IllegalStateException("Can only configure our own instance !");
         }
         switch (ignoreCase ? name.toLowerCase() : name) {
-            case "resulttype":
-            case "resultType":
-                setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
-                return true;
             case "configuration":
             case "Configuration":
                 setConfiguration(PropertyConfigurerSupport.property(camelContext, Configuration.class, value));
diff --git a/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmLanguage.java b/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmLanguage.java
index 62632ea79ae..07579ec2418 100644
--- a/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmLanguage.java
+++ b/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmLanguage.java
@@ -49,10 +49,6 @@ public class WasmLanguage extends TypedLanguageSupport implements PropertyConfig
         }
 
         switch (ignoreCase ? name.toLowerCase() : name) {
-            case "resulttype":
-            case "resultType":
-                setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
-                return true;
             case "module":
                 setModule(PropertyConfigurerSupport.property(camelContext, String.class, value));
                 return true;
@@ -79,7 +75,7 @@ public class WasmLanguage extends TypedLanguageSupport implements PropertyConfig
     @Override
     public Expression createExpression(String expression, Object[] properties) {
         WasmExpression answer = new WasmExpression(expression);
-        answer.setResultType(property(Class.class, properties, 0, getResultType()));
+        answer.setResultType(property(Class.class, properties, 0, null));
         answer.setModule(property(String.class, properties, 1, getModule()));
         if (getCamelContext() != null) {
             answer.init(getCamelContext());
diff --git a/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java b/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
index a0e158f5010..2156f392c1a 100644
--- a/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
+++ b/components/camel-xpath/src/main/java/org/apache/camel/language/xpath/XPathLanguage.java
@@ -130,7 +130,11 @@ public class XPathLanguage extends SingleInputTypedLanguageSupport implements Pr
     protected void configureBuilder(XPathBuilder builder, Object[] properties, Expression source) {
         builder.setSource(source);
 
-        Class<?> clazz = property(Class.class, properties, 4, documentType);
+        Class<?> clazz = property(Class.class, properties, 0, null);
+        if (clazz != null) {
+            builder.setResultType(clazz);
+        }
+        clazz = property(Class.class, properties, 4, documentType);
         if (clazz != null) {
             builder.setDocumentType(clazz);
         }
@@ -138,10 +142,6 @@ public class XPathLanguage extends SingleInputTypedLanguageSupport implements Pr
         if (qname != null) {
             builder.setResultQName(qname);
         }
-        clazz = property(Class.class, properties, 0, getResultType());
-        if (clazz != null) {
-            builder.setResultType(clazz);
-        }
         Boolean bool = property(Boolean.class, properties, 6, saxon);
         if (bool != null) {
             builder.setUseSaxon(bool);
@@ -185,10 +185,6 @@ public class XPathLanguage extends SingleInputTypedLanguageSupport implements Pr
         }
         switch (ignoreCase ? name.toLowerCase() : name) {
             case "resulttype":
-            case "resultType":
-                setResultType(PropertyConfigurerSupport.property(camelContext, Class.class, value));
-                return true;
-            case "resultqname":
             case "resultQName":
                 setResultQName(PropertyConfigurerSupport.property(camelContext, QName.class, value));
                 return true;
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/JavaExpressionReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/JavaExpressionReifier.java
index d48571dfb64..4245dc83d40 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/JavaExpressionReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/JavaExpressionReifier.java
@@ -29,8 +29,8 @@ public class JavaExpressionReifier extends TypedExpressionReifier<JavaExpression
     @Override
     protected Object[] createProperties() {
         Object[] properties = new Object[3];
-        properties[0] = parseBoolean(definition.getPreCompile());
-        properties[1] = definition.getResultType();
+        properties[0] = definition.getResultType();
+        properties[1] = parseBoolean(definition.getPreCompile());
         properties[2] = parseBoolean(definition.getSingleQuotes());
         return properties;
     }
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/JoorExpressionReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/JoorExpressionReifier.java
index c986b64535a..71b787bdd81 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/JoorExpressionReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/JoorExpressionReifier.java
@@ -30,8 +30,8 @@ public class JoorExpressionReifier extends TypedExpressionReifier<JoorExpression
     @Override
     protected Object[] createProperties() {
         Object[] properties = new Object[3];
-        properties[0] = parseBoolean(definition.getPreCompile());
-        properties[1] = definition.getResultType();
+        properties[0] = definition.getResultType();
+        properties[1] = parseBoolean(definition.getPreCompile());
         properties[2] = parseBoolean(definition.getSingleQuotes());
         return properties;
     }
diff --git a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/MethodCallExpressionReifier.java b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/MethodCallExpressionReifier.java
index 2269903b5c6..7a6530c1e7c 100644
--- a/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/MethodCallExpressionReifier.java
+++ b/core/camel-core-reifier/src/main/java/org/apache/camel/reifier/language/MethodCallExpressionReifier.java
@@ -31,13 +31,13 @@ public class MethodCallExpressionReifier extends TypedExpressionReifier<MethodCa
     @Override
     protected Object[] createProperties() {
         Object[] properties = new Object[7];
-        properties[0] = definition.getInstance();
-        properties[1] = parseString(definition.getMethod());
-        properties[2] = definition.getBeanType();
-        properties[3] = parseString(definition.getRef());
-        properties[4] = parseString(definition.getScope());
-        properties[5] = parseString(definition.getValidate());
-        properties[6] = definition.getResultType();
+        properties[0] = definition.getResultType();
+        properties[1] = definition.getInstance();
+        properties[2] = parseString(definition.getMethod());
+        properties[3] = definition.getBeanType();
+        properties[4] = parseString(definition.getRef());
+        properties[5] = parseString(definition.getScope());
+        properties[6] = parseString(definition.getValidate());
         return properties;
     }