From 28b089fbd19ec6f696b45a2c1fe896644c8d5d81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=9E=97=E4=B8=87=E7=A8=8B?= <1498425439@qq.com> Date: Fri, 31 Jan 2025 22:07:36 +0800 Subject: [PATCH] fix: tree file to class only xml and json. fixed #57 #23 --- .../linwancen/plugin/show/java/JsonJumpJava.java | 2 +- .../plugin/show/java/doc/OwnerToPsiDocUtils.java | 10 ++++++++-- .../linwancen/plugin/show/java/doc/PsiClassUtils.java | 8 ++++++-- 3 files changed, 15 insertions(+), 5 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 85971dc..b5893cc 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 @@ -59,7 +59,7 @@ public class JsonJumpJava extends PsiReferenceContributor { @NotNull Project project = element.getProject(); @NotNull List psiFields = new ArrayList<>(); @NotNull List tips = new ArrayList<>(); - @NotNull PsiClass[] psiClasses = PsiClassUtils.encClass(virtualFile, project); + @NotNull PsiClass[] psiClasses = PsiClassUtils.fileToClasses(virtualFile, project); @NotNull List jsonPath = jsonPath(jsonProp); put(project, psiFields, tips, psiClasses, jsonPath, jsonPath.size() - 1); diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/OwnerToPsiDocUtils.java b/src/main/idea/io/github/linwancen/plugin/show/java/doc/OwnerToPsiDocUtils.java index 3bfa6f0..7abf834 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/OwnerToPsiDocUtils.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/OwnerToPsiDocUtils.java @@ -1,7 +1,13 @@ package io.github.linwancen.plugin.show.java.doc; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.*; +import com.intellij.psi.PsiClass; +import com.intellij.psi.PsiClassOwner; +import com.intellij.psi.PsiDirectory; +import com.intellij.psi.PsiDocCommentOwner; +import com.intellij.psi.PsiElement; +import com.intellij.psi.PsiFile; +import com.intellij.psi.PsiPackage; import com.intellij.psi.javadoc.PsiDocComment; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -59,7 +65,7 @@ public class OwnerToPsiDocUtils { // for "xxx ClassName.xxx" if (psiClasses.length == 0) { VirtualFile virtualFile = psiFile.getVirtualFile(); - psiClasses = PsiClassUtils.encClass(virtualFile, psiFile.getProject()); + psiClasses = PsiClassUtils.fileToClasses(virtualFile, psiFile.getProject()); } for (@NotNull PsiClass psiClass : psiClasses) { @Nullable PsiDocComment docComment = srcOrByteCodeDoc(psiClass); diff --git a/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiClassUtils.java b/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiClassUtils.java index 56742bc..71d720f 100644 --- a/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiClassUtils.java +++ b/src/main/idea/io/github/linwancen/plugin/show/java/doc/PsiClassUtils.java @@ -20,8 +20,12 @@ public class PsiClassUtils { private static final Pattern JSON_PATTERN = Pattern.compile("[\\w.]*+$"); @NotNull - public static PsiClass[] encClass(@NotNull VirtualFile virtualFile, @NotNull Project project) { + public static PsiClass[] fileToClasses(@NotNull VirtualFile virtualFile, @NotNull Project project) { @NotNull String fileName = virtualFile.getNameWithoutExtension(); + @Nullable String ext = virtualFile.getExtension(); + if (ext == null || (!ext.startsWith("json") && !ext.equals("xml"))) { + return PsiClass.EMPTY_ARRAY; + } @NotNull Matcher matcher = JSON_PATTERN.matcher(fileName); if (!matcher.find()) { return PsiClass.EMPTY_ARRAY; @@ -35,7 +39,7 @@ public class PsiClassUtils { return psiClasses; } // issue #23 - if (virtualFile.getExtension() == null || className.length() != fileName.length()) { + if (className.length() != fileName.length()) { return PsiClass.EMPTY_ARRAY; } @NotNull char[] chars = fileName.toCharArray();