From e9f98521e17623a095e05bc047aeb8cc8e5aeaa5 Mon Sep 17 00:00:00 2001 From: xianguimin Date: Mon, 24 Jun 2024 01:24:36 +0800 Subject: [PATCH] =?UTF-8?q?#135=20=E4=BF=AE=E5=A4=8D=E5=8F=AF=E8=83=BD?= =?UTF-8?q?=E6=98=AF@Length(max=20=3D=20Integer.MAX=5FVALUE)=20=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E7=9A=84=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../util/structure/BaseTypeParseUtil.java | 25 +++++++++++++++++++ .../util/structure/PsiAnnotationUtil.java | 15 +++++++---- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/src/main/java/cn/gudqs7/plugins/common/util/structure/BaseTypeParseUtil.java b/src/main/java/cn/gudqs7/plugins/common/util/structure/BaseTypeParseUtil.java index 98f1813..2d915b0 100644 --- a/src/main/java/cn/gudqs7/plugins/common/util/structure/BaseTypeParseUtil.java +++ b/src/main/java/cn/gudqs7/plugins/common/util/structure/BaseTypeParseUtil.java @@ -1,5 +1,13 @@ package cn.gudqs7.plugins.common.util.structure; +import com.intellij.openapi.project.Project; +import com.intellij.psi.*; +import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl; +import com.intellij.psi.search.GlobalSearchScope; +import org.jetbrains.annotations.NotNull; + +import java.lang.reflect.Field; + /** * @author wq */ @@ -21,4 +29,21 @@ public static Integer parseInt(String value, Integer defaultVal) { return defaultVal; } } + + /** + * 通过字符串常量确定值的类型是什么 + * + * @param + * @param psiReferenceExpression 字段名称 + * @return + */ + public static Integer parseInt(PsiReferenceExpression psiReferenceExpression) { + Project project = psiReferenceExpression.getProject(); + String clazzName = ((PsiReferenceExpressionImpl) (psiReferenceExpression.getFirstChild()).getReference()).getQualifiedName(); + String fieldName = psiReferenceExpression.getLastChild().getText(); + PsiClass aClass = JavaPsiFacade.getInstance(project).findClass(clazzName, GlobalSearchScope.allScope(project)); + PsiField fieldByName = aClass.findFieldByName(fieldName, false); + PsiExpression initializer = fieldByName.getInitializer(); + return Integer.parseInt( initializer.getText()); + } } diff --git a/src/main/java/cn/gudqs7/plugins/common/util/structure/PsiAnnotationUtil.java b/src/main/java/cn/gudqs7/plugins/common/util/structure/PsiAnnotationUtil.java index 684e1ec..9ba2e62 100644 --- a/src/main/java/cn/gudqs7/plugins/common/util/structure/PsiAnnotationUtil.java +++ b/src/main/java/cn/gudqs7/plugins/common/util/structure/PsiAnnotationUtil.java @@ -1,10 +1,12 @@ package cn.gudqs7.plugins.common.util.structure; import com.intellij.codeInsight.AnnotationUtil; -import com.intellij.psi.JavaPsiFacade; -import com.intellij.psi.PsiAnnotation; -import com.intellij.psi.PsiAnnotationMemberValue; -import com.intellij.psi.PsiReferenceExpression; +import com.intellij.openapi.project.Project; +import com.intellij.psi.*; +import com.intellij.psi.impl.source.tree.java.PsiReferenceExpressionImpl; +import com.intellij.psi.search.FilenameIndex; +import com.intellij.psi.search.GlobalSearchScope; +import com.intellij.psi.util.PsiUtil; import lombok.SneakyThrows; import org.jetbrains.annotations.NotNull; @@ -13,6 +15,7 @@ import java.lang.reflect.Modifier; import java.util.ArrayList; import java.util.List; +import java.util.regex.Pattern; /** * 注解工具类 @@ -131,7 +134,9 @@ private static Object getValueByPsiAnnotationMemberValue(PsiAnnotationMemberValu String prefixWithRequestMethod = "RequestMethod."; if (text.startsWith(prefixWithRequestMethod)) { return text.substring(prefixWithRequestMethod.length()); - } else { + } else if(!Pattern.compile("^-?\\d+(\\.\\d+)?$").matcher(text).matches()){//有可能是自定义的常量 + return BaseTypeParseUtil.parseInt(psiReferenceExpression); + }else { return text; } } else {