From 6bd9283987bcb1b5119cee49eb35279d089f941b Mon Sep 17 00:00:00 2001 From: Dmitry Batkovich <dmitry.batkovich@jetbrains.com> Date: Mon, 14 Oct 2019 12:14:51 +0300 Subject: [PATCH] use FileBasedIndex.getFileData when SingleEntryFileBasedIndexExtension accessing GitOrigin-RevId: 876666b4ef1397fc905cb258a613c67a2891b41b --- .../intellij/images/index/ImageInfoIndex.java | 7 +++- .../groovy/lang/psi/util/GrTraitUtil.java | 10 ++--- .../resolve/GroovyTraitMethodsFileIndex.java | 38 ++++++++----------- 3 files changed, 26 insertions(+), 29 deletions(-) diff --git a/images/src/org/intellij/images/index/ImageInfoIndex.java b/images/src/org/intellij/images/index/ImageInfoIndex.java index 3cca85e27748..57077b3237a2 100644 --- a/images/src/org/intellij/images/index/ImageInfoIndex.java +++ b/images/src/org/intellij/images/index/ImageInfoIndex.java @@ -17,6 +17,7 @@ import org.jetbrains.annotations.NotNull; import java.io.DataInput; import java.io.DataOutput; import java.io.IOException; +import java.util.Map; public final class ImageInfoIndex extends SingleEntryFileBasedIndexExtension<ImageInfo> { private static final long ourMaxImageSize = (long)(Registry.get("ide.index.image.max.size").asDouble() * 1024 * 1024); @@ -58,8 +59,10 @@ public final class ImageInfoIndex extends SingleEntryFileBasedIndexExtension<Ima } public static void processValues(VirtualFile virtualFile, FileBasedIndex.ValueProcessor<? super ImageInfo> processor, Project project) { - FileBasedIndex.getInstance().processValues(INDEX_ID, getFileKey(virtualFile), virtualFile, processor, GlobalSearchScope - .fileScope(project, virtualFile)); + Map<Integer, ImageInfo> data = FileBasedIndex.getInstance().getFileData(INDEX_ID, virtualFile, project); + if (!data.isEmpty()) { + processor.process(virtualFile, data.values().iterator().next()); + } } @NotNull diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrTraitUtil.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrTraitUtil.java index 122c032c7bcd..a70a3e1d77ff 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrTraitUtil.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/psi/util/GrTraitUtil.java @@ -217,11 +217,11 @@ public class GrTraitUtil { if (traitFile == null) return; VirtualFile helperFile = traitFile.getParent().findChild(trait.getName() + GroovyTraitFieldsFileIndex.HELPER_SUFFIX); if (helperFile == null) return; - int key = SingleEntryFileBasedIndexExtension.getFileKey(helperFile); - final List<Collection<TraitFieldDescriptor>> values = FileBasedIndex.getInstance().getValues( - GroovyTraitFieldsFileIndex.INDEX_ID, key, trait.getResolveScope() - ); - values.forEach(descriptors -> descriptors.forEach(descriptor -> result.add(createTraitField(descriptor, trait)))); + + Map<Integer, Collection<TraitFieldDescriptor>> data = + FileBasedIndex.getInstance().getFileData(GroovyTraitFieldsFileIndex.INDEX_ID, helperFile, trait.getProject()); + Collection<TraitFieldDescriptor> values = ContainerUtil.getFirstItem(data.values(), Collections.emptyList()); + values.forEach(descriptor -> result.add(createTraitField(descriptor, trait))); } private static GrLightField createTraitField(TraitFieldDescriptor descriptor, PsiClass trait) { diff --git a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyTraitMethodsFileIndex.java b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyTraitMethodsFileIndex.java index 42e3cedff355..a80bc3c82c04 100644 --- a/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyTraitMethodsFileIndex.java +++ b/plugins/groovy/groovy-psi/src/org/jetbrains/plugins/groovy/lang/resolve/GroovyTraitMethodsFileIndex.java @@ -22,6 +22,7 @@ import com.intellij.psi.impl.java.stubs.PsiJavaFileStub; import com.intellij.psi.impl.java.stubs.PsiMethodStub; import com.intellij.psi.impl.java.stubs.impl.PsiJavaFileStubImpl; import com.intellij.psi.stubs.*; +import com.intellij.util.containers.ContainerUtil; import com.intellij.util.indexing.*; import com.intellij.util.indexing.FileBasedIndex.InputFilter; import com.intellij.util.io.DataExternalizer; @@ -32,10 +33,7 @@ import org.jetbrains.org.objectweb.asm.*; import org.jetbrains.plugins.groovy.lang.psi.stubs.index.ByteArraySequenceExternalizer; import java.io.ByteArrayInputStream; -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; +import java.util.*; import static com.intellij.psi.impl.compiled.ClsFileImpl.EMPTY_ATTRIBUTES; import static org.jetbrains.org.objectweb.asm.Opcodes.ACC_STATIC; @@ -176,27 +174,23 @@ public class GroovyTraitMethodsFileIndex extends SingleEntryFileBasedIndexExtens VirtualFile helperFile = traitFile.getParent().findChild(trait.getName() + HELPER_SUFFIX); if (helperFile == null) return Collections.emptyList(); - int key = getFileKey(helperFile); - - List<ByteArraySequence> byteSequences = FileBasedIndex.getInstance().getValues(INDEX_ID, key, trait.getResolveScope()); - if (byteSequences.isEmpty()) return Collections.emptyList(); + Map<Integer, ByteArraySequence> data = FileBasedIndex.getInstance().getFileData(INDEX_ID, helperFile, trait.getProject()); + ByteArraySequence byteSequence = ContainerUtil.getFirstItem(data.values()); SerializationManagerEx manager = SerializationManagerEx.getInstanceEx(); List<PsiMethod> result = new ArrayList<>(); - for (ByteArraySequence byteSequence : byteSequences) { - Stub root; - try { - root = manager.deserialize(new ByteArrayInputStream(byteSequence.getBytes())); - ((PsiJavaFileStubImpl)root).setPsi((PsiJavaFile)psiFile); - } - catch (SerializerNotFoundException e) { - LOG.warn(e); - continue; - } - for (Object childStub : root.getChildrenStubs().get(0).getChildrenStubs()) { - if (childStub instanceof PsiMethodStub) { - result.add(((PsiMethodStub)childStub).getPsi()); - } + Stub root; + try { + root = manager.deserialize(new ByteArrayInputStream(byteSequence.getBytes())); + ((PsiJavaFileStubImpl)root).setPsi((PsiJavaFile)psiFile); + } + catch (SerializerNotFoundException e) { + LOG.warn(e); + return result; + } + for (Object childStub : root.getChildrenStubs().get(0).getChildrenStubs()) { + if (childStub instanceof PsiMethodStub) { + result.add(((PsiMethodStub)childStub).getPsi()); } } return result; -- GitLab