Adapt addons to core watch service changes (#14004)
Signed-off-by: Jan N. Klug <github@klug.nrw>
This commit is contained in:
@@ -13,11 +13,12 @@
|
||||
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.OpenHAB;
|
||||
import org.openhab.core.automation.module.script.ScriptDependencyTracker;
|
||||
import org.openhab.core.automation.module.script.rulesupport.loader.AbstractScriptDependencyTracker;
|
||||
import org.openhab.core.service.WatchService;
|
||||
import org.osgi.service.component.annotations.Activate;
|
||||
import org.osgi.service.component.annotations.Component;
|
||||
import org.osgi.service.component.annotations.Deactivate;
|
||||
@@ -31,6 +32,7 @@ import org.slf4j.LoggerFactory;
|
||||
* Tracks JS module dependencies
|
||||
*
|
||||
* @author Jonathan Gilbert - Initial contribution
|
||||
* @author Jan N. Klug - Refactored to new WatchService
|
||||
*/
|
||||
@Component(service = JSDependencyTracker.class)
|
||||
@NonNullByDefault
|
||||
@@ -38,25 +40,15 @@ public class JSDependencyTracker extends AbstractScriptDependencyTracker {
|
||||
|
||||
private final Logger logger = LoggerFactory.getLogger(JSDependencyTracker.class);
|
||||
|
||||
public static final String LIB_PATH = String.join(File.separator, OpenHAB.getConfigFolder(), "automation", "js",
|
||||
"node_modules");
|
||||
|
||||
public JSDependencyTracker() {
|
||||
super(LIB_PATH);
|
||||
}
|
||||
public static final String LIB_PATH = String.join(File.separator, "automation", "js", "node_modules");
|
||||
|
||||
@Activate
|
||||
public void activate() {
|
||||
File directory = new File(LIB_PATH);
|
||||
if (!directory.exists()) {
|
||||
if (!directory.mkdirs()) {
|
||||
logger.warn("Failed to create watched directory: {}", LIB_PATH);
|
||||
}
|
||||
} else if (directory.isFile()) {
|
||||
logger.warn("Trying to watch directory {}, however it is a file", LIB_PATH);
|
||||
}
|
||||
public JSDependencyTracker(@Reference(target = WatchService.CONFIG_WATCHER_FILTER) WatchService watchService) {
|
||||
super(watchService, LIB_PATH);
|
||||
|
||||
super.activate();
|
||||
if (Files.isRegularFile(this.libraryPath)) {
|
||||
logger.warn("Trying to watch directory '{}', however it is a file", this.libraryPath);
|
||||
}
|
||||
}
|
||||
|
||||
@Deactivate
|
||||
|
||||
@@ -16,6 +16,7 @@ import java.io.File;
|
||||
import java.nio.file.Path;
|
||||
import java.util.Optional;
|
||||
|
||||
import org.eclipse.jdt.annotation.NonNullByDefault;
|
||||
import org.openhab.automation.jsscripting.internal.GraalJSScriptEngineFactory;
|
||||
import org.openhab.core.automation.module.script.ScriptDependencyTracker;
|
||||
import org.openhab.core.automation.module.script.ScriptEngineManager;
|
||||
@@ -23,6 +24,7 @@ import org.openhab.core.automation.module.script.rulesupport.loader.AbstractScri
|
||||
import org.openhab.core.automation.module.script.rulesupport.loader.ScriptFileWatcher;
|
||||
import org.openhab.core.service.ReadyService;
|
||||
import org.openhab.core.service.StartLevelService;
|
||||
import org.openhab.core.service.WatchService;
|
||||
import org.osgi.service.component.annotations.Activate;
|
||||
import org.osgi.service.component.annotations.Component;
|
||||
import org.osgi.service.component.annotations.Reference;
|
||||
@@ -31,29 +33,27 @@ import org.osgi.service.component.annotations.Reference;
|
||||
* Monitors <openHAB-conf>/automation/js for Javascript files, but not libraries
|
||||
*
|
||||
* @author Jonathan Gilbert - Initial contribution
|
||||
* @author Jan N. Klug - Refactored to new WatchService
|
||||
*/
|
||||
@Component(immediate = true, service = { ScriptFileWatcher.class, ScriptDependencyTracker.Listener.class })
|
||||
@NonNullByDefault
|
||||
public class JSScriptFileWatcher extends AbstractScriptFileWatcher {
|
||||
private static final String FILE_DIRECTORY = "automation" + File.separator + "js";
|
||||
|
||||
@Activate
|
||||
public JSScriptFileWatcher(final @Reference ScriptEngineManager manager, final @Reference ReadyService readyService,
|
||||
public JSScriptFileWatcher(final @Reference(target = WatchService.CONFIG_WATCHER_FILTER) WatchService watchService,
|
||||
final @Reference ScriptEngineManager manager, final @Reference ReadyService readyService,
|
||||
final @Reference StartLevelService startLevelService) {
|
||||
super(manager, readyService, startLevelService, FILE_DIRECTORY);
|
||||
super(watchService, manager, readyService, startLevelService, FILE_DIRECTORY, true);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected Optional<String> getScriptType(Path scriptFilePath) {
|
||||
if (!scriptFilePath.startsWith(pathToWatch + File.separator + "node_modules")
|
||||
if (!scriptFilePath.startsWith(FILE_DIRECTORY + File.separator + "node_modules")
|
||||
&& "js".equals(super.getScriptType(scriptFilePath).orElse(null))) {
|
||||
return Optional.of(GraalJSScriptEngineFactory.MIME_TYPE);
|
||||
} else {
|
||||
return Optional.empty();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean watchSubDirectories() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user