【8.3.0】【scanner】更新class类型判断

pull/62/head
stylefeng 2024-08-05 17:26:08 +08:00
parent f71651111a
commit 33cf0457c9
1 changed files with 10 additions and 4 deletions

View File

@ -3,7 +3,6 @@ package cn.stylefeng.roses.kernel.scanner.api.util;
import cn.hutool.core.util.IdUtil;
import cn.hutool.core.util.StrUtil;
import cn.stylefeng.roses.kernel.rule.enums.FieldTypeEnum;
import cn.stylefeng.roses.kernel.rule.util.ClassTypeUtil;
import cn.stylefeng.roses.kernel.scanner.api.context.MetadataContext;
import cn.stylefeng.roses.kernel.scanner.api.enums.GenericFieldMetadataType;
import cn.stylefeng.roses.kernel.scanner.api.enums.ParamTypeEnum;
@ -49,7 +48,7 @@ public class ClassDescriptionUtil {
}
// 如果是集合类型,判断集合的泛型,集合的泛型是对象的话,就是对象类型,否则就是基本类型
else if (FieldTypeEnum.COLLECTION_WITH_OBJECT.equals(fieldTypeEnum)) {
if (getClassGenObjectFlag(clazz)) {
if (ClassDescriptionUtil.getClassGenObjectFlag(clazz)) {
fieldMetadataItem.setGenericFieldMetadataType(GenericFieldMetadataType.OBJECT_TYPE.getCode());
}
}
@ -73,7 +72,14 @@ public class ClassDescriptionUtil {
*/
public static FieldMetadata createParameterizedMetadata(ParameterizedType parameterizedType, FieldTypeEnum fieldTypeEnum, String uuid) {
Class<?> rawType = (Class<?>) parameterizedType.getRawType();
return createClassMetadata(rawType, fieldTypeEnum, uuid);
FieldMetadata classMetadata = createClassMetadata(rawType, fieldTypeEnum, uuid);
// 设置泛型的类型
boolean classGenObjectFlag = ClassDescriptionUtil.getClassGenObjectFlag(parameterizedType);
if (classGenObjectFlag) {
classMetadata.setGenericFieldMetadataType(GenericFieldMetadataType.OBJECT_TYPE.getCode());
}
return classMetadata;
}
/**
@ -98,7 +104,7 @@ public class ClassDescriptionUtil {
Type[] actualTypeArguments = parameterizedType.getActualTypeArguments();
if (actualTypeArguments.length > 0) {
Type actualTypeArgument = actualTypeArguments[0];
FieldTypeEnum classFieldType = ClassTypeUtil.getClassFieldType(actualTypeArgument);
FieldTypeEnum classFieldType = AdvancedClassTypeUtil.getClassFieldType(actualTypeArgument);
return FieldTypeEnum.OBJECT.equals(classFieldType);
}
}