diff --git a/platform/indexing-api/src/com/intellij/util/indexing/DefaultFileTypeSpecificInputFilter.java b/platform/indexing-api/src/com/intellij/util/indexing/DefaultFileTypeSpecificInputFilter.java new file mode 100644 index 000000000000..6273968c678f --- /dev/null +++ b/platform/indexing-api/src/com/intellij/util/indexing/DefaultFileTypeSpecificInputFilter.java @@ -0,0 +1,38 @@ +/* + * Copyright 2000-2013 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.fileTypes.FileType; +import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.util.Consumer; +import org.jetbrains.annotations.NotNull; + +public class DefaultFileTypeSpecificInputFilter implements FileBasedIndex.FileTypeSpecificInputFilter { + private FileType[] myFileTypes; + + public DefaultFileTypeSpecificInputFilter(@NotNull FileType... fileTypes) { + myFileTypes = fileTypes; + } + + public void registerFileTypesUsedForIndexing(@NotNull Consumer fileTypeSink) { + for(FileType ft:myFileTypes) fileTypeSink.consume(ft); + } + + @Override + public boolean acceptInput(VirtualFile file) { + return true; + } +} diff --git a/platform/indexing-api/src/com/intellij/util/indexing/FileBasedIndex.java b/platform/indexing-api/src/com/intellij/util/indexing/FileBasedIndex.java index 6851c99c954e..e3751a092bd8 100644 --- a/platform/indexing-api/src/com/intellij/util/indexing/FileBasedIndex.java +++ b/platform/indexing-api/src/com/intellij/util/indexing/FileBasedIndex.java @@ -17,6 +17,7 @@ package com.intellij.util.indexing; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.components.BaseComponent; +import com.intellij.openapi.fileTypes.FileType; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ContentIterator; @@ -24,6 +25,7 @@ import com.intellij.openapi.util.Condition; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.openapi.vfs.VirtualFileWithId; import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.util.Consumer; import com.intellij.util.Processor; import org.jetbrains.annotations.NonNls; import org.jetbrains.annotations.NotNull; @@ -133,7 +135,11 @@ public abstract class FileBasedIndex implements BaseComponent { /** * Author: dmitrylomov */ - public static interface InputFilter { + public interface InputFilter { boolean acceptInput(VirtualFile file); } + + public interface FileTypeSpecificInputFilter extends InputFilter { + void registerFileTypesUsedForIndexing(@NotNull Consumer fileTypeSink); + } }