register PsiResolveHelper as an independent service

This commit is contained in:
Dmitry Jemerov
2011-10-04 16:03:53 +02:00
parent c01b2ef708
commit 308a75c3e0
5 changed files with 16 additions and 11 deletions
@@ -81,12 +81,7 @@ public class HighlightVisitorImpl extends JavaElementVisitor implements Highligh
}
};
@SuppressWarnings({"UnusedDeclaration"}) //in plugin.xml
public HighlightVisitorImpl(Project project) {
this(JavaPsiFacade.getInstance(project).getResolveHelper());
}
private HighlightVisitorImpl(@NotNull PsiResolveHelper resolveHelper) {
public HighlightVisitorImpl(@NotNull PsiResolveHelper resolveHelper) {
myResolveHelper = resolveHelper;
}
@@ -33,7 +33,6 @@ import com.intellij.psi.impl.source.JavaDummyHolder;
import com.intellij.psi.impl.source.JavaDummyHolderFactory;
import com.intellij.psi.impl.source.jsp.jspXml.JspDirective;
import com.intellij.psi.impl.source.resolve.FileContextUtil;
import com.intellij.psi.impl.source.resolve.PsiResolveHelperImpl;
import com.intellij.psi.impl.source.tree.JavaElementType;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiModificationTracker;
@@ -57,7 +56,6 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx {
private static final Logger LOG = Logger.getInstance("#com.intellij.psi.impl.JavaPsiFacadeImpl");
private final PsiElementFinder[] myElementFinders;
private final PsiResolveHelper myResolveHelper;
private final PsiNameHelper myNameHelper;
private final PsiConstantEvaluationHelper myConstantEvaluationHelper;
private final ConcurrentMap<String, PsiPackage> myPackageCache = new ConcurrentHashMap<String, PsiPackage>();
@@ -68,7 +66,6 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx {
PsiManagerImpl psiManager,
MessageBus bus) {
myProject = project;
myResolveHelper = new PsiResolveHelperImpl(PsiManager.getInstance(project));
myNameHelper = new PsiNameHelperImpl(this);
myConstantEvaluationHelper = new PsiConstantEvaluationHelperImpl();
@@ -203,7 +200,7 @@ public class JavaPsiFacadeImpl extends JavaPsiFacadeEx {
@NotNull
public PsiResolveHelper getResolveHelper() {
return myResolveHelper;
return PsiResolveHelper.SERVICE.getInstance(myProject);
}
@NotNull
@@ -15,6 +15,8 @@
*/
package com.intellij.psi;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.pom.java.LanguageLevel;
import com.intellij.psi.infos.CandidateInfo;
import org.jetbrains.annotations.NotNull;
@@ -26,6 +28,15 @@ import org.jetbrains.annotations.Nullable;
* @see JavaPsiFacade#getResolveHelper()
*/
public interface PsiResolveHelper {
class SERVICE {
private SERVICE() {
}
public static PsiResolveHelper getInstance(Project project) {
return ServiceManager.getService(project, PsiResolveHelper.class);
}
}
/**
* Resolves a constructor.
* The resolved constructor is not necessarily accessible from the point of the call,
@@ -151,7 +151,7 @@ public class PsiConcurrencyStressTest extends PsiTestCase {
super.visitElement(element);
final HighlightInfoHolder infoHolder = new HighlightInfoHolder(myFile, HighlightInfoFilter.EMPTY_ARRAY);
final HighlightVisitorImpl visitor = new HighlightVisitorImpl(getProject());
final HighlightVisitorImpl visitor = new HighlightVisitorImpl(PsiResolveHelper.SERVICE.getInstance(getProject()));
visitor.analyze(myFile, false, infoHolder, new Runnable() {
@Override
public void run() {
+2
View File
@@ -279,6 +279,8 @@
serviceImplementation="com.intellij.psi.codeStyle.JavaCodeStyleSettingsFacadeImpl"/>
<projectService serviceInterface="com.intellij.psi.impl.migration.PsiMigrationManager"
serviceImplementation="com.intellij.psi.impl.migration.PsiMigrationManager"/>
<projectService serviceInterface="com.intellij.psi.PsiResolveHelper"
serviceImplementation="com.intellij.psi.impl.source.resolve.PsiResolveHelperImpl"/>
<applicationService serviceInterface="com.intellij.psi.JavaDirectoryService"
serviceImplementation="com.intellij.psi.impl.file.JavaDirectoryServiceImpl"/>