/** * Test add/remove observers. */ @Test public void testAddRemoveObservers() { FileAlterationObserver[] observers = null; FileAlterationMonitor monitor = null; // Null Observers monitor = new FileAlterationMonitor(123, observers); assertEquals("Interval", 123, monitor.getInterval()); assertFalse("Observers[1]", monitor.getObservers().iterator().hasNext()); // Null Observer observers = new FileAlterationObserver[1]; // observer is null monitor = new FileAlterationMonitor(456, observers); assertFalse("Observers[2]", monitor.getObservers().iterator().hasNext()); // Null Observer monitor.addObserver(null); assertFalse("Observers[3]", monitor.getObservers().iterator().hasNext()); monitor.removeObserver(null); // Add Observer final FileAlterationObserver observer = new FileAlterationObserver("foo"); monitor.addObserver(observer); final Iterator<FileAlterationObserver> it = monitor.getObservers().iterator(); assertTrue("Observers[4]", it.hasNext()); assertEquals("Added", observer, it.next()); assertFalse("Observers[5]", it.hasNext()); // Remove Observer monitor.removeObserver(observer); assertFalse("Observers[6]", monitor.getObservers().iterator().hasNext()); }
void removeHotFolder(String jobIdentifier) { final FileAlterationObserver observer = _registeredHotFolders.get(jobIdentifier); _hotFolderMonitor.removeObserver(observer); try { observer.destroy(); } catch (Exception e) { logger.info("Removing hot folder trigger for job {}", jobIdentifier); } }
/** * */ private synchronized void syncMonitor() { observers.forEach((path, observer) -> this.monitor.getObservers().forEach(observer2 -> { Path path1 = Paths.get(observer2.getDirectory().toString()); if (!observers.containsKey(path1)) { this.monitor.removeObserver(observer2); } })); }
{ FileAlterationMonitor monitor = new FileAlterationMonitor(); Iterator<FileAlterationObserver> iterator = monitor.getObservers().iterator(); FileAlterationObserver last = null; while (iterator.hasNext()) { last = iterator.next(); } final CountDownLatch cdl = new CountDownLatch(1); monitor.removeObserver(last); monitor.addObserver(new FileAlterationObserver(last.getDirectory(), last.getFileFilter()) { @Override public void initialize() throws Exception { super.initialize(); cdl.countDown(); } }); try { // wait until last observer would be initialized monitor.start(); cdl.await(); } catch (InterruptedException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } }