JsRunThread(final String myAddress, final ScriptEngine scriptEngine, final LibraryServiceInterface libraryService,
final Path scriptFilePath, final Map<String, ?> initialVariables) {
super(myAddress, getScriptFilePath(scriptFilePath), initialVariables);
this.scriptEngine = scriptEngine;
scriptContext = new SimpleScriptContext();
scriptContext.setBindings(new GlobalBindings(), ScriptContext.GLOBAL_SCOPE);
if (initialVariables != null)
initialVariables.forEach(
(key, value) -> scriptContext.setAttribute(key, value, ScriptContext.ENGINE_SCOPE));
if (libraryService != null)
scriptContext.setAttribute("library", libraryService, ScriptContext.ENGINE_SCOPE);
scriptContext.setAttribute("closeable", closeables, ScriptContext.ENGINE_SCOPE);
this.scriptFilePath = scriptFilePath;
scriptContext.setWriter(outputWriter);
scriptContext.setErrorWriter(errorWriter);
scriptEngine.setContext(scriptContext);
}