From 54474d05561e2aaab281ee928f7eaf6e14dcc3bd Mon Sep 17 00:00:00 2001 From: peter Date: Tue, 8 Jul 2014 21:29:33 +0200 Subject: [PATCH] TestDataGuessByExistingFilesUtil: prevent thread starvation and use processor to avoid several huge String collections in the memory (IDEA-127038) --- .../TestDataGuessByExistingFilesUtil.java | 21 ++++++++++++------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/plugins/devkit/src/testAssistant/TestDataGuessByExistingFilesUtil.java b/plugins/devkit/src/testAssistant/TestDataGuessByExistingFilesUtil.java index e37fb720c25a..b5763cc663c7 100644 --- a/plugins/devkit/src/testAssistant/TestDataGuessByExistingFilesUtil.java +++ b/plugins/devkit/src/testAssistant/TestDataGuessByExistingFilesUtil.java @@ -34,6 +34,7 @@ import com.intellij.psi.codeStyle.NameUtil; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.testIntegration.TestFramework; import com.intellij.util.PathUtil; +import com.intellij.util.Processor; import com.intellij.util.containers.ConcurrentHashMap; import com.intellij.util.containers.HashSet; import com.intellij.util.containers.LinkedMultiMap; @@ -389,17 +390,21 @@ public class TestDataGuessByExistingFilesUtil { return new TestDataDescriptor(descriptors); } - private static synchronized MultiMap> getAllFileNames(List> input, + private static MultiMap> getAllFileNames(final List> input, final GotoFileModel model) { - LinkedMultiMap> map = new LinkedMultiMap>(); - for (String name : model.getNames(false)) { - ProgressManager.checkCanceled(); - for (Trinity trinity : input) { - if (trinity.first.matches(name)) { - map.putValue(name, trinity); + final LinkedMultiMap> map = new LinkedMultiMap>(); + model.processNames(new Processor() { + @Override + public boolean process(String name) { + ProgressManager.checkCanceled(); + for (Trinity trinity : input) { + if (trinity.first.matches(name)) { + map.putValue(name, trinity); + } } + return true; } - } + }, false); return map; }