From b09762d64cc92c6decd595580ae260470cb7ea19 Mon Sep 17 00:00:00 2001 From: peter Date: Sun, 1 Jun 2014 10:35:30 +0200 Subject: [PATCH] cache properties files by bundle name and module --- .../PropertiesReferenceManager.java | 21 ++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesReferenceManager.java b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesReferenceManager.java index f926121c3dd3..785ff2434bd0 100644 --- a/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesReferenceManager.java +++ b/plugins/properties/properties-psi-impl/src/com/intellij/lang/properties/PropertiesReferenceManager.java @@ -26,7 +26,11 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.PsiManager; import com.intellij.psi.search.FileTypeIndex; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.CachedValueProvider; +import com.intellij.psi.util.CachedValuesManager; +import com.intellij.psi.util.PsiModificationTracker; import com.intellij.util.ArrayUtil; +import com.intellij.util.containers.ConcurrentFactoryMap; import com.intellij.util.indexing.FileBasedIndex; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -53,7 +57,22 @@ public class PropertiesReferenceManager { @NotNull public List findPropertiesFiles(@NotNull final Module module, final String bundleName) { - return findPropertiesFiles(GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module), bundleName, BundleNameEvaluator.DEFAULT); + ConcurrentFactoryMap> map = + CachedValuesManager.getManager(module.getProject()).getCachedValue(module, new CachedValueProvider>>() { + @Nullable + @Override + public Result>> compute() { + ConcurrentFactoryMap> factoryMap = new ConcurrentFactoryMap>() { + @Nullable + @Override + protected List create(String bundleName) { + return findPropertiesFiles(GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(module), bundleName, BundleNameEvaluator.DEFAULT); + } + }; + return Result.create(factoryMap, PsiModificationTracker.MODIFICATION_COUNT); + } + }); + return map.get(bundleName); } @NotNull