From 5d46377d224970e1261a1e9edcc5f57cd5936961 Mon Sep 17 00:00:00 2001 From: jimtng <2554958+jimtng@users.noreply.github.com> Date: Sat, 15 Apr 2023 02:39:20 +1000 Subject: [PATCH] Fix IndexOutOfBoundsException in ScriptEngineFactoryHelper (#3549) * Fix IndexOutOfBoundsException in ScriptEngineFactoryHelper Signed-off-by: Jimmy Tanagra --- .../script/internal/ScriptEngineFactoryHelper.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/ScriptEngineFactoryHelper.java b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/ScriptEngineFactoryHelper.java index 6acbfeac2d..46871bc9cc 100644 --- a/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/ScriptEngineFactoryHelper.java +++ b/bundles/org.openhab.core.automation.module.script/src/main/java/org/openhab/core/automation/module/script/internal/ScriptEngineFactoryHelper.java @@ -59,9 +59,14 @@ public class ScriptEngineFactoryHelper { } public static String getPreferredMimeType(ScriptEngineFactory factory) { - List mimeTypes = new ArrayList<>(factory.getScriptTypes()); + List scriptTypes = factory.getScriptTypes(); + if (scriptTypes.isEmpty()) { + throw new IllegalStateException( + factory.getClass().getName() + " does not support any scriptTypes. Please report it as a bug."); + } + List mimeTypes = new ArrayList<>(scriptTypes); mimeTypes.removeIf(mimeType -> !mimeType.contains("application") || "application/python".equals(mimeType)); - return mimeTypes.isEmpty() ? factory.getScriptTypes().get(0) : mimeTypes.get(0); + return mimeTypes.isEmpty() ? scriptTypes.get(0) : mimeTypes.get(0); } public static String getLanguageName(javax.script.ScriptEngineFactory factory) {