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

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

commit 341fb2f6a6c7653da72c61660284429a64f1fe0d
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Fri Feb 2 11:08:35 2024 +0100

    CAMEL-20378: Languages should be thread-safe and be configured only via 
properties array, all in the same way.
---
 .../apache/camel/language/wasm/WasmExpression.java |  4 +++
 .../apache/camel/language/wasm/WasmLanguage.java   | 37 ++++++++--------------
 2 files changed, 17 insertions(+), 24 deletions(-)

diff --git 
a/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmExpression.java
 
b/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmExpression.java
index d415df9cb7b..17095d01a52 100644
--- 
a/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmExpression.java
+++ 
b/components/camel-wasm/src/main/java/org/apache/camel/language/wasm/WasmExpression.java
@@ -55,6 +55,10 @@ public class WasmExpression extends ExpressionAdapter 
implements ExpressionResul
     public void init(CamelContext camelContext) {
         super.init(camelContext);
 
+        if (module == null) {
+            throw new IllegalArgumentException("Module must be configured");
+        }
+
         this.typeConverter = camelContext.getTypeConverter();
 
         if (resultTypeName != null && (resultType == null || resultType == 
Object.class)) {
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 aae821bb3d3..62632ea79ae 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
@@ -19,7 +19,6 @@ package org.apache.camel.language.wasm;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Expression;
 import org.apache.camel.Predicate;
-import org.apache.camel.StaticService;
 import org.apache.camel.spi.PropertyConfigurer;
 import org.apache.camel.spi.annotations.Language;
 import org.apache.camel.support.ExpressionToPredicateAdapter;
@@ -28,11 +27,11 @@ import 
org.apache.camel.support.component.PropertyConfigurerSupport;
 import org.apache.camel.wasm.Wasm;
 
 @Language(Wasm.SCHEME)
-public class WasmLanguage extends TypedLanguageSupport implements 
PropertyConfigurer, StaticService {
+public class WasmLanguage extends TypedLanguageSupport implements 
PropertyConfigurer {
+
     private String module;
 
     public WasmLanguage() {
-
     }
 
     public String getModule() {
@@ -50,6 +49,10 @@ 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;
@@ -58,34 +61,19 @@ public class WasmLanguage extends TypedLanguageSupport 
implements PropertyConfig
         }
     }
 
-    @Override
-    public void start() {
-        // noop
-    }
-
-    @Override
-    public void stop() {
-        // noop
-    }
-
     @Override
     public Predicate createPredicate(String expression) {
         return 
ExpressionToPredicateAdapter.toPredicate(createExpression(expression));
     }
 
     @Override
-    public Predicate createPredicate(String expression, Object[] properties) {
-        return 
ExpressionToPredicateAdapter.toPredicate(createExpression(expression, 
properties));
+    public Expression createExpression(String expression) {
+        return createExpression(expression, null);
     }
 
     @Override
-    public Expression createExpression(String expression) {
-        WasmExpression answer = new WasmExpression(expression);
-        answer.setResultType(getResultType());
-        answer.setModule(getModule());
-        answer.init(getCamelContext());
-
-        return answer;
+    public Predicate createPredicate(String expression, Object[] properties) {
+        return 
ExpressionToPredicateAdapter.toPredicate(createExpression(expression, 
properties));
     }
 
     @Override
@@ -93,8 +81,9 @@ public class WasmLanguage extends TypedLanguageSupport 
implements PropertyConfig
         WasmExpression answer = new WasmExpression(expression);
         answer.setResultType(property(Class.class, properties, 0, 
getResultType()));
         answer.setModule(property(String.class, properties, 1, getModule()));
-        answer.init(getCamelContext());
-
+        if (getCamelContext() != null) {
+            answer.init(getCamelContext());
+        }
         return answer;
     }
 }

Reply via email to