/** Make sure the resources associated with this directory and pathPrefixSet are up-to-date. */ public void refreshResources() throws IOException { if (isWatchServiceActive()) { refresh(); } else { fullRefresh(); } }
private void refresh() throws IOException { while (true) { WatchKey watchKey = watchService.poll(); if (watchKey == null) { return; } Path parentDir = (Path) watchKey.watchable(); for (WatchEvent<?> watchEvent : watchKey.pollEvents()) { WatchEvent.Kind<?> eventKind = watchEvent.kind(); if (eventKind == OVERFLOW) { fullRefresh(); return; } Path child = parentDir.resolve((Path) watchEvent.context()); if (eventKind == ENTRY_CREATE) { onNewPath(child); } else if (eventKind == ENTRY_DELETE) { onRemovedPath(child); } } watchKey.reset(); } }