diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GrImportUtil.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GrImportUtil.java index ab595db09f05..96e02cf4bc98 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GrImportUtil.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/lang/psi/util/GrImportUtil.java @@ -15,19 +15,14 @@ */ package org.jetbrains.plugins.groovy.lang.psi.util; -import com.intellij.openapi.util.Key; -import com.intellij.psi.PsiDocumentManager; import com.intellij.psi.PsiFile; -import com.intellij.psi.util.CachedValue; -import com.intellij.psi.util.CachedValueProvider; -import com.intellij.psi.util.CachedValuesManager; -import com.intellij.util.containers.ContainerUtil; -import com.intellij.util.containers.MultiMap; +import com.intellij.util.containers.MultiMapBasedOnSet; import org.jetbrains.annotations.NotNull; import org.jetbrains.plugins.groovy.lang.psi.GrReferenceElement; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.api.toplevel.imports.GrImportStatement; import org.jetbrains.plugins.groovy.lang.psi.api.types.GrCodeReferenceElement; +import org.jetbrains.plugins.groovy.util.LightCacheKey; import java.util.Collection; @@ -35,6 +30,8 @@ import java.util.Collection; * @author Max Medvedev */ public class GrImportUtil { + private static final LightCacheKey> KEY = LightCacheKey.createByFileModificationCount(); + public static boolean acceptName(GrReferenceElement ref, String expected) { final String actual = ref.getReferenceName(); if (expected.equals(actual)) return true; @@ -43,20 +40,13 @@ public class GrImportUtil { final PsiFile file = ref.getContainingFile(); if (file instanceof GroovyFile) { - CachedValue> data = file.getCopyableUserData(KEY); + MultiMapBasedOnSet data = KEY.getCachedValue(file); if (data == null) { - data = CachedValuesManager.getManager(ref.getProject()).createCachedValue(new CachedValueProvider>() { - @Override - public Result> compute() { - MultiMap aliases = collectAliases((GroovyFile)file); - - return Result.create(aliases, PsiDocumentManager.getInstance(file.getProject()).getDocument(file)); - } - }, false); + data = collectAliases((GroovyFile)file); + KEY.putCachedValue(file, data); } - final MultiMap map = data.getValue(); - final Collection aliases = map.get(expected); + final Collection aliases = data.get(expected); return aliases.contains(actual); } @@ -65,13 +55,8 @@ public class GrImportUtil { } @NotNull - private static MultiMap collectAliases(@NotNull GroovyFile file) { - MultiMap aliases = new MultiMap() { - @Override - protected Collection createCollection() { - return ContainerUtil.newHashSet(); - } - }; + private static MultiMapBasedOnSet collectAliases(@NotNull GroovyFile file) { + MultiMapBasedOnSet aliases = new MultiMapBasedOnSet(); for (GrImportStatement anImport : file.getImportStatements()) { if (anImport.isAliasedImport()) { @@ -86,6 +71,4 @@ public class GrImportUtil { } return aliases; } - - private static final Key>> KEY = Key.create("aliases_key"); }