private void startRecursiveWatcher() { logger.log(Level.INFO, "Starting recursive watcher for " + config.getLocalDir() + " ..."); Path localDir = Paths.get(config.getLocalDir().getAbsolutePath()); List<Path> ignorePaths = new ArrayList<Path>(); ignorePaths.add(Paths.get(config.getAppDir().getAbsolutePath())); ignorePaths.add(Paths.get(config.getCacheDir().getAbsolutePath())); ignorePaths.add(Paths.get(config.getDatabaseDir().getAbsolutePath())); ignorePaths.add(Paths.get(config.getLogDir().getAbsolutePath())); recursiveWatcher = RecursiveWatcher.createRecursiveWatcher(localDir, ignorePaths, options.getSettleDelay(), this); try { recursiveWatcher.start(); } catch (Exception e) { logger.log(Level.WARNING, "Cannot initiate file watcher. Relying on regular tree walks.", e); } }
@Test public void testGetFolder() throws Exception { final AtomicInteger eventCount = new AtomicInteger(0); final Path tempDir = TestFileUtil.createTempDirectoryInSystemTemp("RecursiveWatcherTest").toPath(); RecursiveWatcher watcher = RecursiveWatcher.createRecursiveWatcher(tempDir, new ArrayList<Path>(), 300, new WatchListener() { @Override public void watchEventsOccurred() { eventCount.incrementAndGet(); } }); watcher.start(); Thread.sleep(100); TestFileUtil.createRandomFileInDirectory(tempDir.toFile(), 111); Thread.sleep(350); TestFileUtil.createRandomFileInDirectory(tempDir.toFile(), 222); Thread.sleep(350); TestFileUtil.createRandomFileInDirectory(tempDir.toFile(), 333); Thread.sleep(350); assertEquals(3, eventCount.get()); TestFileUtil.deleteDirectory(tempDir.toFile()); }