package com.barbarysoftware.watchservice; 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; public MacOSXWatchKey(AbstractWatchService macOSXWatchService, WatchEvent.Kind<?>[] events) { super(macOSXWatchService); boolean reportCreateEvents = false; boolean reportModifyEvents = false; boolean reportDeleteEvents = false; for (WatchEvent.Kind<?> event : events) { if (event == StandardWatchEventKind.ENTRY_CREATE) { reportCreateEvents = true; } else if (event == StandardWatchEventKind.ENTRY_MODIFY) { reportModifyEvents = true; } else if (event == StandardWatchEventKind.ENTRY_DELETE) { reportDeleteEvents = true; } } this.reportCreateEvents = reportCreateEvents; this.reportDeleteEvents = reportDeleteEvents; this.reportModifyEvents = reportModifyEvents; } @Override public boolean isValid() { return !cancelled.get() && watcher().isOpen(); } @Override public void cancel() { cancelled.set(true); } public boolean isReportCreateEvents() { return reportCreateEvents; } public boolean isReportModifyEvents() { return reportModifyEvents; } public boolean isReportDeleteEvents() { return reportDeleteEvents; } }