This is an automated email from the ASF dual-hosted git repository. SvenO3 pushed a commit to branch remove-groovy-support-from-adapter-script-transformation in repository https://gitbox.apache.org/repos/asf/streampipes.git
commit 7ed9d3fa0362dad092e7d424488b23540d8985c5 Author: Sven Oehler <[email protected]> AuthorDate: Mon Jun 29 15:26:56 2026 +0200 Add script language validation --- .../management/management/GuessManagement.java | 2 +- .../transformer/api/TransformationEngines.java | 26 ++++++++++++++++++++++ .../connect/AdapterWorkerManagement.java | 13 +++++++++++ 3 files changed, 40 insertions(+), 1 deletion(-) diff --git a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/GuessManagement.java b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/GuessManagement.java index 1cbde82a00..700ad4e0ac 100644 --- a/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/GuessManagement.java +++ b/streampipes-connect-management/src/main/java/org/apache/streampipes/connect/management/management/GuessManagement.java @@ -131,7 +131,7 @@ public class GuessManagement { throw new AdapterException("No samples available to transform"); } - } catch (ScriptCompilationException | ScriptExecutionException e) { + } catch (ScriptCompilationException | ScriptExecutionException | IllegalArgumentException e) { throw new AdapterException(String.format("Could not execute script: %s", e.getMessage())); } } diff --git a/streampipes-connect-transformer-api/src/main/java/org/apache/streampipes/connect/transformer/api/TransformationEngines.java b/streampipes-connect-transformer-api/src/main/java/org/apache/streampipes/connect/transformer/api/TransformationEngines.java index 99b2a8863c..01ee009441 100644 --- a/streampipes-connect-transformer-api/src/main/java/org/apache/streampipes/connect/transformer/api/TransformationEngines.java +++ b/streampipes-connect-transformer-api/src/main/java/org/apache/streampipes/connect/transformer/api/TransformationEngines.java @@ -24,6 +24,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Supplier; +import java.util.stream.Collectors; public enum TransformationEngines { @@ -36,9 +37,16 @@ public enum TransformationEngines { } public TransformationEngine getTransformationEngine(String language) { + validateSupportedLanguage(language); return transformationEngines.get(language).get(); } + public void validateSupportedLanguage(String language) { + if (!transformationEngines.containsKey(language)) { + throw new IllegalArgumentException(unsupportedLanguageMessage(language)); + } + } + public List<ScriptMetadata> getAvailableEngineMetadata() { return transformationEngines .values() @@ -46,4 +54,22 @@ public enum TransformationEngines { .map(transformationEngineSupplier -> transformationEngineSupplier.get().metadata()) .toList(); } + + private String unsupportedLanguageMessage(String language) { + var requestedLanguage = language == null || language.isBlank() + ? "missing" + : "'" + language + "'"; + + var supportedLanguages = transformationEngines.keySet() + .stream() + .sorted() + .collect(Collectors.joining(", ")); + + var message = "Unsupported script transformation language " + requestedLanguage + ". "; + if (supportedLanguages.isBlank()) { + return message + "No script transformation languages are available."; + } + + return message + "Supported languages: " + supportedLanguages + "."; + } } diff --git a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/AdapterWorkerManagement.java b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/AdapterWorkerManagement.java index 3b495a3cb8..f3d17fd20e 100644 --- a/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/AdapterWorkerManagement.java +++ b/streampipes-extensions-management/src/main/java/org/apache/streampipes/extensions/management/connect/AdapterWorkerManagement.java @@ -19,6 +19,7 @@ package org.apache.streampipes.extensions.management.connect; import org.apache.streampipes.commons.exceptions.connect.AdapterException; +import org.apache.streampipes.connect.transformer.api.TransformationEngines; import org.apache.streampipes.extensions.api.connect.StreamPipesAdapter; import org.apache.streampipes.extensions.api.connect.context.IAdapterRuntimeContext; import org.apache.streampipes.extensions.api.monitoring.SpMonitoringManager; @@ -58,6 +59,7 @@ public class AdapterWorkerManagement { if (adapter.isPresent()) { var newAdapterInstance = adapter.get().declareConfig().getSupplier().get(); + validateScriptLanguage(adapterDescription); runningAdapterInstances.addAdapter( adapterDescription.getElementId(), newAdapterInstance, @@ -102,6 +104,17 @@ public class AdapterWorkerManagement { return new AdapterContextGenerator().makeRuntimeContext(adapterInstanceId); } + private void validateScriptLanguage(AdapterDescription adapterDescription) throws AdapterException { + var transformationConfig = adapterDescription.getTransformationConfig(); + if (transformationConfig != null && transformationConfig.isScriptActive()) { + try { + TransformationEngines.INSTANCE.validateSupportedLanguage(transformationConfig.getLanguage()); + } catch (IllegalArgumentException e) { + throw new AdapterException(e.getMessage(), e); + } + } + } + private void resetMonitoring(String elementId) { SpMonitoringManager.INSTANCE.reset(elementId); }
