mirror of https://gitee.com/stylefeng/roses
【7.1.6】【scanner】资源扫描增加对参数字段名的读取
parent
bc352d374a
commit
ae24582306
|
@ -31,6 +31,11 @@ public class MetadataContext {
|
|||
*/
|
||||
public static ConcurrentHashMap<String, ParamTypeEnum> META_DATA_PARAM_TYPE_CONTEXT = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* 第一个key是唯一id,第二个key是当前context下处理的参数名称
|
||||
*/
|
||||
public static ConcurrentHashMap<String, String> META_DATA_PARAM_NAME_CONTEXT = new ConcurrentHashMap<>();
|
||||
|
||||
/**
|
||||
* 添加对某次解析的类记录
|
||||
*
|
||||
|
@ -114,6 +119,27 @@ public class MetadataContext {
|
|||
return META_DATA_PARAM_TYPE_CONTEXT.get(uuid);
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置本次解析的参数名称
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/1/24 15:09
|
||||
*/
|
||||
public static void addParameterName(String uuid, String paramName) {
|
||||
META_DATA_PARAM_NAME_CONTEXT.put(uuid, paramName);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取本次解析的参数名称
|
||||
*
|
||||
* @author fengshuonan
|
||||
* @date 2022/1/24 15:09
|
||||
*/
|
||||
public static String getParamName(String uuid) {
|
||||
return META_DATA_PARAM_NAME_CONTEXT.get(uuid);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 清空当前解析的记录
|
||||
*
|
||||
|
@ -123,6 +149,7 @@ public class MetadataContext {
|
|||
public static void cleanContext() {
|
||||
META_DATA_CLASS_COUNT_CONTEXT.clear();
|
||||
META_DATA_PARAM_TYPE_CONTEXT.clear();
|
||||
META_DATA_PARAM_NAME_CONTEXT.clear();
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -137,6 +164,7 @@ public class MetadataContext {
|
|||
}
|
||||
META_DATA_CLASS_COUNT_CONTEXT.remove(uuid);
|
||||
META_DATA_PARAM_TYPE_CONTEXT.remove(uuid);
|
||||
META_DATA_PARAM_NAME_CONTEXT.remove(uuid);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -54,4 +54,9 @@ public class ParameterMetadata {
|
|||
*/
|
||||
private Type parameterizedType;
|
||||
|
||||
/**
|
||||
* 参数名,用来记录get请求的参数,例如String userAccount这种参数名userAccount
|
||||
*/
|
||||
private String parameterName;
|
||||
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
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.scanner.api.context.MetadataContext;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.enums.FieldMetadataTypeEnum;
|
||||
import cn.stylefeng.roses.kernel.scanner.api.enums.FieldTypeEnum;
|
||||
|
@ -33,8 +34,11 @@ public class ClassDescriptionUtil {
|
|||
fieldMetadataItem.setFieldClassType(clazz.getSimpleName());
|
||||
// 设置类的全路径
|
||||
fieldMetadataItem.setFieldClassPath(clazz.getName());
|
||||
// 设置对应字段名称,无字段名称则填写类的简称
|
||||
fieldMetadataItem.setFieldName(null);
|
||||
// 根据uuid获取参数的名称
|
||||
String paramName = MetadataContext.getParamName(uuid);
|
||||
if (StrUtil.isNotBlank(paramName)) {
|
||||
fieldMetadataItem.setFieldName(paramName);
|
||||
}
|
||||
// 设置是否带泛型
|
||||
fieldMetadataItem.setGenericFieldMetadataType(FieldMetadataTypeEnum.FIELD.getCode());
|
||||
// 设置字段类型,基本、数组、还是object
|
||||
|
|
|
@ -190,6 +190,9 @@ public class MethodReflectUtil {
|
|||
// 设置参数是param参数还是request body参数
|
||||
parameterMetadata.setParamTypeEnum(getParamTypeEnum(annotations));
|
||||
|
||||
// 设置参数名
|
||||
parameterMetadata.setParameterName(parameter.getName());
|
||||
|
||||
result.add(parameterMetadata);
|
||||
}
|
||||
|
||||
|
|
|
@ -310,6 +310,7 @@ public class ApiResourceScanner implements BeanPostProcessor {
|
|||
String parameterContextUuid = RandomUtil.randomString(32);
|
||||
// 将当前参数的类型加到context中,后边会用到
|
||||
MetadataContext.addParamTypeMetadata(parameterContextUuid, parameterMetadata.getParamTypeEnum());
|
||||
MetadataContext.addParameterName(parameterContextUuid, parameterMetadata.getParameterName());
|
||||
fieldMetadataLinkedHashSet.add(ClassMetadataFactory.beginCreateFieldMetadata(parameterMetadata.getParameterizedType(), parameterContextUuid));
|
||||
MetadataContext.cleanContext(parameterContextUuid);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue