[platform] unified stream processing for CanonicalPathMap, finally

This commit is contained in:
Roman Shevchenko
2016-08-24 15:58:23 +03:00
parent 40b043f2e9
commit 1b331cf247
@@ -15,8 +15,6 @@
*/
package com.intellij.openapi.vfs.impl.local;
import com.intellij.concurrency.JobLauncher;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.io.FileSystemUtil;
@@ -27,7 +25,10 @@ import com.intellij.util.containers.MultiMap;
import org.jetbrains.annotations.NotNull;
import java.io.File;
import java.util.*;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
import static com.intellij.openapi.util.Pair.pair;
@@ -61,19 +62,9 @@ class CanonicalPathMap {
private static Map<String, String> resolvePaths(Collection<String> recursiveRoots, Collection<String> flatRoots) {
Map<String, String> result = ContainerUtil.newConcurrentMap();
if (ApplicationManager.getApplication() != null) {
List<String> roots = ContainerUtil.concat(Arrays.asList(recursiveRoots, flatRoots));
JobLauncher.getInstance().invokeConcurrentlyUnderProgress(roots, null, false, false, root -> {
ContainerUtil.putIfNotNull(root, FileSystemUtil.resolveSymLink(root), result);
return true;
});
}
else {
Stream.concat(recursiveRoots.stream(), flatRoots.stream())
.forEach(root -> ContainerUtil.putIfNotNull(root, FileSystemUtil.resolveSymLink(root), result));
}
Stream.concat(recursiveRoots.stream(), flatRoots.stream())
.parallel()
.forEach(root -> ContainerUtil.putIfNotNull(root, FileSystemUtil.resolveSymLink(root), result));
return result;
}