private ScriptLanguageDescription extractLanguageAndVersion(String str) { int begin = str.indexOf(" ("); int end = str.lastIndexOf(')'); String scriptLanguage = str.substring(0, begin); String scriptLanguageVersion = str.substring(begin + 2, end); return new ScriptLanguageDescription(scriptLanguage, scriptLanguageVersion); }
private ScriptEngine getScriptEngine(String language, String languageVersion) { List<ScriptEngineFactory> factoryList = null; try { factoryList = languageToFactoryMap.get( new ScriptLanguageDescription(language, languageVersion)); } catch (IllegalArgumentException ex) { return null; } if (factoryList == null || factoryList.isEmpty()) { return null; } return factoryList.get(factoryList.size() - 1).getScriptEngine(); }
/** * Unbinds a ScriptEngineFactory. * * @param factory * the script engine factory to unbind */ protected void unbindScriptEngineFactory(ScriptEngineFactory factory) { String language = factory.getLanguageName(); String languageVersion = factory.getLanguageVersion(); removeScriptEngineFactory( new ScriptLanguageDescription(language, languageVersion), factory); }
/** * Binds a ScriptEngineFactory. * If script engine factories for the same language and/or language version * already exist, they are shadowed. * * @param factory * the script engine factory to bind */ protected void bindScriptEngineFactory(ScriptEngineFactory factory) { String language = factory.getLanguageName(); String languageVersion = factory.getLanguageVersion(); addScriptEngineFactory( new ScriptLanguageDescription(language, languageVersion), factory); }
"No engine available for language {}({})", language, languageVersion); throw new NoEngineException(new ScriptLanguageDescription(language, languageVersion));