From ae245823067abd258cdd23d99b68bf0fe0c43ca1 Mon Sep 17 00:00:00 2001 From: fengshuonan Date: Mon, 24 Jan 2022 15:20:16 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=907.1.6=E3=80=91=E3=80=90scanner?= =?UTF-8?q?=E3=80=91=E8=B5=84=E6=BA=90=E6=89=AB=E6=8F=8F=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E5=AF=B9=E5=8F=82=E6=95=B0=E5=AD=97=E6=AE=B5=E5=90=8D=E7=9A=84?= =?UTF-8?q?=E8=AF=BB=E5=8F=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../scanner/api/context/MetadataContext.java | 28 +++++++++++++++++++ .../api/pojo/resource/ParameterMetadata.java | 5 ++++ .../api/util/ClassDescriptionUtil.java | 8 ++++-- .../scanner/api/util/MethodReflectUtil.java | 3 ++ .../kernel/scanner/ApiResourceScanner.java | 1 + 5 files changed, 43 insertions(+), 2 deletions(-) diff --git a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/context/MetadataContext.java b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/context/MetadataContext.java index ceab1dfa1..3f42f36df 100644 --- a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/context/MetadataContext.java +++ b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/context/MetadataContext.java @@ -31,6 +31,11 @@ public class MetadataContext { */ public static ConcurrentHashMap META_DATA_PARAM_TYPE_CONTEXT = new ConcurrentHashMap<>(); + /** + * 第一个key是唯一id,第二个key是当前context下处理的参数名称 + */ + public static ConcurrentHashMap 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); } } diff --git a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ParameterMetadata.java b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ParameterMetadata.java index 4f4feafdd..1cefebedd 100644 --- a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ParameterMetadata.java +++ b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/pojo/resource/ParameterMetadata.java @@ -54,4 +54,9 @@ public class ParameterMetadata { */ private Type parameterizedType; + /** + * 参数名,用来记录get请求的参数,例如String userAccount这种参数名userAccount + */ + private String parameterName; + } diff --git a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassDescriptionUtil.java b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassDescriptionUtil.java index e7a17702d..dbbd24361 100644 --- a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassDescriptionUtil.java +++ b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/ClassDescriptionUtil.java @@ -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 diff --git a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/MethodReflectUtil.java b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/MethodReflectUtil.java index 8ca6a109e..882724248 100644 --- a/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/MethodReflectUtil.java +++ b/kernel-d-scanner/scanner-api/src/main/java/cn/stylefeng/roses/kernel/scanner/api/util/MethodReflectUtil.java @@ -190,6 +190,9 @@ public class MethodReflectUtil { // 设置参数是param参数还是request body参数 parameterMetadata.setParamTypeEnum(getParamTypeEnum(annotations)); + // 设置参数名 + parameterMetadata.setParameterName(parameter.getName()); + result.add(parameterMetadata); } diff --git a/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ApiResourceScanner.java b/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ApiResourceScanner.java index 0cabf35e7..f7f074d02 100644 --- a/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ApiResourceScanner.java +++ b/kernel-d-scanner/scanner-sdk-scanner/src/main/java/cn/stylefeng/roses/kernel/scanner/ApiResourceScanner.java @@ -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); }