package com.intellij.util.indexing;
import com.intellij.openapi.diagnostic.Logger;
+import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.vfs.VirtualFile;
-import com.intellij.openapi.vfs.VirtualFileManager;
-import com.intellij.util.NotNullFunction;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import java.util.Collections;
-import java.util.HashSet;
import java.util.Set;
/**
* @author peter
*/
-public abstract class IndexableSetContributor implements IndexedRootsProvider {
-
- protected static final Set<VirtualFile> EMPTY_FILE_SET = Collections.emptySet();
- private static final Logger LOG = Logger.getInstance(IndexableSetContributor.class);
+public abstract class IndexableSetContributor {
- @Override
- public final Set<String> getRootsToIndex() {
- return ContainerUtil.map2Set(getAdditionalRootsToIndex(), new NotNullFunction<VirtualFile, String>() {
- @NotNull
- @Override
- public String fun(VirtualFile virtualFile) {
- return virtualFile.getUrl();
- }
- });
- }
+ public static final ExtensionPointName<IndexableSetContributor> EP_NAME = new ExtensionPointName<IndexableSetContributor>("com.intellij.indexedRootsProvider");
+ private static final Logger LOG = Logger.getInstance(IndexableSetContributor.class);
@NotNull
- public static Set<VirtualFile> getProjectRootsToIndex(IndexedRootsProvider provider, Project project) {
- if (provider instanceof IndexableSetContributor) {
- IndexableSetContributor contributor = (IndexableSetContributor)provider;
- Set<VirtualFile> roots = contributor.getAdditionalProjectRootsToIndex(project);
- return filterOutNulls(contributor, "getAdditionalProjectRootsToIndex(Project)", roots);
- }
- return EMPTY_FILE_SET;
+ public static Set<VirtualFile> getProjectRootsToIndex(@NotNull IndexableSetContributor contributor, @NotNull Project project) {
+ Set<VirtualFile> roots = contributor.getAdditionalProjectRootsToIndex(project);
+ return filterOutNulls(contributor, "getAdditionalProjectRootsToIndex(Project)", roots);
}
@NotNull
- public static Set<VirtualFile> getRootsToIndex(IndexedRootsProvider provider) {
- if (provider instanceof IndexableSetContributor) {
- IndexableSetContributor contributor = (IndexableSetContributor)provider;
- Set<VirtualFile> roots = contributor.getAdditionalRootsToIndex();
- return filterOutNulls(contributor, "getAdditionalRootsToIndex()", roots);
- }
-
- final HashSet<VirtualFile> result = new HashSet<VirtualFile>();
- for (String url : provider.getRootsToIndex()) {
- ContainerUtil.addIfNotNull(VirtualFileManager.getInstance().findFileByUrl(url), result);
- }
-
- return result;
+ public static Set<VirtualFile> getRootsToIndex(@NotNull IndexableSetContributor contributor) {
+ Set<VirtualFile> roots = contributor.getAdditionalRootsToIndex();
+ return filterOutNulls(contributor, "getAdditionalRootsToIndex()", roots);
}
/**
*/
@NotNull
public Set<VirtualFile> getAdditionalProjectRootsToIndex(@NotNull Project project) {
- return EMPTY_FILE_SET;
+ return Collections.emptySet();
}
/**
+++ /dev/null
-/*
- * Copyright 2000-2015 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.indexing;
-
-import com.intellij.openapi.extensions.ExtensionPointName;
-
-import java.util.Set;
-
-/**
- * @deprecated extend {@link com.intellij.util.indexing.IndexableSetContributor} instead
- * @author Dmitry Avdeev
- */
-public interface IndexedRootsProvider {
-
- ExtensionPointName<IndexedRootsProvider> EP_NAME = new ExtensionPointName<IndexedRootsProvider>("com.intellij.indexedRootsProvider");
-
- /**
- * @deprecated
- * @return each string is VFS url {@link com.intellij.openapi.vfs.VirtualFile#getUrl()} of the root to index. Cannot depend on project.
- */
- Set<String> getRootsToIndex();
-}
private final Project myProject;
private volatile Set<VirtualFile> cachedFiles;
private volatile Set<VirtualFile> cachedDirectories;
- private volatile IndexedRootsProvider[] myExtensions;
+ private volatile IndexableSetContributor[] myExtensions;
- public AdditionalIndexableFileSet(Project project, IndexedRootsProvider... extensions) {
+ public AdditionalIndexableFileSet(Project project, IndexableSetContributor... extensions) {
myProject = project;
myExtensions = extensions;
}
myProject = project;
}
- public AdditionalIndexableFileSet(IndexedRootsProvider... extensions) {
+ public AdditionalIndexableFileSet(IndexableSetContributor... extensions) {
myProject = null;
myExtensions = extensions;
}
THashSet<VirtualFile> files = new THashSet<VirtualFile>();
THashSet<VirtualFile> directories = new THashSet<VirtualFile>();
if (myExtensions == null) {
- myExtensions = Extensions.getExtensions(IndexedRootsProvider.EP_NAME);
+ myExtensions = Extensions.getExtensions(IndexableSetContributor.EP_NAME);
}
- for (IndexedRootsProvider provider : myExtensions) {
- for (VirtualFile root : IndexableSetContributor.getRootsToIndex(provider)) {
+ for (IndexableSetContributor contributor : myExtensions) {
+ for (VirtualFile root : IndexableSetContributor.getRootsToIndex(contributor)) {
(root.isDirectory() ? directories : files).add(root);
}
if (myProject != null) {
- Set<VirtualFile> projectRoots = IndexableSetContributor.getProjectRootsToIndex(provider, myProject);
+ Set<VirtualFile> projectRoots = IndexableSetContributor.getProjectRootsToIndex(contributor, myProject);
for (VirtualFile root : projectRoots) {
(root.isDirectory() ? directories : files).add(root);
}
this(baseScope, new AdditionalIndexableFileSet());
}
- public AdditionalIndexedRootsScope(GlobalSearchScope baseScope, Class<? extends IndexedRootsProvider> providerClass) {
+ public AdditionalIndexedRootsScope(GlobalSearchScope baseScope, Class<? extends IndexableSetContributor> providerClass) {
this(baseScope, new AdditionalIndexableFileSet(IndexableSetContributor.EP_NAME.findExtension(providerClass)));
}
}*/
final Set<VirtualFile> visitedRoots = ContainerUtil.newConcurrentSet();
- for (IndexedRootsProvider provider : Extensions.getExtensions(IndexedRootsProvider.EP_NAME)) {
+ for (IndexableSetContributor contributor : Extensions.getExtensions(IndexableSetContributor.EP_NAME)) {
//important not to depend on project here, to support per-project background reindex
// each client gives a project to FileBasedIndex
if (project.isDisposed()) {
return tasks;
}
- for (final VirtualFile root : IndexableSetContributor.getRootsToIndex(provider)) {
+ for (final VirtualFile root : IndexableSetContributor.getRootsToIndex(contributor)) {
if (visitedRoots.add(root)) {
tasks.add(new Runnable() {
@Override
});
}
}
- for (final VirtualFile root : IndexableSetContributor.getProjectRootsToIndex(provider, project)) {
+ for (final VirtualFile root : IndexableSetContributor.getProjectRootsToIndex(contributor, project)) {
if (visitedRoots.add(root)) {
tasks.add(new Runnable() {
@Override
<!-- File-Based Index-->
<extensionPoint name="fileBasedIndex" interface="com.intellij.util.indexing.FileBasedIndexExtension"/>
<extensionPoint name="stubIndex" interface="com.intellij.psi.stubs.StubIndexExtension"/>
- <extensionPoint name="indexedRootsProvider" interface="com.intellij.util.indexing.IndexedRootsProvider"/>
+ <extensionPoint name="indexedRootsProvider" interface="com.intellij.util.indexing.IndexableSetContributor"/>
<extensionPoint name="include.provider" interface="com.intellij.psi.impl.include.FileIncludeProvider"/>
<extensionPoint name="refactoring.copyHandler" interface="com.intellij.refactoring.copy.CopyHandlerDelegate"/>
import com.intellij.psi.impl.source.tree.injected.InjectedLanguageManagerImpl;
import com.intellij.util.*;
import com.intellij.util.indexing.IndexableSetContributor;
-import com.intellij.util.indexing.IndexedRootsProvider;
import com.intellij.util.lang.CompoundRuntimeException;
import com.intellij.util.ui.UIUtil;
import junit.framework.TestCase;
Set<VirtualFile> survivors = new HashSet<VirtualFile>();
- for (IndexedRootsProvider provider : IndexedRootsProvider.EP_NAME.getExtensions()) {
- for (VirtualFile file : IndexableSetContributor.getRootsToIndex(provider)) {
+ for (IndexableSetContributor contributor : IndexableSetContributor.EP_NAME.getExtensions()) {
+ for (VirtualFile file : IndexableSetContributor.getRootsToIndex(contributor)) {
registerSurvivor(survivors, file);
}
}