Skip to content

Commit

Permalink
gudqs7-idea-plugins#135 修复可能是@Length(max = Integer.MAX_VALUE)
Browse files Browse the repository at this point in the history
导致的错误
  • Loading branch information
xianguimin committed Jun 23, 2024
1 parent 08cb394 commit e9f9852
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -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
*/
Expand All @@ -21,4 +29,21 @@ public static Integer parseInt(String value, Integer defaultVal) {
return defaultVal;
}
}

/**
* 通过字符串常量确定值的类型是什么
*
* @param <T>
* @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());
}
}
Original file line number Diff line number Diff line change
@@ -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;

Expand All @@ -13,6 +15,7 @@
import java.lang.reflect.Modifier;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

/**
* 注解工具类
Expand Down Expand Up @@ -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 {
Expand Down

0 comments on commit e9f9852

Please sign in to comment.