/*
* Forked from: https://github.com/gjoseph/BarbaryWatchService
* Waiting to see what the license is - https://github.com/gjoseph/BarbaryWatchService/issues/6
*/
package com.barbarysoftware.watchservice;
import java.nio.file.Path;
import java.nio.file.StandardWatchEventKinds;
import java.nio.file.WatchEvent;
import java.nio.file.Watchable;
import java.util.concurrent.atomic.AtomicBoolean;
class MacOSXWatchKey extends AbstractWatchKey {
private final AtomicBoolean cancelled = new AtomicBoolean(false);
private final boolean reportCreateEvents;
private final boolean reportModifyEvents;
private final boolean reportDeleteEvents;
private final Path path;
public MacOSXWatchKey(Path path, AbstractWatchService macOSXWatchService, WatchEvent.Kind<?>[] events) {
super(macOSXWatchService);
this.path = path;
boolean reportCreateEvents = false;
boolean reportModifyEvents = false;
boolean reportDeleteEvents = false;
for (WatchEvent.Kind<?> event : events) {
if (event == StandardWatchEventKinds.ENTRY_CREATE) {
reportCreateEvents = true;
} else if (event == StandardWatchEventKinds.ENTRY_MODIFY) {
reportModifyEvents = true;
} else if (event == StandardWatchEventKinds.ENTRY_DELETE) {
reportDeleteEvents = true;
}
}
this.reportCreateEvents = reportCreateEvents;
this.reportDeleteEvents = reportDeleteEvents;
this.reportModifyEvents = reportModifyEvents;
}
public boolean isValid() {
return !cancelled.get() && watcher().isOpen();
}
public void cancel() {
cancelled.set(true);
}
@Override
public Watchable watchable() {
return path;
}
public boolean isReportCreateEvents() {
return reportCreateEvents;
}
public boolean isReportModifyEvents() {
return reportModifyEvents;
}
public boolean isReportDeleteEvents() {
return reportDeleteEvents;
}
}