Commit 6bd92839 authored by Dmitry Batkovich's avatar Dmitry Batkovich Committed by intellij-monorepo-bot
Browse files

use FileBasedIndex.getFileData when SingleEntryFileBasedIndexExtension accessing

GitOrigin-RevId: 876666b4ef1397fc905cb258a613c67a2891b41b
parent 2d536b74
Showing with 26 additions and 29 deletions
+26 -29
......@@ -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
......
......@@ -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) {
......
......@@ -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;
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment