]> git.basschouten.com Git - openhab-addons.git/commitdiff
Fix exec transformation service whitelisting (#14884)
authorJ-N-K <github@klug.nrw>
Wed, 26 Apr 2023 19:52:00 +0000 (21:52 +0200)
committerGitHub <noreply@github.com>
Wed, 26 Apr 2023 19:52:00 +0000 (21:52 +0200)
Reported on the german openHAB forum.

Signed-off-by: Jan N. Klug <github@klug.nrw>
bundles/org.openhab.transform.exec/src/main/java/org/openhab/transform/exec/internal/ExecTransformationWhitelistWatchService.java

index 5b18820f26b26cbb231521a6b205446b0ba634d5..590a71b48a3abed66a83238926b961278ec3046a 100644 (file)
@@ -41,12 +41,14 @@ public class ExecTransformationWhitelistWatchService implements WatchService.Wat
     private final Logger logger = LoggerFactory.getLogger(ExecTransformationWhitelistWatchService.class);
     private final Set<String> commandWhitelist = new HashSet<>();
     private final WatchService watchService;
+    private final Path watchFile;
 
     @Activate
     public ExecTransformationWhitelistWatchService(
             final @Reference(target = WatchService.CONFIG_WATCHER_FILTER) WatchService watchService) {
         this.watchService = watchService;
-        watchService.registerListener(this, COMMAND_WHITELIST_FILE);
+        this.watchFile = watchService.getWatchPath().resolve(COMMAND_WHITELIST_FILE);
+        watchService.registerListener(this, COMMAND_WHITELIST_FILE, false);
 
         // read initial content
         processWatchEvent(WatchService.Kind.CREATE, COMMAND_WHITELIST_FILE);
@@ -59,9 +61,9 @@ public class ExecTransformationWhitelistWatchService implements WatchService.Wat
 
     @Override
     public void processWatchEvent(WatchService.Kind kind, Path path) {
-        if (path.endsWith(COMMAND_WHITELIST_FILE)) {
-            commandWhitelist.clear();
-            try (Stream<String> lines = Files.lines(path)) {
+        commandWhitelist.clear();
+        if (kind != WatchService.Kind.DELETE) {
+            try (Stream<String> lines = Files.lines(watchFile)) {
                 lines.filter(line -> !line.trim().startsWith("#")).forEach(commandWhitelist::add);
                 logger.debug("Updated command whitelist: {}", commandWhitelist);
             } catch (IOException e) {