【scanner】更新字段反射渲染名称问题

pull/3/head
fengshuonan 2020-12-21 21:14:13 +08:00
parent f0e49fd03b
commit 1754c21bc8
2 changed files with 33 additions and 16 deletions

View File

@ -14,6 +14,13 @@ import java.util.Set;
@Data @Data
public class FieldMetadata { public class FieldMetadata {
/**
*
* <p>
* uuid
*/
private String metadataId;
/** /**
* *
*/ */

View File

@ -1,6 +1,8 @@
package cn.stylefeng.roses.kernel.resource.api.util; package cn.stylefeng.roses.kernel.resource.api.util;
import cn.hutool.core.util.ClassUtil; import cn.hutool.core.util.ClassUtil;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.TypeUtil;
import cn.stylefeng.roses.kernel.resource.api.annotation.field.ChineseDescription; import cn.stylefeng.roses.kernel.resource.api.annotation.field.ChineseDescription;
import cn.stylefeng.roses.kernel.resource.api.pojo.resource.FieldMetadata; import cn.stylefeng.roses.kernel.resource.api.pojo.resource.FieldMetadata;
import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest; import cn.stylefeng.roses.kernel.rule.pojo.request.BaseRequest;
@ -9,10 +11,7 @@ import java.lang.annotation.Annotation;
import java.lang.reflect.Field; import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException; import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method; import java.lang.reflect.Method;
import java.util.HashMap; import java.util.*;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
/** /**
* *
@ -32,10 +31,10 @@ public class ClassReflectUtil {
*/ */
public static Set<FieldMetadata> getClassFieldDescription(Class<?> clazz) { public static Set<FieldMetadata> getClassFieldDescription(Class<?> clazz) {
HashSet<FieldMetadata> metadataHashSet = new HashSet<>(); HashSet<FieldMetadata> fieldDescriptions = new HashSet<>();
if (clazz == null) { if (clazz == null) {
return metadataHashSet; return fieldDescriptions;
} }
// 获取类中的所有字段 // 获取类中的所有字段
@ -43,19 +42,30 @@ public class ClassReflectUtil {
for (Field declaredField : declaredFields) { for (Field declaredField : declaredFields) {
FieldMetadata fieldMetadata = new FieldMetadata(); FieldMetadata fieldDescription = new FieldMetadata();
// 生成uuid给前端用
fieldDescription.setMetadataId(IdUtil.fastSimpleUUID());
// 获取字段的名称 // 获取字段的名称
String name = declaredField.getName(); String name = declaredField.getName();
fieldMetadata.setFieldName(name); fieldDescription.setFieldName(name);
// 获取字段的类型 // 获取字段的类型
Class<?> declaredFieldType = declaredField.getType(); Class<?> declaredFieldType = declaredField.getType();
fieldMetadata.setFieldClassType(declaredFieldType.getSimpleName()); fieldDescription.setFieldClassType(declaredFieldType.getSimpleName());
// 如果字段类型是Object类型则遍历Object类型里的字段 // 如果字段类型是Object类型则遍历Object类型里的字段
if (BaseRequest.class.isAssignableFrom(declaredFieldType)) { if (BaseRequest.class.isAssignableFrom(declaredFieldType)) {
fieldMetadata.setGenericFieldMetadata(getClassFieldDescription(declaredFieldType)); fieldDescription.setGenericFieldMetadata(getClassFieldDescription(declaredFieldType));
}
// 如果是泛型类型遍历泛泛型的class类型里的字段
if (Collection.class.isAssignableFrom(declaredFieldType)) {
Class<?> genericClass = TypeUtil.getClass(TypeUtil.getTypeArgument(TypeUtil.getType(declaredField)));
if (BaseRequest.class.isAssignableFrom(genericClass)) {
fieldDescription.setGenericFieldMetadata(getClassFieldDescription(genericClass));
}
} }
// 获取字段的所有注解 // 获取字段的所有注解
@ -63,7 +73,7 @@ public class ClassReflectUtil {
if (annotations != null && annotations.length > 0) { if (annotations != null && annotations.length > 0) {
// 设置字段的所有注解 // 设置字段的所有注解
fieldMetadata.setAnnotations(annotationsToStrings(annotations)); fieldDescription.setAnnotations(annotationsToStrings(annotations));
// 遍历字段上的所有注解找到带groups属性的按group分类组装注解 // 遍历字段上的所有注解找到带groups属性的按group分类组装注解
Map<String, Set<String>> groupAnnotations = new HashMap<>(); Map<String, Set<String>> groupAnnotations = new HashMap<>();
@ -76,19 +86,19 @@ public class ClassReflectUtil {
} }
} }
// 设置分组注解 // 设置分组注解
fieldMetadata.setGroupAnnotations(groupAnnotations); fieldDescription.setGroupAnnotations(groupAnnotations);
// 填充字段的中文名称 // 填充字段的中文名称
ChineseDescription chineseDescription = declaredField.getAnnotation(ChineseDescription.class); ChineseDescription chineseDescription = declaredField.getAnnotation(ChineseDescription.class);
if (chineseDescription != null) { if (chineseDescription != null) {
fieldMetadata.setChineseName(chineseDescription.value()); fieldDescription.setChineseName(chineseDescription.value());
} }
} }
metadataHashSet.add(fieldMetadata); fieldDescriptions.add(fieldDescription);
} }
return metadataHashSet; return fieldDescriptions;
} }
/** /**