From d4ae2e4210cd28449df6464b3a47e2817acefb0a Mon Sep 17 00:00:00 2001 From: "Jan N. Klug" Date: Wed, 15 Feb 2023 13:11:07 +0100 Subject: [PATCH] [jsscripting] Fix node_modules handling Signed-off-by: Jan N. Klug --- .../jsscripting/internal/GraalJSScriptEngineFactory.java | 4 ++-- .../jsscripting/internal/OpenhabGraalJSScriptEngine.java | 5 +++-- .../jsscripting/internal/fs/watch/JSDependencyTracker.java | 7 +------ 3 files changed, 6 insertions(+), 10 deletions(-) diff --git a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/GraalJSScriptEngineFactory.java b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/GraalJSScriptEngineFactory.java index d8cb3f9298212..7302b517ed741 100644 --- a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/GraalJSScriptEngineFactory.java +++ b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/GraalJSScriptEngineFactory.java @@ -89,8 +89,8 @@ public void scopeValues(ScriptEngine scriptEngine, Map scopeValu if (!SCRIPT_TYPES.contains(scriptType)) { return null; } - return new DebuggingGraalScriptEngine<>( - new OpenhabGraalJSScriptEngine(injectionEnabled, useIncludedLibrary, jsScriptServiceUtil)); + return new DebuggingGraalScriptEngine<>(new OpenhabGraalJSScriptEngine(injectionEnabled, useIncludedLibrary, + jsScriptServiceUtil, jsDependencyTracker)); } @Override diff --git a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/OpenhabGraalJSScriptEngine.java b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/OpenhabGraalJSScriptEngine.java index f16272e475bd7..91132e4f401b7 100644 --- a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/OpenhabGraalJSScriptEngine.java +++ b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/OpenhabGraalJSScriptEngine.java @@ -139,7 +139,7 @@ public class OpenhabGraalJSScriptEngine * lifecycle and provides hooks for scripts to do so too. */ public OpenhabGraalJSScriptEngine(boolean injectionEnabled, boolean useIncludedLibrary, - JSScriptServiceUtil jsScriptServiceUtil) { + JSScriptServiceUtil jsScriptServiceUtil, JSDependencyTracker jsDependencyTracker) { super(null); // delegate depends on fields not yet initialised, so we cannot set it immediately this.injectionEnabled = injectionEnabled; this.useIncludedLibrary = useIncludedLibrary; @@ -149,7 +149,8 @@ public OpenhabGraalJSScriptEngine(boolean injectionEnabled, boolean useIncludedL delegate = GraalJSScriptEngine.create(ENGINE, Context.newBuilder("js").allowExperimentalOptions(true).allowAllAccess(true) - .allowHostAccess(HOST_ACCESS).option("js.commonjs-require-cwd", JSDependencyTracker.LIB_PATH) + .allowHostAccess(HOST_ACCESS) + .option("js.commonjs-require-cwd", jsDependencyTracker.getLibraryPath().toString()) .option("js.nashorn-compat", "true") // Enable Nashorn compat mode as openhab-js relies on // accessors, see // https://github.com/oracle/graaljs/blob/master/docs/user/NashornMigrationGuide.md#accessors diff --git a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/fs/watch/JSDependencyTracker.java b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/fs/watch/JSDependencyTracker.java index 134bd5059a513..f744537fd93fc 100644 --- a/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/fs/watch/JSDependencyTracker.java +++ b/bundles/org.openhab.automation.jsscripting/src/main/java/org/openhab/automation/jsscripting/internal/fs/watch/JSDependencyTracker.java @@ -13,7 +13,6 @@ package org.openhab.automation.jsscripting.internal.fs.watch; import java.io.File; -import java.nio.file.Files; import org.eclipse.jdt.annotation.NonNullByDefault; import org.openhab.core.automation.module.script.ScriptDependencyTracker; @@ -40,15 +39,11 @@ public class JSDependencyTracker extends AbstractScriptDependencyTracker { private final Logger logger = LoggerFactory.getLogger(JSDependencyTracker.class); - public static final String LIB_PATH = String.join(File.separator, "automation", "js", "node_modules"); + private static final String LIB_PATH = String.join(File.separator, "automation", "js", "node_modules"); @Activate public JSDependencyTracker(@Reference(target = WatchService.CONFIG_WATCHER_FILTER) WatchService watchService) { super(watchService, LIB_PATH); - - if (Files.isRegularFile(this.libraryPath)) { - logger.warn("Trying to watch directory '{}', however it is a file", this.libraryPath); - } } @Deactivate