mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
for performance use processNames api for java symbol contributor
This commit is contained in:
+11
-2
@@ -16,7 +16,7 @@
|
||||
package com.intellij.ide.util.gotoByName;
|
||||
|
||||
import com.intellij.ide.util.DefaultPsiElementCellRenderer;
|
||||
import com.intellij.navigation.ChooseByNameContributor;
|
||||
import com.intellij.navigation.ChooseByNameContributorEx;
|
||||
import com.intellij.navigation.NavigationItem;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
@@ -26,7 +26,9 @@ import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -34,7 +36,7 @@ import java.util.Arrays;
|
||||
import java.util.Comparator;
|
||||
import java.util.List;
|
||||
|
||||
public class DefaultSymbolNavigationContributor implements ChooseByNameContributor {
|
||||
public class DefaultSymbolNavigationContributor implements ChooseByNameContributorEx {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.ide.util.gotoByName.DefaultSymbolNavigationContributor");
|
||||
|
||||
@Override
|
||||
@@ -91,6 +93,13 @@ public class DefaultSymbolNavigationContributor implements ChooseByNameContribut
|
||||
return false;
|
||||
}
|
||||
|
||||
public void processNames(Processor<String> processor, GlobalSearchScope scope, IdFilter filter) {
|
||||
PsiShortNamesCache cache = PsiShortNamesCache.getInstance(scope.getProject());
|
||||
cache.processAllClassNames(processor, scope, filter);
|
||||
cache.processAllFieldNames(processor, scope, filter);
|
||||
cache.processAllMethodNames(processor, scope, filter);
|
||||
}
|
||||
|
||||
private static class MyComparator implements Comparator<PsiModifierListOwner>{
|
||||
public static final MyComparator INSTANCE = new MyComparator();
|
||||
|
||||
|
||||
@@ -120,6 +120,14 @@ public abstract class PsiShortNamesCache {
|
||||
|
||||
public abstract boolean processMethodsWithName(@NonNls @NotNull String name, @NotNull GlobalSearchScope scope, @NotNull Processor<PsiMethod> processor);
|
||||
|
||||
public boolean processAllMethodNames(Processor<String> processor, GlobalSearchScope scope, IdFilter filter) {
|
||||
return ContainerUtil.process(getAllFieldNames(), processor);
|
||||
}
|
||||
|
||||
public boolean processAllFieldNames(Processor<String> processor, GlobalSearchScope scope, IdFilter filter) {
|
||||
return ContainerUtil.process(getAllFieldNames(), processor);
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the list of names of all methods in the project and
|
||||
* (optionally) libraries.
|
||||
|
||||
@@ -116,6 +116,26 @@ public class CompositeShortNamesCache extends PsiShortNamesCache {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processAllMethodNames(Processor<String> processor, GlobalSearchScope scope, IdFilter filter) {
|
||||
for (PsiShortNamesCache cache : myCaches) {
|
||||
if (!cache.processAllMethodNames(processor, scope, filter)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processAllFieldNames(Processor<String> processor, GlobalSearchScope scope, IdFilter filter) {
|
||||
for (PsiShortNamesCache cache : myCaches) {
|
||||
if (!cache.processAllFieldNames(processor, scope, filter)) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void getAllClassNames(@NotNull HashSet<String> dest) {
|
||||
for (PsiShortNamesCache cache : myCaches) {
|
||||
|
||||
@@ -121,6 +121,16 @@ public class PsiShortNamesCacheImpl extends PsiShortNamesCache {
|
||||
return StubIndex.getInstance().processAllKeys(JavaStubIndexKeys.CLASS_SHORT_NAMES, processor, scope, filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processAllMethodNames(Processor<String> processor, GlobalSearchScope scope, IdFilter filter) {
|
||||
return StubIndex.getInstance().processAllKeys(JavaStubIndexKeys.METHODS, processor, scope, filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean processAllFieldNames(Processor<String> processor, GlobalSearchScope scope, IdFilter filter) {
|
||||
return StubIndex.getInstance().processAllKeys(JavaStubIndexKeys.FIELDS, processor, scope, filter);
|
||||
}
|
||||
|
||||
@Override
|
||||
@NotNull
|
||||
public PsiMethod[] getMethodsByName(@NotNull String name, @NotNull final GlobalSearchScope scope) {
|
||||
|
||||
Reference in New Issue
Block a user