From 4be047ba928316c50c8c0d34aa4075ee50d98d5f Mon Sep 17 00:00:00 2001 From: Jonathan Lukas Date: Wed, 5 Mar 2025 23:05:34 +0100 Subject: [PATCH 1/2] refactored interfaces --- .../connector/script/ScriptConnector.java | 40 ++----------------- .../script/ScriptConnectorInput.java | 12 +++--- .../script/ScriptConnectorLegacy.java | 3 +- .../connector/script/ScriptEvaluator.java | 7 ++-- .../connector/script/ScriptTypeUtil.java | 37 +++++++++++++++++ .../script/spi/ScriptEvaluatorExtension.java | 3 +- .../spi/impl/MustacheEvaluatorExtension.java | 7 +++- .../script/EvaluationGroovyTest.java | 15 ++++--- .../script/EvaluationJavaScriptTest.java | 18 +++++---- .../script/EvaluationKotlinTest.java | 14 ++++--- .../script/EvaluationMustacheTest.java | 14 ++++--- .../connector/script/ScriptEvaluatorTest.java | 27 ++++++++----- 12 files changed, 113 insertions(+), 84 deletions(-) create mode 100644 connector/src/main/java/io/camunda/community/connector/script/ScriptTypeUtil.java diff --git a/connector/src/main/java/io/camunda/community/connector/script/ScriptConnector.java b/connector/src/main/java/io/camunda/community/connector/script/ScriptConnector.java index 326cc03e..54606b14 100644 --- a/connector/src/main/java/io/camunda/community/connector/script/ScriptConnector.java +++ b/connector/src/main/java/io/camunda/community/connector/script/ScriptConnector.java @@ -1,8 +1,5 @@ package io.camunda.community.connector.script; -import io.camunda.community.connector.script.ScriptConnectorInput.Type; -import io.camunda.community.connector.script.ScriptConnectorInput.Type.Embedded; -import io.camunda.community.connector.script.ScriptConnectorInput.Type.Resource; import io.camunda.connector.api.annotation.OutboundConnector; import io.camunda.connector.api.outbound.OutboundConnectorContext; import io.camunda.connector.api.outbound.OutboundConnectorFunction; @@ -22,21 +19,14 @@ public class ScriptConnector implements OutboundConnectorFunction { public static final String SCRIPT_CONNECTOR_TYPE = "io.camunda.community:script-connector"; private final ScriptEvaluator scriptEvaluator; - private final ScriptResourceProvider scriptResourceProvider; private final LanguageProvider languageProvider; public ScriptConnector() { - scriptEvaluator = new ScriptEvaluator(); - scriptResourceProvider = new ScriptResourceProvider(); - languageProvider = new LanguageProvider(); + this(new ScriptEvaluator(), new LanguageProvider()); } - public ScriptConnector( - ScriptEvaluator scriptEvaluator, - ScriptResourceProvider scriptResourceProvider, - LanguageProvider languageProvider) { + public ScriptConnector(ScriptEvaluator scriptEvaluator, LanguageProvider languageProvider) { this.scriptEvaluator = scriptEvaluator; - this.scriptResourceProvider = scriptResourceProvider; this.languageProvider = languageProvider; } @@ -44,30 +34,6 @@ public ScriptConnector( public Object execute(OutboundConnectorContext outboundConnectorContext) { ScriptConnectorInput scriptConnectorInput = outboundConnectorContext.bindVariables(ScriptConnectorInput.class); - String script = extractScript(scriptConnectorInput); - String language = extractLanguage(scriptConnectorInput); - return scriptEvaluator.evaluate(language, script, scriptConnectorInput.context()); - } - - private String extractLanguage(ScriptConnectorInput scriptConnectorInput) { - Type script = scriptConnectorInput.script(); - if (script instanceof Embedded e) { - return e.language(); - } else if (script instanceof Resource r) { - return languageProvider.getLanguageForScriptResource(r.resource()); - } else { - throw new IllegalStateException("No script or resource has been provided"); - } - } - - private String extractScript(ScriptConnectorInput scriptConnectorInput) { - Type script = scriptConnectorInput.script(); - if (script instanceof Embedded e) { - return e.embedded(); - } else if (script instanceof Resource r) { - return scriptResourceProvider.provideScript(r.resource()); - } else { - throw new IllegalStateException("No script or resource has been provided"); - } + return scriptEvaluator.evaluate(scriptConnectorInput.script(), scriptConnectorInput.context()); } } diff --git a/connector/src/main/java/io/camunda/community/connector/script/ScriptConnectorInput.java b/connector/src/main/java/io/camunda/community/connector/script/ScriptConnectorInput.java index 3adc3b1a..da1fa5bd 100644 --- a/connector/src/main/java/io/camunda/community/connector/script/ScriptConnectorInput.java +++ b/connector/src/main/java/io/camunda/community/connector/script/ScriptConnectorInput.java @@ -4,8 +4,8 @@ import com.fasterxml.jackson.annotation.JsonSubTypes; import com.fasterxml.jackson.annotation.JsonTypeInfo; import com.fasterxml.jackson.annotation.JsonTypeInfo.Id; -import io.camunda.community.connector.script.ScriptConnectorInput.Type.Embedded; -import io.camunda.community.connector.script.ScriptConnectorInput.Type.Resource; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Embedded; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Resource; import io.camunda.connector.generator.dsl.Property.FeelMode; import io.camunda.connector.generator.java.annotation.TemplateProperty; import jakarta.validation.Valid; @@ -17,7 +17,7 @@ public record ScriptConnectorInput( @TemplateProperty(label = "Script description", description = "How the script is implemented") @NotNull @Valid - Type script, + ScriptType script, @TemplateProperty( label = "Script context", feel = FeelMode.required, @@ -29,7 +29,7 @@ public record ScriptConnectorInput( @JsonSubTypes.Type(value = Embedded.class, name = "embedded"), @JsonSubTypes.Type(value = Resource.class, name = "resource") }) - sealed interface Type { + public sealed interface ScriptType { record Embedded( @TemplateProperty(label = "Script", description = "The script to be executed") @NotNull String embedded, @@ -39,7 +39,7 @@ record Embedded( "The language the script uses. By default, the ones available are: javascript, groovy, kotlin, mustache") @NotNull String language) - implements Type {} + implements ScriptType {} record Resource( @TemplateProperty( @@ -48,6 +48,6 @@ record Resource( "The resource that should be executed. Should be prefixed with 'classpath:' for a classpath resource, 'file:' for a file system resource. If none of these prefixes matches, it will attempt to load the provided resource as URL.") @NotNull String resource) - implements Type {} + implements ScriptType {} } } diff --git a/connector/src/main/java/io/camunda/community/connector/script/ScriptConnectorLegacy.java b/connector/src/main/java/io/camunda/community/connector/script/ScriptConnectorLegacy.java index cad0647d..3c709697 100644 --- a/connector/src/main/java/io/camunda/community/connector/script/ScriptConnectorLegacy.java +++ b/connector/src/main/java/io/camunda/community/connector/script/ScriptConnectorLegacy.java @@ -2,6 +2,7 @@ import static java.util.Optional.*; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Embedded; import io.camunda.connector.api.annotation.OutboundConnector; import io.camunda.connector.api.outbound.OutboundConnectorContext; import io.camunda.connector.api.outbound.OutboundConnectorFunction; @@ -28,7 +29,7 @@ public Object execute(OutboundConnectorContext outboundConnectorContext) throws final Map variables = getVariablesAsMap(outboundConnectorContext); - return scriptEvaluator.evaluate(language, script, variables); + return scriptEvaluator.evaluate(new Embedded(script, language), variables); } private String getLanguage(Map customHeaders) { diff --git a/connector/src/main/java/io/camunda/community/connector/script/ScriptEvaluator.java b/connector/src/main/java/io/camunda/community/connector/script/ScriptEvaluator.java index 0ce536ce..6540add1 100644 --- a/connector/src/main/java/io/camunda/community/connector/script/ScriptEvaluator.java +++ b/connector/src/main/java/io/camunda/community/connector/script/ScriptEvaluator.java @@ -15,6 +15,7 @@ */ package io.camunda.community.connector.script; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType; import io.camunda.community.connector.script.spi.ScriptEvaluatorExtension; import java.util.HashMap; import java.util.Map; @@ -49,14 +50,14 @@ public ScriptEvaluator(Set extensions) { .forEach(language -> scriptEvaluatorExtensions.put(language, e))); } - public Object evaluate(String language, String script, Map variables) { - + public Object evaluate(ScriptType script, Map variables) { + String language = ScriptTypeUtil.extractLanguage(script); if (scriptEvaluatorExtensions.containsKey(language)) { final var scriptEvaluator = scriptEvaluatorExtensions.get(language); return scriptEvaluator.evaluateScript(script, variables); } - return evalWithScriptEngine(language, script, variables); + return evalWithScriptEngine(language, ScriptTypeUtil.extractScript(script), variables); } private Object evalWithScriptEngine( diff --git a/connector/src/main/java/io/camunda/community/connector/script/ScriptTypeUtil.java b/connector/src/main/java/io/camunda/community/connector/script/ScriptTypeUtil.java new file mode 100644 index 00000000..92a57699 --- /dev/null +++ b/connector/src/main/java/io/camunda/community/connector/script/ScriptTypeUtil.java @@ -0,0 +1,37 @@ +package io.camunda.community.connector.script; + +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Embedded; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Resource; + +public class ScriptTypeUtil { + + public static String extractScript(ScriptType script) { + return extractScript(script, new ScriptResourceProvider()); + } + + public static String extractScript( + ScriptType script, ScriptResourceProvider scriptResourceProvider) { + if (script instanceof Embedded e) { + return e.embedded(); + } else if (script instanceof Resource(String resource)) { + return scriptResourceProvider.provideScript(resource); + } else { + throw new IllegalStateException("No script or resource has been provided"); + } + } + + public static String extractLanguage(ScriptType script) { + return extractLanguage(script, new LanguageProvider()); + } + + public static String extractLanguage(ScriptType script, LanguageProvider languageProvider) { + if (script instanceof Embedded e) { + return e.language(); + } else if (script instanceof Resource(String resource)) { + return languageProvider.getLanguageForScriptResource(resource); + } else { + throw new IllegalStateException("No script or resource has been provided"); + } + } +} diff --git a/connector/src/main/java/io/camunda/community/connector/script/spi/ScriptEvaluatorExtension.java b/connector/src/main/java/io/camunda/community/connector/script/spi/ScriptEvaluatorExtension.java index 53889f2e..2213f7e6 100644 --- a/connector/src/main/java/io/camunda/community/connector/script/spi/ScriptEvaluatorExtension.java +++ b/connector/src/main/java/io/camunda/community/connector/script/spi/ScriptEvaluatorExtension.java @@ -1,5 +1,6 @@ package io.camunda.community.connector.script.spi; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType; import java.util.List; import java.util.Map; import java.util.ServiceLoader; @@ -13,5 +14,5 @@ static List load() { Set getEvaluatedLanguage(); - Object evaluateScript(String script, Map context); + Object evaluateScript(ScriptType script, Map context); } diff --git a/connector/src/main/java/io/camunda/community/connector/script/spi/impl/MustacheEvaluatorExtension.java b/connector/src/main/java/io/camunda/community/connector/script/spi/impl/MustacheEvaluatorExtension.java index 24a821e4..19190b8c 100644 --- a/connector/src/main/java/io/camunda/community/connector/script/spi/impl/MustacheEvaluatorExtension.java +++ b/connector/src/main/java/io/camunda/community/connector/script/spi/impl/MustacheEvaluatorExtension.java @@ -2,6 +2,8 @@ import com.samskivert.mustache.Mustache; import com.samskivert.mustache.Template; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType; +import io.camunda.community.connector.script.ScriptTypeUtil; import io.camunda.community.connector.script.spi.ScriptEvaluatorExtension; import java.util.Map; import java.util.Set; @@ -13,8 +15,9 @@ public Set getEvaluatedLanguage() { } @Override - public Object evaluateScript(String script, Map context) { - final Template template = Mustache.compiler().compile(script); + public Object evaluateScript(ScriptType script, Map context) { + String loadedScript = ScriptTypeUtil.extractScript(script); + final Template template = Mustache.compiler().compile(loadedScript); return template.execute(context); } } diff --git a/connector/src/test/java/io/camunda/community/connector/script/EvaluationGroovyTest.java b/connector/src/test/java/io/camunda/community/connector/script/EvaluationGroovyTest.java index 1bf7acc3..1631afd0 100644 --- a/connector/src/test/java/io/camunda/community/connector/script/EvaluationGroovyTest.java +++ b/connector/src/test/java/io/camunda/community/connector/script/EvaluationGroovyTest.java @@ -18,6 +18,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.entry; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Embedded; import java.util.Collections; import java.util.List; import java.util.Map; @@ -31,7 +32,7 @@ public class EvaluationGroovyTest { public void shouldReturnNumber() { final Object result = - scriptEvaluator.evaluate("groovy", "x * 2", Collections.singletonMap("x", 2)); + scriptEvaluator.evaluate(new Embedded("x * 2", "groovy"), Collections.singletonMap("x", 2)); assertThat(result).isEqualTo(4); } @@ -40,7 +41,8 @@ public void shouldReturnNumber() { public void shouldReturnString() { final Object result = - scriptEvaluator.evaluate("groovy", "'url?id=' + id", Collections.singletonMap("id", "123")); + scriptEvaluator.evaluate( + new Embedded("'url?id=' + id", "groovy"), Collections.singletonMap("id", "123")); assertThat(result).isEqualTo("url?id=123"); } @@ -50,7 +52,8 @@ public void shouldReturnList() { @SuppressWarnings("unchecked") final List result = (List) - scriptEvaluator.evaluate("groovy", "[1,2,3]", Collections.singletonMap("x", 3)); + scriptEvaluator.evaluate( + new Embedded("[1,2,3]", "groovy"), Collections.singletonMap("x", 3)); assertThat(result).hasSize(3).contains(1, 2, 3); } @@ -61,7 +64,8 @@ public void shouldReturnObject() { final Map result = (Map) scriptEvaluator.evaluate( - "groovy", "[foo:foo,bar:'bar']", Collections.singletonMap("foo", 123)); + new Embedded("[foo:foo,bar:'bar']", "groovy"), + Collections.singletonMap("foo", 123)); assertThat(result).hasSize(2).contains(entry("foo", 123), entry("bar", "bar")); } @@ -71,7 +75,8 @@ public void shouldReturnResultOfStringInterpolation() { final Object result = scriptEvaluator.evaluate( - "groovy", "\"url?id=${id}\".toString()", Collections.singletonMap("id", 123)); + new Embedded("\"url?id=${id}\".toString()", "groovy"), + Collections.singletonMap("id", 123)); assertThat(result).isEqualTo("url?id=123"); } diff --git a/connector/src/test/java/io/camunda/community/connector/script/EvaluationJavaScriptTest.java b/connector/src/test/java/io/camunda/community/connector/script/EvaluationJavaScriptTest.java index d67d4385..e60e5ae3 100644 --- a/connector/src/test/java/io/camunda/community/connector/script/EvaluationJavaScriptTest.java +++ b/connector/src/test/java/io/camunda/community/connector/script/EvaluationJavaScriptTest.java @@ -15,9 +15,9 @@ */ package io.camunda.community.connector.script; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.entry; +import static org.assertj.core.api.Assertions.*; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Embedded; import java.util.Collections; import java.util.List; import java.util.Map; @@ -31,7 +31,8 @@ public class EvaluationJavaScriptTest { public void shouldReturnNumber() { final Object result = - scriptEvaluator.evaluate("javascript", "x * 2", Collections.singletonMap("x", 2)); + scriptEvaluator.evaluate( + new Embedded("x * 2", "javascript"), Collections.singletonMap("x", 2)); assertThat(result).isEqualTo(4); } @@ -41,7 +42,7 @@ public void shouldReturnString() { final Object result = scriptEvaluator.evaluate( - "javascript", "'url?id=' + id", Collections.singletonMap("id", 123)); + new Embedded("'url?id=' + id", "javascript"), Collections.singletonMap("id", 123)); assertThat(result).isEqualTo("url?id=123"); } @@ -53,8 +54,7 @@ public void shouldReturnObject() { final Map result = (Map) scriptEvaluator.evaluate( - "javascript", - "x = {}; " + "x.bar = 'bar'; " + "x.foo = foo; " + "x", + new Embedded("x = {}; " + "x.bar = 'bar'; " + "x.foo = foo; " + "x", "javascript"), Collections.singletonMap("foo", 123)); assertThat(result).hasSize(2).contains(entry("bar", "bar"), entry("foo", 123)); @@ -67,7 +67,8 @@ public void shouldReturnInlineObject() { final Map result = (Map) scriptEvaluator.evaluate( - "javascript", "({'foo':foo,'bar':'bar'})", Collections.singletonMap("foo", 123)); + new Embedded("({'foo':foo,'bar':'bar'})", "javascript"), + Collections.singletonMap("foo", 123)); assertThat(result).hasSize(2).contains(entry("bar", "bar"), entry("foo", 123)); } @@ -78,7 +79,8 @@ public void shouldReturnArray() { @SuppressWarnings("unchecked") final List result = (List) - scriptEvaluator.evaluate("javascript", "['foo','bar']", Collections.emptyMap()); + scriptEvaluator.evaluate( + new Embedded("['foo','bar']", "javascript"), Collections.emptyMap()); assertThat(result).hasSize(2).contains("foo", "bar"); } diff --git a/connector/src/test/java/io/camunda/community/connector/script/EvaluationKotlinTest.java b/connector/src/test/java/io/camunda/community/connector/script/EvaluationKotlinTest.java index e9e284f4..a6be4a29 100644 --- a/connector/src/test/java/io/camunda/community/connector/script/EvaluationKotlinTest.java +++ b/connector/src/test/java/io/camunda/community/connector/script/EvaluationKotlinTest.java @@ -3,6 +3,7 @@ import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.Assertions.entry; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Embedded; import java.util.Collections; import java.util.List; import java.util.Map; @@ -15,7 +16,7 @@ public class EvaluationKotlinTest { @Test public void shouldReturnNumber() { final Object result = - scriptEvaluator.evaluate("kotlin", "x * 2", Collections.singletonMap("x", 2)); + scriptEvaluator.evaluate(new Embedded("x * 2", "kotlin"), Collections.singletonMap("x", 2)); assertThat(result).isEqualTo(4); } @@ -24,7 +25,7 @@ public void shouldReturnNumber() { public void shouldReturnString() { final Object result = scriptEvaluator.evaluate( - "kotlin", "\"url?id=\" + id", Collections.singletonMap("id", "123")); + new Embedded("\"url?id=\" + id", "kotlin"), Collections.singletonMap("id", "123")); assertThat(result).isEqualTo("url?id=123"); } @@ -34,7 +35,8 @@ public void shouldReturnList() { @SuppressWarnings("unchecked") final List result = (List) - scriptEvaluator.evaluate("kotlin", "listOf(1, 2, x)", Collections.singletonMap("x", 3)); + scriptEvaluator.evaluate( + new Embedded("listOf(1, 2, x)", "kotlin"), Collections.singletonMap("x", 3)); assertThat(result).hasSize(3).contains(1, 2, 3); } @@ -45,8 +47,7 @@ public void shouldReturnObject() { final Map result = (Map) scriptEvaluator.evaluate( - "kotlin", - "mapOf(\"foo\" to foo, \"bar\" to \"bar\")", + new Embedded("mapOf(\"foo\" to foo, \"bar\" to \"bar\")", "kotlin"), Collections.singletonMap("foo", 123)); assertThat(result).hasSize(2).contains(entry("foo", 123), entry("bar", "bar")); @@ -57,7 +58,8 @@ public void shouldReturnResultOfStringInterpolation() { final Object result = scriptEvaluator.evaluate( - "kotlin", "\"url?id=${id}\".toString()", Collections.singletonMap("id", 123)); + new Embedded("\"url?id=${id}\".toString()", "kotlin"), + Collections.singletonMap("id", 123)); assertThat(result).isEqualTo("url?id=123"); } diff --git a/connector/src/test/java/io/camunda/community/connector/script/EvaluationMustacheTest.java b/connector/src/test/java/io/camunda/community/connector/script/EvaluationMustacheTest.java index e54e4b32..ee8b724e 100644 --- a/connector/src/test/java/io/camunda/community/connector/script/EvaluationMustacheTest.java +++ b/connector/src/test/java/io/camunda/community/connector/script/EvaluationMustacheTest.java @@ -17,6 +17,7 @@ import static org.assertj.core.api.Assertions.assertThat; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Embedded; import java.util.List; import java.util.Map; import org.junit.jupiter.api.Test; @@ -29,7 +30,8 @@ public class EvaluationMustacheTest { public void shouldReplaceStringVariables() { final Object result = - scriptEvaluator.evaluate("mustache", "{{x}} and {{y}}", Map.of("x", "a", "y", "b")); + scriptEvaluator.evaluate( + new Embedded("{{x}} and {{y}}", "mustache"), Map.of("x", "a", "y", "b")); assertThat(result).isEqualTo("a and b"); } @@ -38,7 +40,8 @@ public void shouldReplaceStringVariables() { public void shouldReplaceNumericVariables() { final Object result = - scriptEvaluator.evaluate("mustache", "{{x}} and {{y}}", Map.of("x", "1", "y", "2")); + scriptEvaluator.evaluate( + new Embedded("{{x}} and {{y}}", "mustache"), Map.of("x", "1", "y", "2")); assertThat(result).isEqualTo("1 and 2"); } @@ -47,7 +50,7 @@ public void shouldReplaceNumericVariables() { public void shouldReplaceListVariables() { final Object result = - scriptEvaluator.evaluate("mustache", "{{x}}", Map.of("x", List.of(1, 2, 3))); + scriptEvaluator.evaluate(new Embedded("{{x}}", "mustache"), Map.of("x", List.of(1, 2, 3))); assertThat(result).isEqualTo("[1, 2, 3]"); } @@ -56,7 +59,7 @@ public void shouldReplaceListVariables() { public void shouldReplaceObjectVariables() { final Object result = - scriptEvaluator.evaluate("mustache", "{{x.y}}", Map.of("x", Map.of("y", 1))); + scriptEvaluator.evaluate(new Embedded("{{x.y}}", "mustache"), Map.of("x", Map.of("y", 1))); assertThat(result).isEqualTo("1"); } @@ -65,7 +68,8 @@ public void shouldReplaceObjectVariables() { public void shouldIterateOverListVariable() { final Object result = - scriptEvaluator.evaluate("mustache", "{{#x}}i:{{.}} {{/x}}", Map.of("x", List.of(1, 2, 3))); + scriptEvaluator.evaluate( + new Embedded("{{#x}}i:{{.}} {{/x}}", "mustache"), Map.of("x", List.of(1, 2, 3))); assertThat(result).isEqualTo("i:1 i:2 i:3 "); } diff --git a/connector/src/test/java/io/camunda/community/connector/script/ScriptEvaluatorTest.java b/connector/src/test/java/io/camunda/community/connector/script/ScriptEvaluatorTest.java index f4818e5e..555fb841 100644 --- a/connector/src/test/java/io/camunda/community/connector/script/ScriptEvaluatorTest.java +++ b/connector/src/test/java/io/camunda/community/connector/script/ScriptEvaluatorTest.java @@ -15,9 +15,9 @@ */ package io.camunda.community.connector.script; -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.assertj.core.api.Assertions.*; +import io.camunda.community.connector.script.ScriptConnectorInput.ScriptType.Embedded; import java.util.Collections; import org.junit.jupiter.api.Test; @@ -27,21 +27,24 @@ public class ScriptEvaluatorTest { @Test public void shouldEvaluateJavaScript() { - final Object result = scriptEvaluator.evaluate("javascript", "123", Collections.emptyMap()); + final Object result = + scriptEvaluator.evaluate(new Embedded("123", "javascript"), Collections.emptyMap()); assertThat(result).isEqualTo(123); } @Test public void shouldEvaluateGroovy() { - final Object result = scriptEvaluator.evaluate("groovy", "123", Collections.emptyMap()); + final Object result = + scriptEvaluator.evaluate(new Embedded("123", "groovy"), Collections.emptyMap()); assertThat(result).isEqualTo(123); } @Test public void shouldEvaluateKotlin() { - final Object result = scriptEvaluator.evaluate("kotlin", "123", Collections.emptyMap()); + final Object result = + scriptEvaluator.evaluate(new Embedded("123", "kotlin"), Collections.emptyMap()); assertThat(result).isEqualTo(123); } @@ -50,7 +53,8 @@ public void shouldEvaluateKotlin() { public void shouldEvaluateJavaScriptWithVariables() { final Object result = - scriptEvaluator.evaluate("javascript", "a", Collections.singletonMap("a", 123)); + scriptEvaluator.evaluate( + new Embedded("a", "javascript"), Collections.singletonMap("a", 123)); assertThat(result).isEqualTo(123); } @@ -59,7 +63,7 @@ public void shouldEvaluateJavaScriptWithVariables() { public void shouldEvaluateGroovyWithVariables() { final Object result = - scriptEvaluator.evaluate("groovy", "a", Collections.singletonMap("a", 123)); + scriptEvaluator.evaluate(new Embedded("a", "groovy"), Collections.singletonMap("a", 123)); assertThat(result).isEqualTo(123); } @@ -67,20 +71,23 @@ public void shouldEvaluateGroovyWithVariables() { @Test public void shouldEvaluateKotlinWithVariables() { final Object result = - scriptEvaluator.evaluate("kotlin", "a", Collections.singletonMap("a", 123)); + scriptEvaluator.evaluate(new Embedded("a", "kotlin"), Collections.singletonMap("a", 123)); assertThat(result).isEqualTo(123); } @Test public void shouldThrowExceptionIfScriptEngineNotFound() { - assertThatThrownBy(() -> scriptEvaluator.evaluate("foobar", "", Collections.emptyMap())) + assertThatThrownBy( + () -> scriptEvaluator.evaluate(new Embedded("", "foobar"), Collections.emptyMap())) .hasCause(new RuntimeException("No script engine found with name 'foobar'")); } @Test public void shouldThrowExceptionIfScriptEvaluationFails() { - assertThatThrownBy(() -> scriptEvaluator.evaluate("javascript", "???", Collections.emptyMap())) + assertThatThrownBy( + () -> + scriptEvaluator.evaluate(new Embedded("???", "javascript"), Collections.emptyMap())) .hasMessage("Failed to evaluate script '???' (javascript)"); } } From 96a3ef646f1f41385f4e711f110e7ae6bac2f080 Mon Sep 17 00:00:00 2001 From: Jonathan Lukas Date: Wed, 5 Mar 2025 23:08:03 +0100 Subject: [PATCH 2/2] removed unused property --- .../camunda/community/connector/script/ScriptConnector.java | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/connector/src/main/java/io/camunda/community/connector/script/ScriptConnector.java b/connector/src/main/java/io/camunda/community/connector/script/ScriptConnector.java index 54606b14..d3370e77 100644 --- a/connector/src/main/java/io/camunda/community/connector/script/ScriptConnector.java +++ b/connector/src/main/java/io/camunda/community/connector/script/ScriptConnector.java @@ -19,15 +19,13 @@ public class ScriptConnector implements OutboundConnectorFunction { public static final String SCRIPT_CONNECTOR_TYPE = "io.camunda.community:script-connector"; private final ScriptEvaluator scriptEvaluator; - private final LanguageProvider languageProvider; public ScriptConnector() { - this(new ScriptEvaluator(), new LanguageProvider()); + this(new ScriptEvaluator()); } - public ScriptConnector(ScriptEvaluator scriptEvaluator, LanguageProvider languageProvider) { + public ScriptConnector(ScriptEvaluator scriptEvaluator) { this.scriptEvaluator = scriptEvaluator; - this.languageProvider = languageProvider; } @Override