This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit 2bb213f96592530c891bf43a44e93270895450de Author: Andy Seaborne <[email protected]> AuthorDate: Fri Nov 8 18:34:19 2024 +0000 Scripting language names --- .../jena/sparql/function/scripting/ScriptFunction.java | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/function/scripting/ScriptFunction.java b/jena-arq/src/main/java/org/apache/jena/sparql/function/scripting/ScriptFunction.java index 8fafddbec5..f0a82d8fbc 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/function/scripting/ScriptFunction.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/function/scripting/ScriptFunction.java @@ -76,14 +76,6 @@ public class ScriptFunction extends FunctionBase { private Set<String> allowList; private Set<String> denyList; - // Collect language names (for reference). -// private static Set<String> languageNames = new HashSet<>(); -// static { -// scriptEngineManager -// .getEngineFactories() -// .forEach(sef -> sef.getNames().forEach(languageNames::add)); -// } - public static boolean isScriptFunction(String uri) { if (!uri.startsWith(ARQ_NS)) { return false; @@ -201,7 +193,7 @@ public class ScriptFunction extends FunctionBase { String lookupLang = "js".equals(lang) ? "javascript" : lang; ScriptEngine engine = scriptEngineManager.getEngineByName(lookupLang); if (engine == null) - throw new ExprException("Unknown scripting language: " + lang); + throw new ExprException("Unknown scripting language: " + lookupLang+ " : "+listEngines()); // Enforce Nashorn compatibility for Graal.js if (engine.getFactory().getEngineName().equals("Graal.js")) { engine.getContext().setAttribute("polyglot.js.nashorn-compat", true, ScriptContext.ENGINE_SCOPE); @@ -240,4 +232,12 @@ public class ScriptFunction extends FunctionBase { static void clearEngineCache() { enginePools.clear(); } + + private static List<String> listEngines() { + List<String> languageNames = new ArrayList<>(); + scriptEngineManager + .getEngineFactories() + .forEach(sef -> sef.getNames().forEach(languageNames::add)); + return languageNames; + } }
