Merge remote-tracking branch 'origin/master'

This commit is contained in:
Konstantin Bulenkov
2014-10-22 22:04:17 +02:00
4 changed files with 25 additions and 21 deletions
@@ -75,7 +75,7 @@ public class ExtensionPointLocator {
}
final Project project = psiClass.getProject();
final Collection<VirtualFile> candidates = DomService.getInstance().getDomFileCandidates(IdeaPlugin.class, project);
final Collection<VirtualFile> candidates = DomService.getInstance().getDomFileCandidates(IdeaPlugin.class, project, GlobalSearchScope.allScope(project));
GlobalSearchScope scope = GlobalSearchScope.filesScope(project, candidates);
PsiSearchHelper.SERVICE.getInstance(project).processUsagesInNonJavaFiles(name, new PsiNonJavaFileReferenceProcessor() {
@Override
@@ -164,12 +164,19 @@ public class DomServiceImpl extends DomService {
@Override
public Collection<VirtualFile> getDomFileCandidates(Class<? extends DomElement> description, Project project) {
return FileBasedIndex.getInstance().getContainingFiles(DomFileIndex.NAME, description.getName(), GlobalSearchScope.allScope(project));
return getDomFileCandidates(description, project, GlobalSearchScope.allScope(project));
}
@Override
public Collection<VirtualFile> getDomFileCandidates(Class<? extends DomElement> rootElementClass,
Project project,
final GlobalSearchScope scope) {
return FileBasedIndex.getInstance().getContainingFiles(DomFileIndex.NAME, rootElementClass.getName(), scope);
}
@Override
public <T extends DomElement> List<DomFileElement<T>> getFileElements(final Class<T> clazz, final Project project, @Nullable final GlobalSearchScope scope) {
final Collection<VirtualFile> list = scope == null ? getDomFileCandidates(clazz, project) : getDomFileCandidates(clazz, project, scope);
final Collection<VirtualFile> list = getDomFileCandidates(clazz, project, scope != null ? scope : GlobalSearchScope.allScope(project));
final ArrayList<DomFileElement<T>> result = new ArrayList<DomFileElement<T>>(list.size());
for (VirtualFile file : list) {
final PsiFile psiFile = PsiManager.getInstance(project).findFile(file);
@@ -189,5 +196,4 @@ public class DomServiceImpl extends DomService {
public StructureViewBuilder createSimpleStructureViewBuilder(final XmlFile file, final Function<DomElement, StructureViewMode> modeProvider) {
return new DomStructureViewBuilder(file, modeProvider);
}
}
@@ -126,7 +126,8 @@ public class DomFileDescription<T> {
/**
* @return some version. Override and change (e.g. <code>super.getVersion()+1</code>) when after some changes some files stopped being
* described by this description or vice versa, so that the
* {@link com.intellij.util.xml.DomService#getDomFileCandidates(Class, com.intellij.openapi.project.Project)} index is rebuilt correctly.
* {@link com.intellij.util.xml.DomService#getDomFileCandidates(Class, com.intellij.openapi.project.Project, com.intellij.psi.search.GlobalSearchScope)}
* index is rebuilt correctly.
*/
public int getVersion() {
return myRootTagName.hashCode();
@@ -19,12 +19,10 @@ package com.intellij.util.xml;
import com.intellij.ide.structureView.StructureViewBuilder;
import com.intellij.openapi.components.ServiceManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.util.Condition;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.xml.XmlFile;
import com.intellij.util.Function;
import com.intellij.util.containers.ContainerUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -44,24 +42,21 @@ public abstract class DomService {
return ourCachedInstance;
}
/**
* @deprecated use {@link #getDomFileCandidates(Class, com.intellij.openapi.project.Project, com.intellij.psi.search.GlobalSearchScope)} (to remove in IDEA 15)
*/
public abstract Collection<VirtualFile> getDomFileCandidates(Class<? extends DomElement> description, Project project);
/**
* @param rootElementClass class of root (file-level) element in DOM model
* @param project current project
* @param scope search scope
* @param project current project
* @param scope search scope
* @return files containing given root element
*
* @see #getFileElements(Class, com.intellij.openapi.project.Project, com.intellij.psi.search.GlobalSearchScope)
*/
public Collection<VirtualFile> getDomFileCandidates(Class<? extends DomElement> rootElementClass, Project project, final GlobalSearchScope scope) {
return ContainerUtil.findAll(getDomFileCandidates(rootElementClass, project), new Condition<VirtualFile>() {
@Override
public boolean value(final VirtualFile file) {
return scope.contains(file);
}
});
}
public abstract Collection<VirtualFile> getDomFileCandidates(Class<? extends DomElement> description, Project project);
public abstract Collection<VirtualFile> getDomFileCandidates(Class<? extends DomElement> rootElementClass,
Project project,
GlobalSearchScope scope);
/**
* @param rootElementClass class of root (file-level) element in DOM model
@@ -89,5 +84,7 @@ public abstract class DomService {
public enum StructureViewMode {
SHOW, SHOW_CHILDREN, SKIP
}
public abstract StructureViewBuilder createSimpleStructureViewBuilder(final XmlFile file, final Function<DomElement, StructureViewMode> modeProvider);
public abstract StructureViewBuilder createSimpleStructureViewBuilder(final XmlFile file,
final Function<DomElement, StructureViewMode> modeProvider);
}