public void scan() { List<VirtualFile> workQueue = myWorkQueue; myWorkQueue = new ArrayList<VirtualFile>(); boolean hasEventsToFire = myFinishRunnable != null || !myEvents.isEmpty(); if (!workQueue.isEmpty()) { LocalFileSystemImpl fs = (LocalFileSystemImpl) LocalFileSystem.getInstance(); fs.markSuspiciousFilesDirty(workQueue); FileWatcher watcher = fs.getFileWatcher(); for (VirtualFile file : workQueue) { NewVirtualFile nvf = (NewVirtualFile) file; if (!myIsRecursive && (!myIsAsync || !watcher.isWatched( nvf))) { // We're unable to definitely refresh synchronously by means of file // watcher. nvf.markDirty(); } RefreshWorker worker = new RefreshWorker(file, myIsRecursive); long t = LOG.isDebugEnabled() ? System.currentTimeMillis() : 0; worker.scan(); List<VFileEvent> events = worker.getEvents(); if (t != 0) { t = System.currentTimeMillis() - t; LOG.debug(file + " scanned in " + t + " ms, events: " + events); } myEvents.addAll(events); if (!events.isEmpty()) hasEventsToFire = true; } } iHaveEventsToFire = hasEventsToFire; }
@Override protected void setUp() throws Exception { LOG.debug("================== setting up " + getName() + " =================="); super.setUp(); myFileSystem = LocalFileSystem.getInstance(); assertNotNull(myFileSystem); myWatcher = ((LocalFileSystemImpl) myFileSystem).getFileWatcher(); assertNotNull(myWatcher); assertFalse(myWatcher.isOperational()); myWatcher.startup(myNotifier); assertTrue(myWatcher.isOperational()); myAlarm = new Alarm(Alarm.ThreadToUse.POOLED_THREAD, getProject()); myTimeout = NATIVE_PROCESS_DELAY; myConnection = ApplicationManager.getApplication().getMessageBus().connect(); myConnection.subscribe( VirtualFileManager.VFS_CHANGES, new BulkFileListener.Adapter() { @Override public void after(@NotNull List<? extends VFileEvent> events) { synchronized (myEvents) { myEvents.addAll(events); } } }); ((LocalFileSystemImpl) myFileSystem).cleanupForNextTest(); LOG = FileWatcher.getLog(); LOG.debug("================== setting up " + getName() + " =================="); }
public static void cleanupApplicationCaches(Project project) { if (project != null && !project.isDisposed()) { UndoManagerImpl globalInstance = (UndoManagerImpl) UndoManager.getGlobalInstance(); if (globalInstance != null) { globalInstance.dropHistoryInTests(); } ((UndoManagerImpl) UndoManager.getInstance(project)).dropHistoryInTests(); ((PsiManagerImpl) PsiManager.getInstance(project)).cleanupForNextTest(); } ProjectManagerImpl projectManager = (ProjectManagerImpl) ProjectManager.getInstance(); if (projectManager.isDefaultProjectInitialized()) { Project defaultProject = projectManager.getDefaultProject(); ((PsiManagerImpl) PsiManager.getInstance(defaultProject)).cleanupForNextTest(); } LocalFileSystemImpl localFileSystem = (LocalFileSystemImpl) LocalFileSystem.getInstance(); if (localFileSystem != null) { localFileSystem.cleanupForNextTest(); } }