From eb1f8343994515fa4bf5ec4d2ad75a3070895aab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com> Date: Sun, 30 Nov 2025 14:47:21 +0800 Subject: [PATCH] fix: no index json to java field Exception --- .../plugin/show/java/JsonJumpJava.java | 20 +++++++++++-------- 1 file changed, 12 insertions(+), 8 deletions(-) diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java b/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java index b5893cc..167701c 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/JsonJumpJava.java @@ -2,7 +2,9 @@ package io.github.linwancen.plugin.show.java; import com.intellij.json.psi.JsonProperty; import com.intellij.json.psi.JsonStringLiteral; +import com.intellij.openapi.application.ReadAction; import com.intellij.openapi.progress.ProcessCanceledException; +import com.intellij.openapi.project.DumbService; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.patterns.PlatformPatterns; @@ -59,15 +61,17 @@ public class JsonJumpJava extends PsiReferenceContributor { @NotNull Project project = element.getProject(); @NotNull List psiFields = new ArrayList<>(); @NotNull List tips = new ArrayList<>(); - @NotNull PsiClass[] psiClasses = PsiClassUtils.fileToClasses(virtualFile, project); - @NotNull List jsonPath = jsonPath(jsonProp); - put(project, psiFields, tips, psiClasses, jsonPath, jsonPath.size() - 1); + return DumbService.getInstance(project).runReadActionInSmartMode(() -> ReadAction.compute(() -> { + @NotNull PsiClass[] psiClasses = PsiClassUtils.fileToClasses(virtualFile, project); + @NotNull List jsonPath = jsonPath(jsonProp); + put(project, psiFields, tips, psiClasses, jsonPath, jsonPath.size() - 1); - @NotNull List list = new ArrayList<>(); - for (@NotNull PsiField psiField : psiFields) { - list.add(new JsonRef<>(element, psiField, tips)); - } - return list.toArray(PsiReference.EMPTY_ARRAY); + @NotNull List list = new ArrayList<>(); + for (@NotNull PsiField psiField : psiFields) { + list.add(new JsonRef<>(element, psiField, tips)); + } + return list; + })).toArray(PsiReference.EMPTY_ARRAY); } catch (ProcessCanceledException ignored) { return PsiReference.EMPTY_ARRAY; } catch (Throwable e) {