private void cleanupPropertiesAndSnapshots()

in agent/src/jetbrains/buildServer/swabra/SwabraPropertiesProcessor.java [205:246]


  private void cleanupPropertiesAndSnapshots(final List<File> actualCheckoutDirs) {
    try {
      readPropertiesNoAwait(false);

      final Set<String> savedDirs = myProperties.keySet();
      final List<File> snapshots = getSnapshotFiles();

      if (savedDirs.isEmpty() && snapshots.isEmpty()) {
        return;
      }

      final ArrayList<String> propertiesToRemove = new ArrayList<String>(savedDirs);
      final ArrayList<File> snapshotsToRemove = new ArrayList<File>(snapshots);

      for (File checkoutDir : actualCheckoutDirs) {
        if (!checkoutDir.isDirectory()) {
          continue;
        }
        final String unifiedCheckoutDirPath = unifyPath(checkoutDir);
        for (Map.Entry<String, DirInfo> entry : myProperties.entrySet()) {
          final DirInfo info = entry.getValue();
          final String monitoredDir = entry.getKey();
          if (info.checkoutDir.equals(unifiedCheckoutDirPath)) {
            propertiesToRemove.remove(unifyPath(monitoredDir));
            snapshotsToRemove.remove(getSnapshotFile(new File(monitoredDir)));
          }
        }
      }

      for (String s : propertiesToRemove) {
        myProperties.remove(s);
      }

      writeProperties();

      for (File f : snapshotsToRemove) {
        FileUtil.delete(f);
      }
    } finally {
      myCleanupFinishedSignal.countDown();
    }
  }