/** * Stop monitoring. * * @throws Exception if an error occurs initializing the observer */ public synchronized void stop() throws Exception { stop(interval); }
/** * Test using a thread factory. * @throws Exception */ @Test public void testThreadFactory() throws Exception { final long interval = 100; listener.clear(); final FileAlterationMonitor monitor = new FileAlterationMonitor(interval, observer); monitor.setThreadFactory(Executors.defaultThreadFactory()); assertEquals("Interval", interval, monitor.getInterval()); monitor.start(); // Create a File checkCollectionsEmpty("A"); final File file2 = touch(new File(testDir, "file2.java")); checkFile("Create", file2, listener.getCreatedFiles()); listener.clear(); // Delete a file checkCollectionsEmpty("B"); file2.delete(); checkFile("Delete", file2, listener.getDeletedFiles()); listener.clear(); // Stop monitoring monitor.stop(); }
/** * 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()); }
/** * Test default constructor. */ @Test public void testDefaultConstructor() { final FileAlterationMonitor monitor = new FileAlterationMonitor(); assertEquals("Interval", 10000, monitor.getInterval()); }
public void init(ESAdapter esAdapter) { this.esAdapter = esAdapter; File confDir = Util.getConfDirPath(adapterName); try { FileAlterationObserver observer = new FileAlterationObserver(confDir, FileFilterUtils.and(FileFilterUtils.fileFileFilter(), FileFilterUtils.suffixFileFilter("yml"))); FileListener listener = new FileListener(); observer.addListener(listener); fileMonitor = new FileAlterationMonitor(3000, observer); fileMonitor.start(); } catch (Exception e) { logger.error(e.getMessage(), e); } }
public static void startMonitor(String rootFolder) throws Exception { //every 5 seconds it will start monitoring final long pollingInterval = 5 * 1000; File folder = new File(rootFolder); if (!folder.exists()) { throw new RuntimeException("ERROR : Server root directory not found: " + rootFolder); } FileAlterationObserver observer = new FileAlterationObserver(folder); FileAlterationMonitor monitor = new FileAlterationMonitor(pollingInterval); FileAlterationListener listener = new FileAlterationListenerAdaptor() { @Override public void onFileCreate(File file) { try { System.out.println("[SFTPFileListner] Received :"+ file.getName()); System.out.println("[SFTPFileListner] Received File Path :"+ file.getCanonicalPath()); } catch (IOException e) { throw new RuntimeException("ERROR: Unrecoverable error when creating files " + e.getMessage(),e); } } }; observer.addListener(listener); monitor.addObserver(observer); monitor.start(); }
@Component public class GroupsMonitor { private final FileAlterationMonitor monitor; @Autowired public GroupsMonitor(@Value("${groups.directory}") String groupsDirectory, @Value("${groups.intervalMonitor}") long pollingInterval) throws Exception { final File directory = new File(groupsDirectory); FileAlterationObserver fao = new FileAlterationObserver(directory); fao.addListener(new FileAlterationListenerImpl()); monitor = new FileAlterationMonitor(pollingInterval); monitor.addObserver(fao); monitor.start(); } @PreDestroy public void stop() { try { monitor.stop(); } catch (Exception ex) { Logger.getLogger(StopWatcher.class.getName()).log(Level.SEVERE, null, ex); } } }
public void start() throws Exception { if (!isRunning) { monitor.start(); isRunning = true; } }
public PluginDirectoryWatcher(PluginManagerImpl pluginManager, File directory) { this.pluginManager = pluginManager; this.directory = directory; FileAlterationObserver observer = new FileAlterationObserver(directory); observer.addListener(this); monitor = new FileAlterationMonitor(); monitor.addObserver(observer); }
{ 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(); } }
watcher = new FileAlterationMonitor(Integer.getInteger("watch.period", 2) * 1000); watcher.setThreadFactory(new DefensiveThreadFactory("wisdom-pipeline-watcher", mojo)); FileAlterationObserver srcObserver = new FileAlterationObserver(new File(baseDir, "src"), TrueFileFilter.INSTANCE); PipelineWatcher listener = new PipelineWatcher(this); srcObserver.addListener(listener); watcher.addObserver(srcObserver); watcher.addObserver(pomObserver); watcher.start(); } catch (Exception e) { mojo.getLog().error("Cannot start the watcher", e);
/** * Construct a monitor with the specified interval and set of observers. * * @param interval The amount of time in milliseconds to wait between * checks of the file system * @param observers The set of observers to add to the monitor. */ public FileAlterationMonitor(final long interval, final FileAlterationObserver... observers) { this(interval); if (observers != null) { for (final FileAlterationObserver observer : observers) { addObserver(observer); } } }
long interval = ... FileAlterationMonitor monitor = new FileAlterationMonitor(interval); monitor.addObserver(observer); monitor.start(); ... monitor.stop();
TorrentFileWatcher(final FileAlterationListener listener, final Path monitoredFolder, final Integer interval) { Preconditions.checkNotNull(listener, "listener cannot be null"); Preconditions.checkNotNull(monitoredFolder, "monitoredFolder cannot be null"); Preconditions.checkArgument(Files.exists(monitoredFolder), "Folder '" + monitoredFolder.toAbsolutePath() + "' does not exists."); Preconditions.checkNotNull(interval, "interval cannot be null"); Preconditions.checkArgument(interval > 0, "interval cannot be less than 1"); this.listener = listener; this.monitoredFolder = monitoredFolder.toFile(); this.monitor = new FileAlterationMonitor(interval); this.monitor.setThreadFactory(new ThreadFactoryBuilder().setNameFormat("torrent-file-watcher-%d").build()); this.observer = new FileAlterationObserver(this.monitoredFolder, TORRENT_FILE_FILTER); this.observer.addListener(this.listener); monitor.addObserver(this.observer); }
static FileAlterationMonitor monitor; public static void runExample(boolean b) { if (b) { monitor = new FileAlterationMonitor(); } else { if (monitor == null) return; monitor.stop(); } }
File directory = new File("c:/your/parent/dir")); FileAlterationObserver observer = new FileAlterationObserver(directory); observer.addListener(new FileAlterationListener() { // here you have to implement some methods, this is the pertinent one for you: public void onDirectoryDelete(File directory) { // do your processing here } }); FileAlterationMonitor monitor = new FileAlterationMonitor(interval); monitor.addObserver(observer); monitor.start();
private FileAlterationMonitor createFileAlterationMonitor(File directory, long polling) { FileAlterationObserver observer = new FileAlterationObserver(directory, TrueFileFilter.INSTANCE); observer.addListener(new FileMonitor(directory)); LOGGER.debug("Creating file alteration monitor for " + directory.getAbsolutePath() + " with a polling period " + "of " + polling); final FileAlterationMonitor monitor = new FileAlterationMonitor(polling, observer); monitor.setThreadFactory(new MonitorThreadFactory(directory)); monitors.put(directory, monitor); return monitor; }
/** * */ 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); } })); }
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); } }
monitor = new FileAlterationMonitor(5000); monitor.addObserver(observer); try { monitor.start(); } catch (Exception e) { log.error("start monitor fail", e);