diff --git a/src/main/java/fr/adrienbrault/idea/symfony2plugin/translation/parser/TranslationStringMap.java b/src/main/java/fr/adrienbrault/idea/symfony2plugin/translation/parser/TranslationStringMap.java index 8b59ff0ae..e6df7bd18 100644 --- a/src/main/java/fr/adrienbrault/idea/symfony2plugin/translation/parser/TranslationStringMap.java +++ b/src/main/java/fr/adrienbrault/idea/symfony2plugin/translation/parser/TranslationStringMap.java @@ -1,5 +1,6 @@ package fr.adrienbrault.idea.symfony2plugin.translation.parser; +import com.intellij.openapi.progress.ProgressManager; import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import fr.adrienbrault.idea.symfony2plugin.translation.parser.PhpCatalogueParser.ArrayEntry; @@ -10,8 +11,6 @@ import java.io.IOException; import java.util.*; -import java.util.function.Function; -import java.util.stream.Stream; /** * @author Daniel Espendiller @@ -45,15 +44,24 @@ public static TranslationStringMap createEmpty() { @NotNull public static TranslationStringMap create(@NotNull Collection translationDirectories) { - List perFileData = translationDirectories.stream() - .flatMap((Function>) dir -> { - VirtualFile[] children = dir.getChildren(); - if (children == null) return Stream.empty(); - return Arrays.stream(children).filter(f -> isCatalogueFile(f.getName())); - }) - .parallel() - .map(FileData::parse) - .toList(); + List perFileData = new ArrayList<>(); + + for (VirtualFile dir : translationDirectories) { + ProgressManager.checkCanceled(); + + VirtualFile[] children = dir.getChildren(); + if (children == null) { + continue; + } + + for (VirtualFile child : children) { + ProgressManager.checkCanceled(); + + if (isCatalogueFile(child.getName())) { + perFileData.add(FileData.parse(child)); + } + } + } return merge(perFileData); } @@ -82,6 +90,8 @@ private static TranslationStringMap merge(@NotNull Collection perFileD private record FileData(@NotNull Map> domainMap) { @NotNull static FileData parse(@NotNull VirtualFile file) { + ProgressManager.checkCanceled(); + String content; try { content = VfsUtil.loadText(file); @@ -89,6 +99,8 @@ static FileData parse(@NotNull VirtualFile file) { return empty(); } + ProgressManager.checkCanceled(); + Map> data = new HashMap<>(); // A compiled catalogue file may contain multiple MessageCatalogue instances,