// Copyright © 2011-2014, Esko Luontola <www.orfjackal.net>
// This software is released under the Apache License 2.0.
// The license text is at http://www.apache.org/licenses/LICENSE-2.0
package fi.jumi.core.ipc;
import javax.annotation.concurrent.GuardedBy;
import java.nio.file.*;
import java.util.*;
public class FakeWatchKey implements WatchKey {
@GuardedBy("this")
private ArrayList<WatchEvent<?>> events = new ArrayList<>();
public synchronized FakeWatchKey addEvent(WatchEvent.Kind<Object> kind) {
events.add(new WatchEvent<Object>() {
@Override
public Kind<Object> kind() {
return kind;
}
@Override
public int count() {
return 1;
}
@Override
public Object context() {
return null;
}
});
return this;
}
public synchronized FakeWatchKey addEvent(WatchEvent.Kind<Path> kind, Path path) {
events.add(new WatchEvent<Path>() {
@Override
public Kind<Path> kind() {
return kind;
}
@Override
public int count() {
return 1;
}
@Override
public Path context() {
return path;
}
});
return this;
}
@Override
public boolean isValid() {
return true;
}
@Override
public synchronized List<WatchEvent<?>> pollEvents() {
try {
return events;
} finally {
events = new ArrayList<>();
}
}
@Override
public boolean reset() {
return true;
}
@Override
public void cancel() {
}
@Override
public Watchable watchable() {
return null;
}
}