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; } }