From 2c458f1f5c203c6e0cbdb0e21dacad00e186f27c Mon Sep 17 00:00:00 2001 From: peter Date: Fri, 20 Dec 2013 18:24:50 +0100 Subject: [PATCH] avoid creating string garbage when searching for external annotations --- .../BaseExternalAnnotationsManager.java | 26 +++++++------------ 1 file changed, 9 insertions(+), 17 deletions(-) diff --git a/java/java-psi-impl/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java b/java/java-psi-impl/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java index 9c9b2fa2b743..05b516e47ee5 100644 --- a/java/java-psi-impl/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java +++ b/java/java-psi-impl/src/com/intellij/codeInsight/BaseExternalAnnotationsManager.java @@ -22,7 +22,6 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.LowMemoryWatcher; import com.intellij.openapi.util.Pair; -import com.intellij.openapi.util.text.StringUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.pom.java.LanguageLevel; import com.intellij.psi.*; @@ -52,7 +51,7 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations private static final Logger LOG = Logger.getInstance("#com.intellij.codeInsight.BaseExternalAnnotationsManager"); @NotNull private static final List NULL_LIST = new ArrayList(0); @NotNull - private final ConcurrentMap> myExternalAnnotations = new ConcurrentSoftValueHashMap>(10, 0.75f, 2); + private final ConcurrentMap> myExternalAnnotations = new ConcurrentSoftValueHashMap>(10, 0.75f, 2); protected final PsiManager myPsiManager; @SuppressWarnings("UnusedDeclaration") @@ -72,13 +71,6 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations return PsiFormatUtil.getExternalName(listOwner, showParamName, Integer.MAX_VALUE); } - @Nullable - private static String getFQN(@NotNull String packageName, @NotNull PsiFile psiFile) { - VirtualFile virtualFile = psiFile.getVirtualFile(); - if (virtualFile == null) return null; - return StringUtil.getQualifiedName(packageName, virtualFile.getNameWithoutExtension()); - } - protected abstract boolean hasAnyAnnotationsRoots(); @Override @@ -230,9 +222,9 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations final PsiJavaFile javaFile = (PsiJavaFile)containingFile; final String packageName = javaFile.getPackageName(); final VirtualFile virtualFile = containingFile.getVirtualFile(); - String fqn = getFQN(packageName, containingFile); - if (fqn == null) return null; - final List files = myExternalAnnotations.get(fqn); + if (virtualFile == null) return null; + + final List files = myExternalAnnotations.get(virtualFile); if (files == NULL_LIST) return null; if (files != null) { boolean allValid = true; @@ -258,7 +250,7 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations } List result; if (possibleAnnotationsXmls.isEmpty()) { - myExternalAnnotations.put(fqn, NULL_LIST); + myExternalAnnotations.put(virtualFile, NULL_LIST); result = null; } else { @@ -276,7 +268,7 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations } }); - myExternalAnnotations.put(fqn, result); + myExternalAnnotations.put(virtualFile, result); } return result; } @@ -344,9 +336,9 @@ public abstract class BaseExternalAnnotationsManager extends ExternalAnnotations } protected void cacheExternalAnnotations(@NotNull String packageName, @NotNull PsiFile fromFile, @NotNull List annotationFiles) { - String fqn = getFQN(packageName, fromFile); - if (fqn != null) { - myExternalAnnotations.put(fqn, annotationFiles); + VirtualFile virtualFile = fromFile.getVirtualFile(); + if (virtualFile != null) { + myExternalAnnotations.put(virtualFile, annotationFiles); } }