A few contention optimizations

This commit is contained in:
Maxim Shafirov
2009-10-27 20:48:11 +03:00
parent cf7980dc51
commit 2f78f91ec3
5 changed files with 81 additions and 73 deletions
@@ -22,11 +22,14 @@ package com.intellij.codeInsight;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.NotNullLazyKey;
import com.intellij.psi.PsiAnnotation;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.PsiModifierListOwner;
import com.intellij.util.NotNullFunction;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public abstract class ExternalAnnotationsManager {
@@ -38,8 +41,15 @@ public abstract class ExternalAnnotationsManager {
NOWHERE
}
private static final NotNullLazyKey<ExternalAnnotationsManager, Project> INSTANCE_KEY = NotNullLazyKey.create("ExternalAnnotationsManager.Instance.Cache", new NotNullFunction<Project, ExternalAnnotationsManager>() {
@NotNull
public ExternalAnnotationsManager fun(final Project project) {
return ServiceManager.getService(project, ExternalAnnotationsManager.class);
}
});
public static ExternalAnnotationsManager getInstance(Project project) {
return ServiceManager.getService(project, ExternalAnnotationsManager.class);
return INSTANCE_KEY.getValue(project);
}
@Nullable
@@ -54,4 +64,4 @@ public abstract class ExternalAnnotationsManager {
public abstract AnnotationPlace chooseAnnotationsPlace(final PsiElement element);
}
}