From ba6ecb921f2afda5e7892637f92448dbed991407 Mon Sep 17 00:00:00 2001 From: cogitarebis Date: Sun, 4 Apr 2021 22:17:25 +0800 Subject: [PATCH] feat(Render RequestParam): fixed unable to render RequetParam - fixed unable to render Reactor Asynchronous Sequence Flux & Mono RequetParam - modified com.power.doc.utils.DocClassUtil#getSimpleGicName input-param name --- .../com/power/doc/helper/JsonBuildHelper.java | 3 +++ .../power/doc/helper/ParamsBuildHelper.java | 5 +++- .../com/power/doc/utils/DocClassUtil.java | 26 +++++++++---------- .../doc/utils/JavaClassValidateUtil.java | 15 +++++++++++ 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/src/main/java/com/power/doc/helper/JsonBuildHelper.java b/src/main/java/com/power/doc/helper/JsonBuildHelper.java index 6d04808..85b82e0 100644 --- a/src/main/java/com/power/doc/helper/JsonBuildHelper.java +++ b/src/main/java/com/power/doc/helper/JsonBuildHelper.java @@ -183,6 +183,9 @@ public class JsonBuildHelper { } else if (DocGlobalConstants.JAVA_OBJECT_FULLY.equals(typeName)) { data.append("{\"object\":\" any object\"},"); // throw new RuntimeException("Please do not return java.lang.Object directly in api interface."); + } else if(JavaClassValidateUtil.isReactor(typeName)) { + data.append(buildJson(globGicName[0], typeName, isResp, nextLevel, registryClasses, builder)); + return data.toString(); } else { boolean requestFieldToUnderline = builder.getApiConfig().isRequestFieldToUnderline(); boolean responseFieldToUnderline = builder.getApiConfig().isResponseFieldToUnderline(); diff --git a/src/main/java/com/power/doc/helper/ParamsBuildHelper.java b/src/main/java/com/power/doc/helper/ParamsBuildHelper.java index e518ed2..8d49153 100644 --- a/src/main/java/com/power/doc/helper/ParamsBuildHelper.java +++ b/src/main/java/com/power/doc/helper/ParamsBuildHelper.java @@ -109,7 +109,10 @@ public class ParamsBuildHelper { param.setDesc(DocGlobalConstants.ANY_OBJECT_MSG).setRequired(false).setVersion(DocGlobalConstants.DEFAULT_VERSION); } paramList.add(param); - } else { + } else if (JavaClassValidateUtil.isReactor(simpleName)) { + paramList.addAll(buildParams(globGicName[0], pre, nextLevel, isRequired, responseFieldMap, isResp, + registryClasses, projectBuilder, groupClasses, pid)); + }else { out: for (DocJavaField docField : fields) { JavaField field = docField.getJavaField(); diff --git a/src/main/java/com/power/doc/utils/DocClassUtil.java b/src/main/java/com/power/doc/utils/DocClassUtil.java index 1ba49cd..1476623 100644 --- a/src/main/java/com/power/doc/utils/DocClassUtil.java +++ b/src/main/java/com/power/doc/utils/DocClassUtil.java @@ -42,24 +42,24 @@ public class DocClassUtil { /** * get class names by generic class name * - * @param returnType generic class name + * @param typeName generic class name * @return array of string */ - public static String[] getSimpleGicName(String returnType) { - if (JavaClassValidateUtil.isCollection(returnType)) { - returnType = returnType + ""; - } else if (JavaClassValidateUtil.isArray(returnType)) { - returnType = returnType.substring(0, returnType.lastIndexOf("[")); - returnType = "java.util.List<" + returnType + ">"; - } else if (JavaClassValidateUtil.isMap(returnType)) { - returnType = returnType + ""; + public static String[] getSimpleGicName(String typeName) { + if (JavaClassValidateUtil.isCollection(typeName)) { + typeName = typeName + ""; + } else if (JavaClassValidateUtil.isArray(typeName)) { + typeName = typeName.substring(0, typeName.lastIndexOf("[")); + typeName = "java.util.List<" + typeName + ">"; + } else if (JavaClassValidateUtil.isMap(typeName)) { + typeName = typeName + ""; } - if (returnType.contains("<")) { - String pre = returnType.substring(0, returnType.indexOf("<")); + if (typeName.contains("<")) { + String pre = typeName.substring(0, typeName.indexOf("<")); if (JavaClassValidateUtil.isMap(pre)) { - return getMapKeyValueType(returnType); + return getMapKeyValueType(typeName); } - String type = returnType.substring(returnType.indexOf("<") + 1, returnType.lastIndexOf(">")); + String type = typeName.substring(typeName.indexOf("<") + 1, typeName.lastIndexOf(">")); if (JavaClassValidateUtil.isCollection(pre)) { return type.split(" "); } diff --git a/src/main/java/com/power/doc/utils/JavaClassValidateUtil.java b/src/main/java/com/power/doc/utils/JavaClassValidateUtil.java index 38e6e8a..a141a82 100644 --- a/src/main/java/com/power/doc/utils/JavaClassValidateUtil.java +++ b/src/main/java/com/power/doc/utils/JavaClassValidateUtil.java @@ -272,4 +272,19 @@ public class JavaClassValidateUtil { return false; } } + + /** + * check reactor param + * @param typeName + * @return + */ + public static boolean isReactor(String typeName) { + switch (typeName) { + case "reactor.core.publisher.Mono": + case "reactor.core.publisher.Flux": + return true; + default: + return false; + } + } }