diff --git a/images/src/org/intellij/images/index/ImageInfoIndex.java b/images/src/org/intellij/images/index/ImageInfoIndex.java index 10a008eae8dd..06acab030809 100644 --- a/images/src/org/intellij/images/index/ImageInfoIndex.java +++ b/images/src/org/intellij/images/index/ImageInfoIndex.java @@ -46,16 +46,6 @@ public class ImageInfoIndex extends SingleEntryFileBasedIndexExtension INDEX_ID = ID.create("ImageFileInfoIndex"); - private final FileBasedIndex.InputFilter myInputFilter = new FileBasedIndex.InputFilter() { - @Override - public boolean acceptInput(final VirtualFile file) { - return (file.getFileSystem() == LocalFileSystem.getInstance() || file.getFileSystem() instanceof TempFileSystem) && - file.getFileType() == ImageFileTypeManager.getInstance().getImageFileType() && - (file.getLength() / 1024) < ourMaxImageSize - ; - } - }; - private final DataExternalizer myValueExternalizer = new DataExternalizer() { @Override public void save(final DataOutput out, final ImageInfo info) throws IOException { @@ -102,7 +92,14 @@ public class ImageInfoIndex extends SingleEntryFileBasedIndexExtension { private final FileBasedIndex.InputFilter myInputFilter = new FileBasedIndex.InputFilter() { @Override public boolean acceptInput(final VirtualFile file) { - final FileType fileType = file.getFileType(); - return isIndexable(fileType) && !ProjectCoreUtil.isProjectOrWorkspaceFile(file, fileType); + return isIndexable(file.getFileType()); } }; diff --git a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionIndex.java b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionIndex.java index 4c648d3a3ed9..bc6eba2bba2c 100644 --- a/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionIndex.java +++ b/platform/lang-impl/src/com/intellij/framework/detection/impl/FrameworkDetectionIndex.java @@ -20,7 +20,6 @@ import com.intellij.openapi.Disposable; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.util.Pair; -import com.intellij.openapi.vfs.VirtualFile; import com.intellij.patterns.ElementPattern; import com.intellij.util.EventDispatcher; import com.intellij.util.containers.MultiMap; @@ -37,7 +36,7 @@ import java.util.*; public class FrameworkDetectionIndex extends ScalarIndexExtension { private static final Logger LOG = Logger.getInstance("#com.intellij.framework.detection.impl.FrameworkDetectionIndex"); public static final ID NAME = ID.create("FrameworkDetectionIndex"); - private FileTypesInputFilter myInputFilter; + private final FrameworkDetectorRegistry myRegistry; private final EventDispatcher myDispatcher = EventDispatcher.create(FrameworkDetectionIndexListener.class); @@ -99,14 +98,11 @@ public class FrameworkDetectionIndex extends ScalarIndexExtension { @Override public FileBasedIndex.InputFilter getInputFilter() { - if (myInputFilter == null) { - final Set acceptedTypes = new HashSet(); - for (FrameworkDetector detector : FrameworkDetector.EP_NAME.getExtensions()) { - acceptedTypes.add(detector.getFileType()); - } - myInputFilter = new FileTypesInputFilter(acceptedTypes); + final Set acceptedTypes = new HashSet(); + for (FrameworkDetector detector : FrameworkDetector.EP_NAME.getExtensions()) { + acceptedTypes.add(detector.getFileType()); } - return myInputFilter; + return new DefaultFileTypeSpecificInputFilter(acceptedTypes.toArray(new FileType[acceptedTypes.size()])); } @Override @@ -118,17 +114,4 @@ public class FrameworkDetectionIndex extends ScalarIndexExtension { public int getVersion() { return myRegistry.getDetectorsVersion(); } - - private static class FileTypesInputFilter implements FileBasedIndex.InputFilter { - private final Set myAcceptedTypes; - - public FileTypesInputFilter(Set acceptedTypes) { - myAcceptedTypes = acceptedTypes; - } - - @Override - public boolean acceptInput(VirtualFile file) { - return myAcceptedTypes.contains(file.getFileType()); - } - } } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java index dc8b30258269..7ddbf024b3bf 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/cache/impl/todo/TodoIndex.java @@ -118,10 +118,7 @@ public class TodoIndex extends FileBasedIndexExtension } final FileType fileType = file.getFileType(); - if (ProjectCoreUtil.isProjectOrWorkspaceFile(file, fileType)) { - return false; - } - + if (fileType instanceof LanguageFileType) { final Language lang = ((LanguageFileType)fileType).getLanguage(); final ParserDefinition parserDef = LanguageParserDefinitions.INSTANCE.forLanguage(lang); diff --git a/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeIndex.java b/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeIndex.java index f11d1fc871b8..83df02918a15 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeIndex.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeIndex.java @@ -17,9 +17,11 @@ package com.intellij.psi.impl.include; import com.intellij.openapi.extensions.Extensions; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.vfs.JarFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.util.Consumer; import com.intellij.util.containers.FactoryMap; import com.intellij.util.containers.MultiMap; import com.intellij.util.indexing.*; @@ -160,7 +162,7 @@ public class FileIncludeIndex extends FileBasedIndexExtension fileTypeSink) { + for (FileIncludeProvider provider : myProviders) { + provider.registerFileTypesUsedForIndexing(fileTypeSink); + } + } }; } diff --git a/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeProvider.java b/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeProvider.java index 2161f95fa29f..5c910f7ca6ab 100644 --- a/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeProvider.java +++ b/platform/lang-impl/src/com/intellij/psi/impl/include/FileIncludeProvider.java @@ -17,7 +17,9 @@ package com.intellij.psi.impl.include; import com.intellij.openapi.extensions.ExtensionPointName; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.Consumer; import com.intellij.util.indexing.FileContent; import org.jetbrains.annotations.NotNull; @@ -32,7 +34,9 @@ public abstract class FileIncludeProvider { public abstract String getId(); public abstract boolean acceptFile(VirtualFile file); - + + public abstract void registerFileTypesUsedForIndexing(@NotNull Consumer fileTypeSink); + @NotNull public abstract FileIncludeInfo[] getIncludeInfos(FileContent content); } diff --git a/plugins/ant/src/com/intellij/lang/ant/AntImportsIndex.java b/plugins/ant/src/com/intellij/lang/ant/AntImportsIndex.java index 9b94d9fb34d0..be3dc676245b 100644 --- a/plugins/ant/src/com/intellij/lang/ant/AntImportsIndex.java +++ b/plugins/ant/src/com/intellij/lang/ant/AntImportsIndex.java @@ -15,8 +15,7 @@ */ package com.intellij.lang.ant; -import com.intellij.ide.highlighter.XmlFileType; -import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.util.indexing.*; import com.intellij.util.io.EnumeratorIntegerDescriptor; import com.intellij.util.io.KeyDescriptor; @@ -81,12 +80,6 @@ public class AntImportsIndex extends ScalarIndexExtension{ return map; } }; - private static final FileBasedIndex.InputFilter INPUT_FILTER = new FileBasedIndex.InputFilter() { - @Override - public boolean acceptInput(final VirtualFile file) { - return file.getFileType() instanceof XmlFileType; - } - }; @Override public int getVersion() { @@ -112,7 +105,7 @@ public class AntImportsIndex extends ScalarIndexExtension{ @Override public FileBasedIndex.InputFilter getInputFilter() { - return INPUT_FILTER; + return new DefaultFileTypeSpecificInputFilter(StdFileTypes.XML); } @Override diff --git a/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslFileIndex.java b/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslFileIndex.java index 2eedaf4018dc..b3e0e391e883 100644 --- a/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslFileIndex.java +++ b/plugins/groovy/src/org/jetbrains/plugins/groovy/dsl/GroovyDslFileIndex.java @@ -58,6 +58,7 @@ import com.intellij.util.io.KeyDescriptor; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.plugins.groovy.GroovyFileType; import org.jetbrains.plugins.groovy.annotator.GroovyFrameworkConfigNotification; import org.jetbrains.plugins.groovy.lang.psi.GroovyFile; import org.jetbrains.plugins.groovy.lang.psi.api.statements.blocks.GrClosableBlock; @@ -92,7 +93,6 @@ public class GroovyDslFileIndex extends ScalarIndexExtension { public static final NotificationGroup NOTIFICATION_GROUP = new NotificationGroup("Groovy DSL errors", NotificationDisplayType.BALLOON, true); private final MyDataIndexer myDataIndexer = new MyDataIndexer(); - private final MyInputFilter myInputFilter = new MyInputFilter(); private static final MultiMap>> filesInProcessing = new ConcurrentMultiMap>>(); @@ -144,7 +144,7 @@ public class GroovyDslFileIndex extends ScalarIndexExtension { @Override public FileBasedIndex.InputFilter getInputFilter() { - return myInputFilter; + return new MyInputFilter(); } @Override @@ -511,7 +511,11 @@ public class GroovyDslFileIndex extends ScalarIndexExtension { } } - private static class MyInputFilter implements FileBasedIndex.InputFilter { + private static class MyInputFilter extends DefaultFileTypeSpecificInputFilter { + MyInputFilter() { + super(GroovyFileType.GROOVY_FILE_TYPE); + } + @Override public boolean acceptInput(final VirtualFile file) { return "gdsl".equals(file.getExtension()); diff --git a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxControllerClassIndex.java b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxControllerClassIndex.java index de46e68f5ce4..1caf0a037fb3 100644 --- a/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxControllerClassIndex.java +++ b/plugins/javaFX/src/org/jetbrains/plugins/javaFX/JavaFxControllerClassIndex.java @@ -16,6 +16,7 @@ package org.jetbrains.plugins.javaFX; import com.intellij.openapi.application.ApplicationManager; +import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.project.IndexNotReadyException; import com.intellij.openapi.project.Project; import com.intellij.openapi.util.Computable; @@ -127,7 +128,10 @@ public class JavaFxControllerClassIndex extends ScalarIndexExtension { } } - static class MyInputFilter implements FileBasedIndex.InputFilter { + public static class MyInputFilter extends DefaultFileTypeSpecificInputFilter { + public MyInputFilter() { + super(StdFileTypes.XML); + } @Override public boolean acceptInput(final VirtualFile file) { return JavaFxFileTypeFactory.isFxml(file); diff --git a/plugins/properties/src/com/intellij/lang/properties/xml/XmlPropertiesIndex.java b/plugins/properties/src/com/intellij/lang/properties/xml/XmlPropertiesIndex.java index f36749c9593b..e29af4722802 100644 --- a/plugins/properties/src/com/intellij/lang/properties/xml/XmlPropertiesIndex.java +++ b/plugins/properties/src/com/intellij/lang/properties/xml/XmlPropertiesIndex.java @@ -1,9 +1,11 @@ package com.intellij.lang.properties.xml; import com.intellij.ide.highlighter.XmlFileType; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.util.Comparing; import com.intellij.openapi.util.io.StreamUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.Consumer; import com.intellij.util.indexing.*; import com.intellij.util.io.*; import com.intellij.util.text.CharArrayUtil; @@ -22,7 +24,7 @@ import java.util.Map; * Date: 7/25/11 */ public class XmlPropertiesIndex extends FileBasedIndexExtension - implements FileBasedIndex.InputFilter, DataIndexer, + implements FileBasedIndex.FileTypeSpecificInputFilter, DataIndexer, KeyDescriptor { public final static Key MARKER_KEY = new Key(); @@ -69,7 +71,12 @@ public class XmlPropertiesIndex extends FileBasedIndexExtension fileTypeSink) { + fileTypeSink.consume(XmlFileType.INSTANCE); } @NotNull diff --git a/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormClassIndex.java b/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormClassIndex.java index d3b1a18810a9..18f23044ac0f 100644 --- a/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormClassIndex.java +++ b/plugins/ui-designer/src/com/intellij/uiDesigner/binding/FormClassIndex.java @@ -41,7 +41,6 @@ import java.util.*; public class FormClassIndex extends ScalarIndexExtension { @NonNls public static final ID NAME = ID.create("FormClassIndex"); private final EnumeratorStringDescriptor myKeyDescriptor = new EnumeratorStringDescriptor(); - private final MyInputFilter myInputFilter = new MyInputFilter(); private final MyDataIndexer myDataIndexer = new MyDataIndexer(); @Override @@ -63,7 +62,7 @@ public class FormClassIndex extends ScalarIndexExtension { @Override public FileBasedIndex.InputFilter getInputFilter() { - return myInputFilter; + return new DefaultFileTypeSpecificInputFilter(StdFileTypes.GUI_DESIGNER_FORM); } @Override @@ -94,13 +93,6 @@ public class FormClassIndex extends ScalarIndexExtension { } } - private static class MyInputFilter implements FileBasedIndex.InputFilter { - @Override - public boolean acceptInput(final VirtualFile file) { - return file.getFileType() == StdFileTypes.GUI_DESIGNER_FORM; - } - } - public static List findFormsBoundToClass(Project project, String className) { return findFormsBoundToClass(project, className, ProjectScope.getAllScope(project)); } diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltIncludeProvider.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltIncludeProvider.java index f104316d0c20..7d64ff68db14 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltIncludeProvider.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltIncludeProvider.java @@ -17,9 +17,11 @@ package org.intellij.lang.xpath.xslt.impl; import com.intellij.ide.highlighter.XmlFileType; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.include.FileIncludeInfo; import com.intellij.psi.impl.include.FileIncludeProvider; +import com.intellij.util.Consumer; import com.intellij.util.indexing.FileContent; import com.intellij.util.text.CharArrayUtil; import com.intellij.util.xml.NanoXmlUtil; @@ -41,6 +43,11 @@ public class XsltIncludeProvider extends FileIncludeProvider { return file.getFileType() == XmlFileType.INSTANCE; } + @Override + public void registerFileTypesUsedForIndexing(@NotNull Consumer fileTypeSink) { + fileTypeSink.consume(XmlFileType.INSTANCE); + } + @NotNull public FileIncludeInfo[] getIncludeInfos(FileContent content) { CharSequence contentAsText = content.getContentAsText(); diff --git a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltSymbolIndex.java b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltSymbolIndex.java index fb62ec3f0fcb..769d2c56a585 100644 --- a/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltSymbolIndex.java +++ b/plugins/xpath/xpath-lang/src/org/intellij/lang/xpath/xslt/impl/XsltSymbolIndex.java @@ -144,13 +144,10 @@ public class XsltSymbolIndex extends FileBasedIndexExtension{ public static final ID NAME = ID.create("DomFileIndex"); - private static final FileBasedIndex.InputFilter INPUT_FILTER = new FileBasedIndex.InputFilter() { - @Override - public boolean acceptInput(final VirtualFile file) { - return file.getFileType() == StdFileTypes.XML; - } - }; private final DataIndexer myDataIndexer; public DomFileIndex() { @@ -98,7 +91,7 @@ public class DomFileIndex extends ScalarIndexExtension{ @Override public FileBasedIndex.InputFilter getInputFilter() { - return INPUT_FILTER; + return new DefaultFileTypeSpecificInputFilter(StdFileTypes.XML); } @Override diff --git a/xml/impl/src/com/intellij/html/index/Html5CustomAttributesIndex.java b/xml/impl/src/com/intellij/html/index/Html5CustomAttributesIndex.java index 8669b606c005..b44c50f9ad3f 100644 --- a/xml/impl/src/com/intellij/html/index/Html5CustomAttributesIndex.java +++ b/xml/impl/src/com/intellij/html/index/Html5CustomAttributesIndex.java @@ -21,7 +21,6 @@ import com.intellij.lang.xhtml.XHTMLLanguage; import com.intellij.lexer.HtmlHighlightingLexer; import com.intellij.lexer.Lexer; import com.intellij.lexer.XHtmlHighlightingLexer; -import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.LanguageFileType; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.vfs.LocalFileSystem; @@ -76,18 +75,6 @@ public class Html5CustomAttributesIndex extends ScalarIndexExtension { } }; - private final FileBasedIndex.InputFilter myInputFilter = new FileBasedIndex.InputFilter() { - @Override - public boolean acceptInput(final VirtualFile file) { - if (file.getFileSystem() != LocalFileSystem.getInstance() && !(file.getFileSystem() instanceof TempFileSystem)) { - return false; - } - - final FileType fileType = file.getFileType(); - return fileType == StdFileTypes.HTML || fileType == StdFileTypes.XHTML; - } - }; - @NotNull @Override public ID getName() { @@ -107,7 +94,16 @@ public class Html5CustomAttributesIndex extends ScalarIndexExtension { @Override public FileBasedIndex.InputFilter getInputFilter() { - return myInputFilter; + return new DefaultFileTypeSpecificInputFilter(StdFileTypes.HTML, StdFileTypes.XHTML) { + @Override + public boolean acceptInput(final VirtualFile file) { + if (file.getFileSystem() != LocalFileSystem.getInstance() && !(file.getFileSystem() instanceof TempFileSystem)) { + return false; + } + + return true; + } + }; } @Override diff --git a/xml/impl/src/com/intellij/xml/index/XmlIndex.java b/xml/impl/src/com/intellij/xml/index/XmlIndex.java index dcfbb777c720..0a6792487b5a 100644 --- a/xml/impl/src/com/intellij/xml/index/XmlIndex.java +++ b/xml/impl/src/com/intellij/xml/index/XmlIndex.java @@ -26,6 +26,7 @@ import com.intellij.openapi.roots.ProjectRootManager; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileFilter; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.util.indexing.DefaultFileTypeSpecificInputFilter; import com.intellij.util.indexing.FileBasedIndex; import com.intellij.util.indexing.FileBasedIndexExtension; import com.intellij.util.io.EnumeratorStringDescriptor; @@ -41,15 +42,6 @@ public abstract class XmlIndex extends FileBasedIndexExtension { protected static final EnumeratorStringDescriptor KEY_DESCRIPTOR = new EnumeratorStringDescriptor(); - private static final FileBasedIndex.InputFilter INPUT_FILTER = new FileBasedIndex.InputFilter() { - public boolean acceptInput(final VirtualFile file) { - FileType fileType = file.getFileType(); - final String extension = file.getExtension(); - return XmlFileType.INSTANCE.equals(fileType) && "xsd".equals(extension) || - DTDFileType.INSTANCE.equals(fileType) && "dtd".equals(extension); - } - }; - protected static GlobalSearchScope createFilter(final Project project) { final GlobalSearchScope projectScope = GlobalSearchScope.allScope(project); return new GlobalSearchScope(project) { @@ -108,7 +100,14 @@ public abstract class XmlIndex extends FileBasedIndexExtension { } public FileBasedIndex.InputFilter getInputFilter() { - return INPUT_FILTER; + return new DefaultFileTypeSpecificInputFilter(XmlFileType.INSTANCE, DTDFileType.INSTANCE) { + public boolean acceptInput(final VirtualFile file) { + FileType fileType = file.getFileType(); + final String extension = file.getExtension(); + return XmlFileType.INSTANCE.equals(fileType) && "xsd".equals(extension) || + DTDFileType.INSTANCE.equals(fileType) && "dtd".equals(extension); + } + }; } public boolean dependsOnFileContent() { diff --git a/xml/impl/src/com/intellij/xml/util/XIncludeProvider.java b/xml/impl/src/com/intellij/xml/util/XIncludeProvider.java index 5edaecaffaa3..ad354850cecc 100644 --- a/xml/impl/src/com/intellij/xml/util/XIncludeProvider.java +++ b/xml/impl/src/com/intellij/xml/util/XIncludeProvider.java @@ -17,10 +17,10 @@ package com.intellij.xml.util; import com.intellij.ide.highlighter.XmlFileType; import com.intellij.openapi.fileTypes.FileType; -import com.intellij.openapi.project.ProjectCoreUtil; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.include.FileIncludeInfo; import com.intellij.psi.impl.include.FileIncludeProvider; +import com.intellij.util.Consumer; import com.intellij.util.indexing.FileContent; import com.intellij.util.text.CharArrayUtil; import com.intellij.util.xml.NanoXmlUtil; @@ -40,8 +40,12 @@ public class XIncludeProvider extends FileIncludeProvider { @Override public boolean acceptFile(VirtualFile file) { - final FileType fileType = file.getFileType(); - return fileType == XmlFileType.INSTANCE && !ProjectCoreUtil.isProjectOrWorkspaceFile(file, fileType); + return file.getFileType() == XmlFileType.INSTANCE; + } + + @Override + public void registerFileTypesUsedForIndexing(@NotNull Consumer fileTypeSink) { + fileTypeSink.consume(XmlFileType.INSTANCE); } @NotNull diff --git a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/resolve/RelaxIncludeProvider.java b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/resolve/RelaxIncludeProvider.java index 702626fc1748..0637de1f79d2 100644 --- a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/resolve/RelaxIncludeProvider.java +++ b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/resolve/RelaxIncludeProvider.java @@ -5,6 +5,7 @@ import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.impl.include.FileIncludeInfo; import com.intellij.psi.impl.include.FileIncludeProvider; +import com.intellij.util.Consumer; import com.intellij.util.indexing.FileContent; import com.intellij.util.text.CharArrayUtil; import com.intellij.util.xml.NanoXmlUtil; @@ -35,6 +36,12 @@ public class RelaxIncludeProvider extends FileIncludeProvider { return type == XmlFileType.INSTANCE || type == RncFileType.getInstance(); } + @Override + public void registerFileTypesUsedForIndexing(@NotNull Consumer fileTypeSink) { + fileTypeSink.consume(XmlFileType.INSTANCE); + fileTypeSink.consume(RncFileType.getInstance()); + } + @NotNull @Override public FileIncludeInfo[] getIncludeInfos(FileContent content) { diff --git a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/resolve/RelaxSymbolIndex.java b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/resolve/RelaxSymbolIndex.java index 29ff4e0616f1..eede27a5a2b9 100644 --- a/xml/relaxng/src/org/intellij/plugins/relaxNG/model/resolve/RelaxSymbolIndex.java +++ b/xml/relaxng/src/org/intellij/plugins/relaxNG/model/resolve/RelaxSymbolIndex.java @@ -6,7 +6,6 @@ import com.intellij.navigation.ItemPresentation; import com.intellij.navigation.NavigationItem; import com.intellij.navigation.PsiElementNavigationItem; import com.intellij.openapi.editor.colors.TextAttributesKey; -import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.fileTypes.StdFileTypes; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.JarFileSystem; @@ -72,7 +71,7 @@ public class RelaxSymbolIndex extends ScalarIndexExtension { final HashMap map = new HashMap(); if (inputData.getFileType() == XmlFileType.INSTANCE) { CharSequence inputDataContentAsText = inputData.getContentAsText(); - if (CharArrayUtil.indexOf(inputDataContentAsText, ApplicationLoader.RNG_NAMESPACE, 0) == -1) return Collections.EMPTY_MAP; + if (CharArrayUtil.indexOf(inputDataContentAsText, ApplicationLoader.RNG_NAMESPACE, 0) == -1) return Collections.emptyMap(); NanoXmlUtil.parse(CharArrayUtil.readerFromCharSequence(inputData.getContentAsText()), new NanoXmlUtil.IXMLBuilderAdapter() { NanoXmlUtil.IXMLBuilderAdapter attributeHandler; int depth; @@ -137,14 +136,10 @@ public class RelaxSymbolIndex extends ScalarIndexExtension { @Override public FileBasedIndex.InputFilter getInputFilter() { - return new FileBasedIndex.InputFilter() { + return new DefaultFileTypeSpecificInputFilter(StdFileTypes.XML, RncFileType.getInstance()) { @Override public boolean acceptInput(VirtualFile file) { - if (file.getFileSystem() instanceof JarFileSystem) { - return false; // there is lots and lots of custom XML inside zip files - } - final FileType fileType = file.getFileType(); - return fileType == StdFileTypes.XML || fileType == RncFileType.getInstance(); + return !(file.getFileSystem() instanceof JarFileSystem); } }; } @@ -243,7 +238,7 @@ public class RelaxSymbolIndex extends ScalarIndexExtension { @Override public ItemPresentation getPresentation() { - return myPresentation != null ? this : null; + return this; } @Override