Retrieve JavaElementFinder from Project's extensions
This commit is contained in:
@@ -94,7 +94,7 @@ public class JetCoreEnvironment {
|
|||||||
|
|
||||||
Extensions.getArea(project)
|
Extensions.getArea(project)
|
||||||
.getExtensionPoint(PsiElementFinder.EP_NAME)
|
.getExtensionPoint(PsiElementFinder.EP_NAME)
|
||||||
.registerExtension(new JavaElementFinder(project));
|
.registerExtension(new JavaElementFinder(project, cliLightClassGenerationSupport));
|
||||||
|
|
||||||
// This extension point should be registered in JavaCoreApplicationEnvironment
|
// This extension point should be registered in JavaCoreApplicationEnvironment
|
||||||
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), ClsCustomNavigationPolicy.EP_NAME,
|
CoreApplicationEnvironment.registerExtensionPoint(Extensions.getRootArea(), ClsCustomNavigationPolicy.EP_NAME,
|
||||||
|
|||||||
@@ -16,6 +16,7 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.asJava;
|
package org.jetbrains.jet.asJava;
|
||||||
|
|
||||||
|
import com.intellij.openapi.extensions.Extensions;
|
||||||
import com.intellij.openapi.project.Project;
|
import com.intellij.openapi.project.Project;
|
||||||
import com.intellij.openapi.vfs.*;
|
import com.intellij.openapi.vfs.*;
|
||||||
import com.intellij.psi.PsiClass;
|
import com.intellij.psi.PsiClass;
|
||||||
@@ -40,12 +41,28 @@ import java.util.*;
|
|||||||
import static org.jetbrains.jet.codegen.CodegenUtil.getLocalNameForObject;
|
import static org.jetbrains.jet.codegen.CodegenUtil.getLocalNameForObject;
|
||||||
|
|
||||||
public class JavaElementFinder extends PsiElementFinder implements JavaPsiFacadeKotlinHacks.KotlinFinderMarker {
|
public class JavaElementFinder extends PsiElementFinder implements JavaPsiFacadeKotlinHacks.KotlinFinderMarker {
|
||||||
|
|
||||||
|
@NotNull
|
||||||
|
public static JavaElementFinder getInstance(@NotNull Project project) {
|
||||||
|
PsiElementFinder[] extensions = Extensions.getArea(project).getExtensionPoint(PsiElementFinder.EP_NAME).getExtensions();
|
||||||
|
for (PsiElementFinder extension : extensions) {
|
||||||
|
if (extension instanceof JavaElementFinder) {
|
||||||
|
return (JavaElementFinder) extension;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new IllegalStateException(JavaElementFinder.class.getSimpleName() + " is not found for project " + project);
|
||||||
|
}
|
||||||
|
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final PsiManager psiManager;
|
private final PsiManager psiManager;
|
||||||
|
|
||||||
private final WeakHashMap<GlobalSearchScope, Collection<JetFile>> jetFiles = new WeakHashMap<GlobalSearchScope, Collection<JetFile>>();
|
private final WeakHashMap<GlobalSearchScope, Collection<JetFile>> jetFiles = new WeakHashMap<GlobalSearchScope, Collection<JetFile>>();
|
||||||
|
|
||||||
public JavaElementFinder(Project project) {
|
public JavaElementFinder(
|
||||||
|
@NotNull Project project,
|
||||||
|
@SuppressWarnings("UnusedParameters") // This parameter simply ensures that there is some LightClassGenerationSupport for the project
|
||||||
|
@NotNull LightClassGenerationSupport lightClassGenerationSupport
|
||||||
|
) {
|
||||||
this.project = project;
|
this.project = project;
|
||||||
psiManager = PsiManager.getInstance(project);
|
psiManager = PsiManager.getInstance(project);
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,8 @@ public class JavaElementFinderTest extends JetLiteFixture {
|
|||||||
@Override
|
@Override
|
||||||
public void setUp() throws Exception {
|
public void setUp() throws Exception {
|
||||||
super.setUp();
|
super.setUp();
|
||||||
finder = new JavaElementFinder(getProject());
|
|
||||||
|
finder = new JavaElementFinder(getProject(), null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void testFromEnumEntry() {
|
public void testFromEnumEntry() {
|
||||||
|
|||||||
@@ -57,11 +57,9 @@ public class JetShortNamesCache extends PsiShortNamesCache {
|
|||||||
private static final PsiMethod[] NO_METHODS = new PsiMethod[0];
|
private static final PsiMethod[] NO_METHODS = new PsiMethod[0];
|
||||||
private static final PsiField[] NO_FIELDS = new PsiField[0];
|
private static final PsiField[] NO_FIELDS = new PsiField[0];
|
||||||
private final Project project;
|
private final Project project;
|
||||||
private final JavaElementFinder javaElementFinder;
|
|
||||||
|
|
||||||
public JetShortNamesCache(Project project) {
|
public JetShortNamesCache(Project project) {
|
||||||
this.project = project;
|
this.project = project;
|
||||||
this.javaElementFinder = new JavaElementFinder(project);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -91,7 +89,7 @@ public class JetShortNamesCache extends PsiShortNamesCache {
|
|||||||
if (classOrObject instanceof JetNamedDeclaration) {
|
if (classOrObject instanceof JetNamedDeclaration) {
|
||||||
FqName fqName = JetPsiUtil.getFQName((JetNamedDeclaration) classOrObject);
|
FqName fqName = JetPsiUtil.getFQName((JetNamedDeclaration) classOrObject);
|
||||||
if (fqName != null && fqName.shortName().getName().equals(name)) {
|
if (fqName != null && fqName.shortName().getName().equals(name)) {
|
||||||
PsiClass psiClass = javaElementFinder.findClass(fqName.getFqName(), scope);
|
PsiClass psiClass = JavaElementFinder.getInstance(project).findClass(fqName.getFqName(), scope);
|
||||||
if (psiClass != null) {
|
if (psiClass != null) {
|
||||||
result.add(psiClass);
|
result.add(psiClass);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user