mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
cancelable collection processor: more cancelability where CollectProcessor is used
This commit is contained in:
+12
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -28,14 +28,16 @@ import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
import com.intellij.psi.util.ClassUtil;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import com.intellij.util.indexing.FindSymbolParameters;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
|
||||
public class DefaultClassNavigationContributor implements ChooseByNameContributorEx, GotoClassContributor {
|
||||
@@ -44,10 +46,12 @@ public class DefaultClassNavigationContributor implements ChooseByNameContributo
|
||||
public String[] getNames(Project project, boolean includeNonProjectItems) {
|
||||
if (FileBasedIndex.ourEnableTracingOfKeyHashToVirtualFileMapping) {
|
||||
GlobalSearchScope scope = includeNonProjectItems ? GlobalSearchScope.allScope(project) : GlobalSearchScope.projectScope(project);
|
||||
CommonProcessors.CollectProcessor<String> processor = new CommonProcessors.CollectProcessor<String>();
|
||||
List<String> result = new ArrayList<>();
|
||||
Processor<String> processor = Processors.cancelableCollectProcessor(result);
|
||||
|
||||
processNames(processor, scope, IdFilter.getProjectIdFilter(project, includeNonProjectItems));
|
||||
|
||||
return ArrayUtil.toStringArray(processor.getResults());
|
||||
return ArrayUtil.toStringArray(result);
|
||||
}
|
||||
|
||||
return PsiShortNamesCache.getInstance(project).getAllClassNames();
|
||||
@@ -56,10 +60,12 @@ public class DefaultClassNavigationContributor implements ChooseByNameContributo
|
||||
@Override
|
||||
@NotNull
|
||||
public NavigationItem[] getItemsByName(String name, final String pattern, Project project, boolean includeNonProjectItems) {
|
||||
CommonProcessors.CollectProcessor<NavigationItem> processor = new CommonProcessors.CollectProcessor<NavigationItem>();
|
||||
List<NavigationItem> result = new ArrayList<>();
|
||||
Processor<NavigationItem> processor = Processors.cancelableCollectProcessor(result);
|
||||
processElementsWithName(name, processor, FindSymbolParameters.wrap(pattern, project, includeNonProjectItems));
|
||||
|
||||
return processor.toArray(new NavigationItem[processor.getResults().size()]);
|
||||
return result.isEmpty() ? NavigationItem.EMPTY_NAVIGATION_ITEM_ARRAY :
|
||||
result.toArray(new NavigationItem[result.size()]);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -26,8 +26,8 @@ import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiNamedElement;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -97,8 +97,8 @@ public class JavaTestFinder implements TestFinder {
|
||||
if (klass == null) return Collections.emptySet();
|
||||
|
||||
List<Pair<? extends PsiNamedElement, Integer>> classesWithProximities = new ArrayList<Pair<? extends PsiNamedElement, Integer>>();
|
||||
final CommonProcessors.CollectProcessor<Pair<? extends PsiNamedElement, Integer>> processor =
|
||||
new CommonProcessors.CollectProcessor<Pair<? extends PsiNamedElement, Integer>>(classesWithProximities);
|
||||
Processor<Pair<? extends PsiNamedElement, Integer>> processor =
|
||||
Processors.cancelableCollectProcessor(classesWithProximities);
|
||||
collectTests(klass, processor);
|
||||
|
||||
return TestFinderHelper.getSortedElements(classesWithProximities, true);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -27,10 +27,7 @@ import com.intellij.psi.search.FilenameIndex;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiShortNamesCache;
|
||||
import com.intellij.psi.stubs.StubIndex;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
import gnu.trove.THashMap;
|
||||
@@ -120,7 +117,8 @@ public class PsiShortNamesCacheImpl extends PsiShortNamesCache {
|
||||
|
||||
@Override
|
||||
public void getAllClassNames(@NotNull HashSet<String> set) {
|
||||
processAllClassNames(new CommonProcessors.CollectProcessor<String>(set));
|
||||
Processor<String> processor = Processors.cancelableCollectProcessor(set);
|
||||
processAllClassNames(processor);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -187,7 +185,7 @@ public class PsiShortNamesCacheImpl extends PsiShortNamesCache {
|
||||
|
||||
@Override
|
||||
public void getAllMethodNames(@NotNull HashSet<String> set) {
|
||||
JavaMethodNameIndex.getInstance().processAllKeys(myManager.getProject(), new CommonProcessors.CollectProcessor<String>(set));
|
||||
JavaMethodNameIndex.getInstance().processAllKeys(myManager.getProject(), Processors.cancelableCollectProcessor(set));
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -226,7 +224,8 @@ public class PsiShortNamesCacheImpl extends PsiShortNamesCache {
|
||||
|
||||
@Override
|
||||
public void getAllFieldNames(@NotNull HashSet<String> set) {
|
||||
JavaFieldNameIndex.getInstance().processAllKeys(myManager.getProject(), new CommonProcessors.CollectProcessor<String>(set));
|
||||
Processor<String> processor = Processors.cancelableCollectProcessor(set);
|
||||
JavaFieldNameIndex.getInstance().processAllKeys(myManager.getProject(), processor);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+7
-10
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -36,9 +36,9 @@ import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.psi.stubs.StubIndex;
|
||||
import com.intellij.psi.stubs.StubIndexKey;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -174,7 +174,7 @@ public class JavaFunctionalExpressionSearcher extends QueryExecutorBase<PsiFunct
|
||||
|
||||
final Set<String> usedMethodNames = newHashSet();
|
||||
FileBasedIndex.getInstance().processAllKeys(JavaFunctionalExpressionIndex.JAVA_FUNCTIONAL_EXPRESSION_INDEX_ID,
|
||||
new CommonProcessors.CollectProcessor<String>(usedMethodNames), candidateScope, null);
|
||||
Processors.cancelableCollectProcessor(usedMethodNames), candidateScope, null);
|
||||
|
||||
final LinkedHashSet<PsiMethod> methods = newLinkedHashSet();
|
||||
Processor<PsiMethod> methodProcessor = new Processor<PsiMethod>() {
|
||||
@@ -200,12 +200,9 @@ public class JavaFunctionalExpressionSearcher extends QueryExecutorBase<PsiFunct
|
||||
@NotNull
|
||||
private static GlobalSearchScope combineResolveScopes(Project project, Set<VirtualFile> candidateFiles) {
|
||||
final PsiManager psiManager = PsiManager.getInstance(project);
|
||||
LinkedHashSet<GlobalSearchScope> resolveScopes = newLinkedHashSet(mapNotNull(candidateFiles, new Function<VirtualFile, GlobalSearchScope>() {
|
||||
@Override
|
||||
public GlobalSearchScope fun(VirtualFile file) {
|
||||
PsiFile psiFile = file.isValid() ? psiManager.findFile(file) : null;
|
||||
return psiFile == null ? null : psiFile.getResolveScope();
|
||||
}
|
||||
Set<GlobalSearchScope> resolveScopes = newLinkedHashSet(mapNotNull(candidateFiles, file -> {
|
||||
PsiFile psiFile = file.isValid() ? psiManager.findFile(file) : null;
|
||||
return psiFile == null ? null : psiFile.getResolveScope();
|
||||
}));
|
||||
return GlobalSearchScope.union(resolveScopes.toArray(new GlobalSearchScope[resolveScopes.size()]));
|
||||
}
|
||||
@@ -214,7 +211,7 @@ public class JavaFunctionalExpressionSearcher extends QueryExecutorBase<PsiFunct
|
||||
private static Set<VirtualFile> getFilesWithFunctionalExpressionsScope(Project project, GlobalSearchScope useScope) {
|
||||
final Set<VirtualFile> files = newLinkedHashSet();
|
||||
final PsiSearchHelperImpl helper = (PsiSearchHelperImpl)PsiSearchHelper.SERVICE.getInstance(project);
|
||||
final CommonProcessors.CollectProcessor<VirtualFile> processor = new CommonProcessors.CollectProcessor<VirtualFile>(files);
|
||||
Processor<VirtualFile> processor = Processors.cancelableCollectProcessor(files);
|
||||
helper.processFilesWithText(useScope, UsageSearchContext.IN_CODE, true, "::", processor);
|
||||
helper.processFilesWithText(useScope, UsageSearchContext.IN_CODE, true, "->", processor);
|
||||
return files;
|
||||
|
||||
@@ -19,7 +19,8 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.ConcurrentFactoryMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import gnu.trove.THashSet;
|
||||
@@ -197,14 +198,16 @@ public class AnnotationUtil {
|
||||
@Nullable
|
||||
@Override
|
||||
public Result<List<T>> compute() {
|
||||
LinkedHashSet<PsiModifierListOwner> result = ContainerUtil.newLinkedHashSet();
|
||||
Set<PsiModifierListOwner> result = ContainerUtil.newLinkedHashSet();
|
||||
if (element instanceof PsiMethod) {
|
||||
collectSuperMethods(result, ((PsiMethod)element).getHierarchicalMethodSignature(), element,
|
||||
JavaPsiFacade.getInstance(element.getProject()).getResolveHelper());
|
||||
} else if (element instanceof PsiClass) {
|
||||
}
|
||||
else if (element instanceof PsiClass) {
|
||||
//noinspection unchecked
|
||||
InheritanceUtil.processSupers((PsiClass)element, false, new CommonProcessors.CollectProcessor<PsiClass>((Set)result));
|
||||
} else if (element instanceof PsiParameter) {
|
||||
InheritanceUtil.processSupers((PsiClass)element, false, (Processor)Processors.cancelableCollectProcessor(result));
|
||||
}
|
||||
else if (element instanceof PsiParameter) {
|
||||
collectSuperParameters(result, (PsiParameter)element);
|
||||
}
|
||||
|
||||
@@ -249,7 +252,7 @@ public class AnnotationUtil {
|
||||
return map.get(annotationNames);
|
||||
}
|
||||
|
||||
private static void collectSuperParameters(LinkedHashSet<PsiModifierListOwner> result, @NotNull PsiParameter parameter) {
|
||||
private static void collectSuperParameters(@NotNull Set<PsiModifierListOwner> result, @NotNull PsiParameter parameter) {
|
||||
PsiElement scope = parameter.getDeclarationScope();
|
||||
if (!(scope instanceof PsiMethod)) {
|
||||
return;
|
||||
@@ -269,7 +272,7 @@ public class AnnotationUtil {
|
||||
}
|
||||
}
|
||||
|
||||
private static void collectSuperMethods(LinkedHashSet<PsiModifierListOwner> result,
|
||||
private static void collectSuperMethods(@NotNull Set<PsiModifierListOwner> result,
|
||||
@NotNull HierarchicalMethodSignature signature,
|
||||
@NotNull PsiElement place,
|
||||
@NotNull PsiResolveHelper resolveHelper) {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -41,7 +41,8 @@ import com.intellij.psi.search.PsiSearchScopeUtil;
|
||||
import com.intellij.psi.util.*;
|
||||
import com.intellij.reference.SoftReference;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -84,10 +85,10 @@ public class PsiPackageImpl extends PsiPackageBase implements PsiPackage, Querya
|
||||
return CachedValuesManager.getManager(myManager.getProject()).createCachedValue(new CachedValueProvider<Collection<PsiDirectory>>() {
|
||||
@Override
|
||||
public Result<Collection<PsiDirectory>> compute() {
|
||||
final CommonProcessors.CollectProcessor<PsiDirectory> processor = new CommonProcessors.CollectProcessor<PsiDirectory>();
|
||||
Collection<PsiDirectory> result = new ArrayList<PsiDirectory>();
|
||||
Processor<PsiDirectory> processor = Processors.cancelableCollectProcessor(result);
|
||||
getFacade().processPackageDirectories(PsiPackageImpl.this, allScope(), processor, includeLibrarySources);
|
||||
return Result.create(processor.getResults(), PsiPackageImplementationHelper.getInstance().getDirectoryCachedValueDependencies(
|
||||
PsiPackageImpl.this));
|
||||
return Result.create(result, PsiPackageImplementationHelper.getInstance().getDirectoryCachedValueDependencies(PsiPackageImpl.this));
|
||||
}
|
||||
}, false);
|
||||
}
|
||||
|
||||
+4
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -24,6 +24,7 @@ import com.intellij.psi.*;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.xml.ConvertContext;
|
||||
import com.intellij.util.xml.DomElement;
|
||||
@@ -115,8 +116,8 @@ public abstract class AbstractMethodResolveConverter<ParentType extends DomEleme
|
||||
|
||||
@NotNull
|
||||
public Collection<? extends PsiMethod> getVariants(final ConvertContext context) {
|
||||
LinkedHashSet<PsiMethod> methodList = new LinkedHashSet<PsiMethod>();
|
||||
Processor<PsiMethod> processor = CommonProcessors.notNullProcessor(new CommonProcessors.CollectProcessor<PsiMethod>(methodList));
|
||||
Set<PsiMethod> methodList = new LinkedHashSet<PsiMethod>();
|
||||
Processor<PsiMethod> processor = CommonProcessors.notNullProcessor(Processors.cancelableCollectProcessor(methodList));
|
||||
processMethods(context, processor, new Function<PsiClass, PsiMethod[]>() {
|
||||
public PsiMethod[] fun(final PsiClass s) {
|
||||
final List<PsiMethod> list = ContainerUtil.findAll(getVariants(s), new Condition<PsiMethod>() {
|
||||
|
||||
@@ -21,8 +21,10 @@ import com.intellij.openapi.application.ReadActionProcessor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author peter
|
||||
@@ -34,9 +36,10 @@ public abstract class AbstractQuery<Result> implements Query<Result> {
|
||||
@NotNull
|
||||
public Collection<Result> findAll() {
|
||||
assertNotProcessing();
|
||||
final CommonProcessors.CollectProcessor<Result> processor = new CommonProcessors.CollectProcessor<Result>();
|
||||
List<Result> result = new ArrayList<Result>();
|
||||
Processor<Result> processor = Processors.cancelableCollectProcessor(result);
|
||||
forEach(processor);
|
||||
return processor.getResults();
|
||||
return result;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -20,8 +20,10 @@ import com.intellij.concurrency.AsyncFuture;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @author max
|
||||
@@ -57,9 +59,10 @@ public class FilteredQuery<T> implements Query<T> {
|
||||
@Override
|
||||
@NotNull
|
||||
public Collection<T> findAll() {
|
||||
CommonProcessors.CollectProcessor<T> processor = new CommonProcessors.CollectProcessor<T>();
|
||||
List<T> result = new ArrayList<T>();
|
||||
Processor<T> processor = Processors.cancelableCollectProcessor(result);
|
||||
forEach(processor);
|
||||
return processor.getResults();
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -40,7 +40,8 @@ public class MergeQuery<T> implements Query<T>{
|
||||
@NotNull
|
||||
public Collection<T> findAll() {
|
||||
List<T> results = new ArrayList<T>();
|
||||
forEach(new CommonProcessors.CollectProcessor<T>(results));
|
||||
Processor<T> processor = Processors.cancelableCollectProcessor(results);
|
||||
forEach(processor);
|
||||
return results;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
/*
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
* You may obtain a copy of the License at
|
||||
*
|
||||
* http://www.apache.org/licenses/LICENSE-2.0
|
||||
*
|
||||
* Unless required by applicable law or agreed to in writing, software
|
||||
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
* See the License for the specific language governing permissions and
|
||||
* limitations under the License.
|
||||
*/
|
||||
package com.intellij.util;
|
||||
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class Processors {
|
||||
@NotNull
|
||||
public static <T> Processor<T> cancelableCollectProcessor(@NotNull Collection<T> collection) {
|
||||
return new CommonProcessors.CollectProcessor<T>(collection){
|
||||
@Override
|
||||
public boolean process(T t) {
|
||||
ProgressManager.checkCanceled();
|
||||
return super.process(t);
|
||||
}
|
||||
};
|
||||
}
|
||||
}
|
||||
@@ -74,9 +74,10 @@ public class UniqueResultsQuery<T, M> implements Query<T> {
|
||||
@Override
|
||||
@NotNull
|
||||
public Collection<T> findAll() {
|
||||
final CommonProcessors.CollectProcessor<T> processor = new CommonProcessors.CollectProcessor<T>(Collections.synchronizedList(new ArrayList<T>()));
|
||||
List<T> result = Collections.synchronizedList(new ArrayList<T>());
|
||||
Processor<T> processor = Processors.cancelableCollectProcessor(result);
|
||||
forEach(processor);
|
||||
return processor.getResults();
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -25,9 +25,9 @@ import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.ObjectUtils;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
import com.intellij.util.indexing.IdIterator;
|
||||
@@ -141,8 +141,9 @@ public abstract class StubIndex {
|
||||
@Nullable final GlobalSearchScope scope,
|
||||
@Nullable IdFilter idFilter,
|
||||
@NotNull Class<Psi> requiredClass) {
|
||||
final List<Psi> result = new SmartList<Psi>();
|
||||
getInstance().processElements(indexKey, key, project, scope, idFilter, requiredClass, new CommonProcessors.CollectProcessor<Psi>(result));
|
||||
final List<Psi> result = new SmartList<>();
|
||||
Processor<Psi> processor = Processors.cancelableCollectProcessor(result);
|
||||
getInstance().processElements(indexKey, key, project, scope, idFilter, requiredClass, processor);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
+20
-14
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2012 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -32,8 +32,8 @@ import com.intellij.psi.impl.cache.CacheManager;
|
||||
import com.intellij.psi.impl.cache.impl.id.IdIndex;
|
||||
import com.intellij.psi.impl.cache.impl.id.IdIndexEntry;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -60,9 +60,11 @@ public class IndexCacheManagerImpl implements CacheManager{
|
||||
if (myProject.isDefault()) {
|
||||
return PsiFile.EMPTY_ARRAY;
|
||||
}
|
||||
CommonProcessors.CollectProcessor<PsiFile> processor = new CommonProcessors.CollectProcessor<PsiFile>();
|
||||
List<PsiFile> result = new ArrayList<>();
|
||||
Processor<PsiFile> processor = Processors.cancelableCollectProcessor(result);
|
||||
|
||||
processFilesWithWord(processor, word, occurenceMask, scope, caseSensitively);
|
||||
return processor.getResults().isEmpty() ? PsiFile.EMPTY_ARRAY : processor.toArray(PsiFile.EMPTY_ARRAY);
|
||||
return result.isEmpty() ? PsiFile.EMPTY_ARRAY : result.toArray(PsiFile.EMPTY_ARRAY);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -72,18 +74,21 @@ public class IndexCacheManagerImpl implements CacheManager{
|
||||
return VirtualFile.EMPTY_ARRAY;
|
||||
}
|
||||
|
||||
final List<VirtualFile> vFiles = new ArrayList<VirtualFile>(5);
|
||||
collectVirtualFilesWithWord(new CommonProcessors.CollectProcessor<VirtualFile>(vFiles), word, occurenceMask, scope, caseSensitively);
|
||||
return vFiles.isEmpty() ? VirtualFile.EMPTY_ARRAY : vFiles.toArray(new VirtualFile[vFiles.size()]);
|
||||
final List<VirtualFile> result = new ArrayList<VirtualFile>(5);
|
||||
Processor<VirtualFile> processor = Processors.cancelableCollectProcessor(result);
|
||||
collectVirtualFilesWithWord(word, occurenceMask, scope, caseSensitively, processor);
|
||||
return result.isEmpty() ? VirtualFile.EMPTY_ARRAY : result.toArray(new VirtualFile[result.size()]);
|
||||
}
|
||||
|
||||
// IMPORTANT!!!
|
||||
// Since implementation of virtualFileProcessor.process() may call indices directly or indirectly,
|
||||
// we cannot call it inside FileBasedIndex.processValues() method except in collecting form
|
||||
// If we do, deadlocks are possible (IDEADEV-42137). Process the files without not holding indices' read lock.
|
||||
private boolean collectVirtualFilesWithWord(@NotNull final Processor<VirtualFile> fileProcessor,
|
||||
@NotNull final String word, final short occurrenceMask,
|
||||
@NotNull final GlobalSearchScope scope, final boolean caseSensitively) {
|
||||
private boolean collectVirtualFilesWithWord(@NotNull final String word,
|
||||
final short occurrenceMask,
|
||||
@NotNull final GlobalSearchScope scope,
|
||||
final boolean caseSensitively,
|
||||
@NotNull final Processor<VirtualFile> fileProcessor) {
|
||||
if (myProject.isDefault()) {
|
||||
return true;
|
||||
}
|
||||
@@ -114,9 +119,10 @@ public class IndexCacheManagerImpl implements CacheManager{
|
||||
|
||||
@Override
|
||||
public boolean processFilesWithWord(@NotNull final Processor<PsiFile> psiFileProcessor, @NotNull final String word, final short occurrenceMask, @NotNull final GlobalSearchScope scope, final boolean caseSensitively) {
|
||||
final List<VirtualFile> vFiles = new ArrayList<VirtualFile>(5);
|
||||
collectVirtualFilesWithWord(new CommonProcessors.CollectProcessor<VirtualFile>(vFiles), word, occurrenceMask, scope, caseSensitively);
|
||||
if (vFiles.isEmpty()) return true;
|
||||
final List<VirtualFile> result = new ArrayList<VirtualFile>(5);
|
||||
Processor<VirtualFile> processor = Processors.cancelableCollectProcessor(result);
|
||||
collectVirtualFilesWithWord(word, occurrenceMask, scope, caseSensitively, processor);
|
||||
if (result.isEmpty()) return true;
|
||||
|
||||
final Processor<VirtualFile> virtualFileProcessor = new ReadActionProcessor<VirtualFile>() {
|
||||
@Override
|
||||
@@ -135,7 +141,7 @@ public class IndexCacheManagerImpl implements CacheManager{
|
||||
// we cannot call it inside FileBasedIndex.processValues() method
|
||||
// If we do, deadlocks are possible (IDEADEV-42137). So first we obtain files with the word specified,
|
||||
// and then process them not holding indices' read lock.
|
||||
for (VirtualFile vFile : vFiles) {
|
||||
for (VirtualFile vFile : result) {
|
||||
ProgressIndicatorProvider.checkCanceled();
|
||||
if (!virtualFileProcessor.process(vFile)) {
|
||||
return false;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -45,9 +45,9 @@ import com.intellij.psi.search.*;
|
||||
import com.intellij.psi.util.PsiUtilCore;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usageView.UsageInfoFactory;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.codeInsight.CommentUtilCore;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -99,9 +99,10 @@ public class PsiSearchHelperImpl implements PsiSearchHelper {
|
||||
@Override
|
||||
@NotNull
|
||||
public PsiElement[] findCommentsContainingIdentifier(@NotNull String identifier, @NotNull SearchScope searchScope) {
|
||||
final List<PsiElement> results = Collections.synchronizedList(new ArrayList<PsiElement>());
|
||||
processCommentsContainingIdentifier(identifier, searchScope, new CommonProcessors.CollectProcessor<PsiElement>(results));
|
||||
return PsiUtilCore.toPsiElementArray(results);
|
||||
final List<PsiElement> result = Collections.synchronizedList(new ArrayList<>());
|
||||
Processor<PsiElement> processor = Processors.cancelableCollectProcessor(result);
|
||||
processCommentsContainingIdentifier(identifier, searchScope, processor);
|
||||
return PsiUtilCore.toPsiElementArray(result);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -405,13 +406,7 @@ public class PsiSearchHelperImpl implements PsiSearchHelper {
|
||||
@NotNull Collection<VirtualFile> result) {
|
||||
myManager.startBatchFilesProcessingMode();
|
||||
try {
|
||||
Processor<VirtualFile> processor = new CommonProcessors.CollectProcessor<VirtualFile>(result){
|
||||
@Override
|
||||
public boolean process(VirtualFile file) {
|
||||
progress.checkCanceled();
|
||||
return super.process(file);
|
||||
}
|
||||
};
|
||||
Processor<VirtualFile> processor = Processors.cancelableCollectProcessor(result);
|
||||
boolean success = processFilesWithText(scope, searchContext, caseSensitively, text, processor);
|
||||
// success == false means exception in index
|
||||
}
|
||||
@@ -794,10 +789,10 @@ public class PsiSearchHelperImpl implements PsiSearchHelper {
|
||||
final GlobalSearchScope commonScope = uniteScopes(data);
|
||||
final Set<VirtualFile> intersectionWithContainerNameFiles = intersectionWithContainerNameFiles(commonScope, data, keys);
|
||||
|
||||
List<VirtualFile> files = new ArrayList<VirtualFile>();
|
||||
Processor<VirtualFile> processor = new CommonProcessors.CollectProcessor<VirtualFile>(files);
|
||||
List<VirtualFile> result = new ArrayList<VirtualFile>();
|
||||
Processor<VirtualFile> processor = Processors.cancelableCollectProcessor(result);
|
||||
processFilesContainingAllKeys(myManager.getProject(), commonScope, null, keys, processor);
|
||||
for (final VirtualFile file : files) {
|
||||
for (final VirtualFile file : result) {
|
||||
progress.checkCanceled();
|
||||
for (final IdIndexEntry entry : keys) {
|
||||
DumbService.getInstance(myManager.getProject()).runReadActionInSmartMode(new Runnable() {
|
||||
@@ -863,7 +858,8 @@ public class PsiSearchHelperImpl implements PsiSearchHelper {
|
||||
return (context.intValue() & finalSearchContext) != 0;
|
||||
}
|
||||
};
|
||||
processFilesContainingAllKeys(myManager.getProject(), commonScope, contextMatches, entries, new CommonProcessors.CollectProcessor<VirtualFile>(containerFiles));
|
||||
Processor<VirtualFile> processor = Processors.cancelableCollectProcessor(containerFiles);
|
||||
processFilesContainingAllKeys(myManager.getProject(), commonScope, contextMatches, entries, processor);
|
||||
|
||||
return containerFiles;
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -23,8 +23,8 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiFileSystemItem;
|
||||
import com.intellij.psi.PsiManager;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.indexing.*;
|
||||
import com.intellij.util.io.EnumeratorStringDescriptor;
|
||||
@@ -189,7 +189,8 @@ public class FilenameIndex extends ScalarIndexExtension<String> {
|
||||
@NotNull final GlobalSearchScope scope,
|
||||
boolean includeDirs) {
|
||||
SmartList<PsiFileSystemItem> result = new SmartList<PsiFileSystemItem>();
|
||||
processFilesByName(name, includeDirs, new CommonProcessors.CollectProcessor<PsiFileSystemItem>(result), scope, project, null);
|
||||
Processor<PsiFileSystemItem> processor = Processors.cancelableCollectProcessor(result);
|
||||
processFilesByName(name, includeDirs, processor, scope, project, null);
|
||||
|
||||
if (includeDirs) {
|
||||
return ArrayUtil.toObjectArray(result, PsiFileSystemItem.class);
|
||||
|
||||
+1
-2
@@ -169,8 +169,7 @@ public class DaemonCodeAnalyzerImpl extends DaemonCodeAnalyzerEx implements Pers
|
||||
@TestOnly
|
||||
public static List<HighlightInfo> getHighlights(@NotNull Document document, HighlightSeverity minSeverity, @NotNull Project project) {
|
||||
List<HighlightInfo> infos = new ArrayList<>();
|
||||
processHighlights(document, project, minSeverity, 0, document.getTextLength(),
|
||||
new CommonProcessors.CollectProcessor<>(infos));
|
||||
processHighlights(document, project, minSeverity, 0, document.getTextLength(), Processors.cancelableCollectProcessor(infos));
|
||||
return infos;
|
||||
}
|
||||
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -42,8 +42,8 @@ import com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
|
||||
import com.intellij.psi.impl.source.tree.injected.Place;
|
||||
import com.intellij.psi.tree.IElementType;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
@@ -170,7 +170,7 @@ public class InjectedGeneralHighlightingPass extends GeneralHighlightingPass imp
|
||||
}
|
||||
}
|
||||
InjectedLanguageManagerImpl injectedLanguageManager = InjectedLanguageManagerImpl.getInstanceImpl(myProject);
|
||||
Processor<PsiElement> collectInjectableProcessor = new CommonProcessors.CollectProcessor<PsiElement>(hosts);
|
||||
Processor<PsiElement> collectInjectableProcessor = Processors.cancelableCollectProcessor(hosts);
|
||||
injectedLanguageManager.processInjectableElements(elements1, collectInjectableProcessor);
|
||||
injectedLanguageManager.processInjectableElements(elements2, collectInjectableProcessor);
|
||||
|
||||
|
||||
@@ -50,9 +50,9 @@ import com.intellij.psi.PsiDocumentManager;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.PairProcessor;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -321,12 +321,13 @@ public class ShowIntentionsPass extends TextEditorHighlightingPass {
|
||||
|
||||
final int line = hostDocument.getLineNumber(offset);
|
||||
MarkupModelEx model = (MarkupModelEx)DocumentMarkupModel.forDocument(hostDocument, project, true);
|
||||
CommonProcessors.CollectProcessor<RangeHighlighterEx> processor = new CommonProcessors.CollectProcessor<RangeHighlighterEx>();
|
||||
List<RangeHighlighterEx> result = new ArrayList<>();
|
||||
Processor<RangeHighlighterEx> processor = Processors.cancelableCollectProcessor(result);
|
||||
model.processRangeHighlightersOverlappingWith(hostDocument.getLineStartOffset(line),
|
||||
hostDocument.getLineEndOffset(line),
|
||||
processor);
|
||||
|
||||
for (RangeHighlighterEx highlighter : processor.getResults()) {
|
||||
for (RangeHighlighterEx highlighter : result) {
|
||||
GutterIntentionAction.addActions(project, hostEditor, hostFile, highlighter, intentions.guttersToShow);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -58,8 +58,8 @@ import com.intellij.usageView.UsageInfo;
|
||||
import com.intellij.usages.FindUsagesProcessPresentation;
|
||||
import com.intellij.usages.UsageLimitUtil;
|
||||
import com.intellij.usages.impl.UsageViewManagerImpl;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import com.intellij.util.indexing.FileBasedIndexImpl;
|
||||
@@ -476,7 +476,7 @@ class FindInProjectTask {
|
||||
ApplicationManager.getApplication().runReadAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
FileBasedIndex.getInstance().getFilesWithKey(TrigramIndex.INDEX_ID, keys, new CommonProcessors.CollectProcessor<VirtualFile>(hits), scope);
|
||||
FileBasedIndex.getInstance().getFilesWithKey(TrigramIndex.INDEX_ID, keys, Processors.cancelableCollectProcessor(hits), scope);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
+5
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -33,8 +33,8 @@ import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.IndexNotReadyException;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.indexing.FindSymbolParameters;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
@@ -44,9 +44,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.awt.*;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.Collections;
|
||||
import java.util.*;
|
||||
import java.util.List;
|
||||
import java.util.concurrent.ConcurrentMap;
|
||||
|
||||
@@ -166,7 +164,8 @@ public abstract class ContributorsBasedGotoByModel implements ChooseByNameModelE
|
||||
public String[] getNames(final boolean checkBoxState) {
|
||||
final THashSet<String> allNames = ContainerUtil.newTroveSet();
|
||||
|
||||
processNames(new CommonProcessors.CollectProcessor<String>(Collections.synchronizedCollection(allNames)), checkBoxState);
|
||||
Collection<String> result = Collections.synchronizedCollection(allNames);
|
||||
processNames(Processors.cancelableCollectProcessor(result), checkBoxState);
|
||||
if (LOG.isDebugEnabled()) {
|
||||
LOG.debug("getNames(): (got "+allNames.size()+" elements)");
|
||||
}
|
||||
|
||||
+8
-4
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2009 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -24,14 +24,17 @@ import com.intellij.psi.PsiFileSystemItem;
|
||||
import com.intellij.psi.search.FilenameIndex;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import com.intellij.util.indexing.FindSymbolParameters;
|
||||
import com.intellij.util.indexing.IdFilter;
|
||||
import gnu.trove.THashSet;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class DefaultFileNavigationContributor implements ChooseByNameContributorEx, DumbAware {
|
||||
|
||||
@Override
|
||||
@@ -59,10 +62,11 @@ public class DefaultFileNavigationContributor implements ChooseByNameContributor
|
||||
@Override
|
||||
@NotNull
|
||||
public NavigationItem[] getItemsByName(String name, final String pattern, Project project, boolean includeNonProjectItems) {
|
||||
CommonProcessors.CollectProcessor<NavigationItem> processor = new CommonProcessors.CollectProcessor<NavigationItem>();
|
||||
List<NavigationItem> result = new ArrayList<>();
|
||||
Processor<NavigationItem> processor = Processors.cancelableCollectProcessor(result);
|
||||
processElementsWithName(name, processor, FindSymbolParameters.wrap(pattern, project, includeNonProjectItems));
|
||||
|
||||
return processor.toArray(new NavigationItem[processor.getResults().size()]);
|
||||
return result.isEmpty() ? NavigationItem.EMPTY_NAVIGATION_ITEM_ARRAY : result.toArray(new NavigationItem[result.size()]);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -44,8 +44,8 @@ import com.intellij.psi.impl.source.PsiFileImpl;
|
||||
import com.intellij.psi.impl.source.PsiFileWithStubSupport;
|
||||
import com.intellij.psi.impl.source.tree.FileElement;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.ThrowableRunnable;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -268,8 +268,8 @@ public class StubIndexImpl extends StubIndex implements ApplicationComponent, Pe
|
||||
@NotNull Project project,
|
||||
@Nullable GlobalSearchScope scope,
|
||||
IdFilter filter) {
|
||||
final List<Psi> result = new SmartList<Psi>();
|
||||
process(indexKey, key, project, scope, filter, new CommonProcessors.CollectProcessor<Psi>(result));
|
||||
final List<Psi> result = new SmartList<>();
|
||||
process(indexKey, key, project, scope, filter, Processors.cancelableCollectProcessor(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
@@ -364,7 +364,7 @@ public class StubIndexImpl extends StubIndex implements ApplicationComponent, Pe
|
||||
@NotNull
|
||||
public <K> Collection<K> getAllKeys(@NotNull StubIndexKey<K, ?> indexKey, @NotNull Project project) {
|
||||
Set<K> allKeys = ContainerUtil.newTroveSet();
|
||||
processAllKeys(indexKey, project, new CommonProcessors.CollectProcessor<K>(allKeys));
|
||||
processAllKeys(indexKey, project, Processors.cancelableCollectProcessor(allKeys));
|
||||
return allKeys;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -612,7 +612,7 @@ public class FileBasedIndexImpl extends FileBasedIndex {
|
||||
@NotNull
|
||||
public <K> Collection<K> getAllKeys(@NotNull final ID<K, ?> indexId, @NotNull Project project) {
|
||||
Set<K> allKeys = new THashSet<K>();
|
||||
processAllKeys(indexId, new CommonProcessors.CollectProcessor<K>(allKeys), project);
|
||||
processAllKeys(indexId, Processors.cancelableCollectProcessor(allKeys), project);
|
||||
return allKeys;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -24,8 +24,8 @@ import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.ProjectAndLibrariesScope;
|
||||
import com.intellij.psi.search.ProjectScopeImpl;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.SystemProperties;
|
||||
import com.intellij.util.containers.ConcurrentIntObjectMap;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
@@ -393,7 +393,7 @@ public final class MapIndexStorage<Key, Value> implements IndexStorage<Key, Valu
|
||||
@Override
|
||||
public Collection<Key> getKeys() throws StorageException {
|
||||
List<Key> keys = new ArrayList<Key>();
|
||||
processKeys(new CommonProcessors.CollectProcessor<Key>(keys), null, null);
|
||||
processKeys(Processors.cancelableCollectProcessor(keys), null, null);
|
||||
return keys;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,8 +17,8 @@
|
||||
package com.intellij.util.indexing;
|
||||
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -105,7 +105,7 @@ public class MemoryIndexStorage<Key, Value> implements IndexStorage<Key, Value>
|
||||
@Override
|
||||
public Collection<Key> getKeys() throws StorageException {
|
||||
final Set<Key> keys = new HashSet<Key>();
|
||||
processKeys(new CommonProcessors.CollectProcessor<Key>(keys), null, null);
|
||||
processKeys(Processors.cancelableCollectProcessor(keys), null, null);
|
||||
return keys;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -50,8 +50,8 @@ import com.intellij.usageView.UsageViewBundle;
|
||||
import com.intellij.usages.*;
|
||||
import com.intellij.util.Alarm;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.ui.RangeBlinker;
|
||||
import com.intellij.xml.util.XmlStringUtil;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
@@ -269,7 +269,7 @@ class SearchForUsagesRunnable implements Runnable {
|
||||
|
||||
RangeBlinker rangeBlinker = new RangeBlinker(editor, attributes, 6);
|
||||
List<Segment> segments = new ArrayList<Segment>();
|
||||
CommonProcessors.CollectProcessor<Segment> processor = new CommonProcessors.CollectProcessor<Segment>(segments);
|
||||
Processor<Segment> processor = Processors.cancelableCollectProcessor(segments);
|
||||
usageInfo.processRangeMarkers(processor);
|
||||
rangeBlinker.resetMarkers(segments);
|
||||
rangeBlinker.startBlinking();
|
||||
|
||||
+2
-2
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -61,7 +61,7 @@ public class GroovyShortNamesCache extends PsiShortNamesCache {
|
||||
@NotNull
|
||||
public PsiClass[] getClassesByName(@NotNull @NonNls String name, @NotNull GlobalSearchScope scope) {
|
||||
Collection<PsiClass> allClasses = new SmartList<PsiClass>();
|
||||
processClassesWithName(name, new CommonProcessors.CollectProcessor<PsiClass>(allClasses), scope, null);
|
||||
processClassesWithName(name, Processors.cancelableCollectProcessor(allClasses), scope, null);
|
||||
if (allClasses.isEmpty()) return PsiClass.EMPTY_ARRAY;
|
||||
return allClasses.toArray(new PsiClass[allClasses.size()]);
|
||||
}
|
||||
|
||||
@@ -34,9 +34,7 @@ import com.intellij.psi.search.PsiElementProcessor;
|
||||
import com.intellij.psi.search.PsiElementProcessorAdapter;
|
||||
import com.intellij.psi.search.searches.OverridingMethodsSearch;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.NullableFunction;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.HashSet;
|
||||
import gnu.trove.THashSet;
|
||||
@@ -156,7 +154,8 @@ public class GroovyMarkerTypes {
|
||||
final GrField field = (GrField)parent;
|
||||
|
||||
|
||||
final CommonProcessors.CollectProcessor<PsiMethod> collectProcessor = new CommonProcessors.CollectProcessor<PsiMethod>(new THashSet<PsiMethod>());
|
||||
Set<PsiMethod> result = new THashSet<>();
|
||||
Processor<PsiMethod> collectProcessor = Processors.cancelableCollectProcessor(result);
|
||||
if (!ProgressManager.getInstance().runProcessWithProgressSynchronously(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
@@ -173,7 +172,7 @@ public class GroovyMarkerTypes {
|
||||
return;
|
||||
}
|
||||
|
||||
PsiMethod[] overridings = collectProcessor.toArray(PsiMethod.EMPTY_ARRAY);
|
||||
PsiMethod[] overridings = result.toArray(PsiMethod.EMPTY_ARRAY);
|
||||
if (overridings.length == 0) return;
|
||||
String title = DaemonBundle.message("navigation.title.overrider.method", field.getName(), overridings.length);
|
||||
boolean showMethodNames = !PsiUtil.allMethodsHaveSameSignature(overridings);
|
||||
|
||||
+4
-6
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -39,10 +39,7 @@ import com.intellij.refactoring.util.occurrences.BaseOccurrenceManager;
|
||||
import com.intellij.refactoring.util.occurrences.OccurrenceFilter;
|
||||
import com.intellij.refactoring.util.occurrences.OccurrenceManager;
|
||||
import com.intellij.ui.DocumentAdapter;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Function;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.SmartList;
|
||||
import com.intellij.util.*;
|
||||
import com.intellij.util.text.StringSearcher;
|
||||
import gnu.trove.THashMap;
|
||||
import gnu.trove.THashSet;
|
||||
@@ -122,7 +119,8 @@ public class DuplicateStringLiteralInspection extends BaseLocalInspectionTool {
|
||||
}
|
||||
progress.checkCanceled();
|
||||
final Set<PsiFile> files = new THashSet<PsiFile>();
|
||||
searchHelper.processAllFilesWithWordInLiterals(word, scope, new CommonProcessors.CollectProcessor<PsiFile>(files));
|
||||
Processor<PsiFile> processor = Processors.cancelableCollectProcessor(files);
|
||||
searchHelper.processAllFilesWithWordInLiterals(word, scope, processor);
|
||||
if (resultFiles == null) {
|
||||
resultFiles = files;
|
||||
}
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2015 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -40,8 +40,8 @@ import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.impl.search.LowLevelSearchUtil;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.psi.search.PsiSearchHelper;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.text.CharArrayUtil;
|
||||
import com.intellij.util.text.StringSearcher;
|
||||
import gnu.trove.THashSet;
|
||||
@@ -341,7 +341,7 @@ public class DuplicatePropertyInspection extends GlobalSimpleInspectionTool {
|
||||
});
|
||||
for (String word : words) {
|
||||
final Set<PsiFile> files = new THashSet<PsiFile>();
|
||||
searchHelper.processAllFilesWithWord(word, scope, new CommonProcessors.CollectProcessor<PsiFile>(files), true);
|
||||
searchHelper.processAllFilesWithWord(word, scope, Processors.cancelableCollectProcessor(files), true);
|
||||
if (resultFiles.isEmpty()) {
|
||||
resultFiles.addAll(files);
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -15,10 +15,7 @@
|
||||
*/
|
||||
package com.intellij.util.xml;
|
||||
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.*;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.lang.annotation.Annotation;
|
||||
@@ -87,7 +84,7 @@ public class JavaMethodSignature {
|
||||
|
||||
public final List<Method> getAllMethods(final Class startFrom) {
|
||||
final List<Method> result = new ArrayList<Method>();
|
||||
processMethods(startFrom, new CommonProcessors.CollectProcessor<Method>(result));
|
||||
processMethods(startFrom, Processors.cancelableCollectProcessor(result));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2014 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -17,6 +17,7 @@ package com.intellij.util.xml;
|
||||
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.ReflectionUtil;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -98,9 +99,10 @@ public class ModelMergerUtil {
|
||||
@NotNull
|
||||
public static <T> List<T> getFilteredImplementations(final T element) {
|
||||
if (element == null) return Collections.emptyList();
|
||||
final CommonProcessors.CollectProcessor<T> processor = new CommonProcessors.CollectProcessor<T>(new ArrayList<T>());
|
||||
List<T> result = new ArrayList<>();
|
||||
Processor<T> processor = Processors.cancelableCollectProcessor(result);
|
||||
new ImplementationProcessor<T>(processor, false).process(element);
|
||||
return (List<T>)processor.getResults();
|
||||
return result;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2013 JetBrains s.r.o.
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -38,7 +38,8 @@ import com.intellij.psi.xml.XmlFile;
|
||||
import com.intellij.psi.xml.XmlTag;
|
||||
import com.intellij.psi.xml.XmlToken;
|
||||
import com.intellij.psi.xml.XmlTokenType;
|
||||
import com.intellij.util.CommonProcessors;
|
||||
import com.intellij.util.Processor;
|
||||
import com.intellij.util.Processors;
|
||||
import com.intellij.util.indexing.FileBasedIndex;
|
||||
import com.intellij.xml.XmlElementDescriptor;
|
||||
import com.intellij.xml.XmlExtension;
|
||||
@@ -120,12 +121,12 @@ public class DefaultXmlTagNameProvider implements XmlTagNameProvider {
|
||||
}
|
||||
}));
|
||||
final FileBasedIndex fbi = FileBasedIndex.getInstance();
|
||||
CommonProcessors.CollectProcessor<String> processor = new CommonProcessors.CollectProcessor<String>();
|
||||
Collection<String> result = new ArrayList<>();
|
||||
Processor<String> processor = Processors.cancelableCollectProcessor(result);
|
||||
fbi.processAllKeys(XmlNamespaceIndex.NAME, processor, tag.getProject());
|
||||
Collection<String> results = processor.getResults();
|
||||
|
||||
final GlobalSearchScope scope = new EverythingGlobalScope();
|
||||
for (final String ns : results) {
|
||||
for (final String ns : result) {
|
||||
if (ns.startsWith("file://")) continue;
|
||||
fbi.processValues(XmlNamespaceIndex.NAME, ns, null, new FileBasedIndex.ValueProcessor<XsdNamespaceBuilder>() {
|
||||
@Override
|
||||
|
||||
Reference in New Issue
Block a user