Skip to content

Commit 6eb3040

Browse files
committed
#2756 fix freezing under parsing translation files during wsl
1 parent 40e1018 commit 6eb3040

1 file changed

Lines changed: 23 additions & 11 deletions

File tree

src/main/java/fr/adrienbrault/idea/symfony2plugin/translation/parser/TranslationStringMap.java

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package fr.adrienbrault.idea.symfony2plugin.translation.parser;
22

3+
import com.intellij.openapi.progress.ProgressManager;
34
import com.intellij.openapi.vfs.VfsUtil;
45
import com.intellij.openapi.vfs.VirtualFile;
56
import fr.adrienbrault.idea.symfony2plugin.translation.parser.PhpCatalogueParser.ArrayEntry;
@@ -10,8 +11,6 @@
1011

1112
import java.io.IOException;
1213
import java.util.*;
13-
import java.util.function.Function;
14-
import java.util.stream.Stream;
1514

1615
/**
1716
* @author Daniel Espendiller <daniel@espendiller.net>
@@ -45,15 +44,24 @@ public static TranslationStringMap createEmpty() {
4544

4645
@NotNull
4746
public static TranslationStringMap create(@NotNull Collection<VirtualFile> translationDirectories) {
48-
List<FileData> perFileData = translationDirectories.stream()
49-
.flatMap((Function<VirtualFile, Stream<VirtualFile>>) dir -> {
50-
VirtualFile[] children = dir.getChildren();
51-
if (children == null) return Stream.empty();
52-
return Arrays.stream(children).filter(f -> isCatalogueFile(f.getName()));
53-
})
54-
.parallel()
55-
.map(FileData::parse)
56-
.toList();
47+
List<FileData> perFileData = new ArrayList<>();
48+
49+
for (VirtualFile dir : translationDirectories) {
50+
ProgressManager.checkCanceled();
51+
52+
VirtualFile[] children = dir.getChildren();
53+
if (children == null) {
54+
continue;
55+
}
56+
57+
for (VirtualFile child : children) {
58+
ProgressManager.checkCanceled();
59+
60+
if (isCatalogueFile(child.getName())) {
61+
perFileData.add(FileData.parse(child));
62+
}
63+
}
64+
}
5765

5866
return merge(perFileData);
5967
}
@@ -82,13 +90,17 @@ private static TranslationStringMap merge(@NotNull Collection<FileData> perFileD
8290
private record FileData(@NotNull Map<String, Set<String>> domainMap) {
8391
@NotNull
8492
static FileData parse(@NotNull VirtualFile file) {
93+
ProgressManager.checkCanceled();
94+
8595
String content;
8696
try {
8797
content = VfsUtil.loadText(file);
8898
} catch (IOException e) {
8999
return empty();
90100
}
91101

102+
ProgressManager.checkCanceled();
103+
92104
Map<String, Set<String>> data = new HashMap<>();
93105

94106
// A compiled catalogue file may contain multiple MessageCatalogue instances,

0 commit comments

Comments
 (0)