diff --git a/src/main/java/com/power/doc/builder/DocBuilderTemplate.java b/src/main/java/com/power/doc/builder/DocBuilderTemplate.java index af8e904..2929b22 100644 --- a/src/main/java/com/power/doc/builder/DocBuilderTemplate.java +++ b/src/main/java/com/power/doc/builder/DocBuilderTemplate.java @@ -209,15 +209,15 @@ public class DocBuilderTemplate { } else { dataDict.setType("int32"); } - dataDict.setDesc(desc.toString()); - dataDict.setValue(val.toString()); + dataDict.setDesc(String.valueOf(desc)); + dataDict.setValue(String.valueOf(val)); dataDictList.add(dataDict); } apiDocDict.setDataDictList(dataDictList); apiDocDictList.add(apiDocDict); } } catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException | ClassNotFoundException e) { - e.fillInStackTrace(); + e.printStackTrace(); } return apiDocDictList; } diff --git a/src/main/java/com/power/doc/builder/SourceBuilder.java b/src/main/java/com/power/doc/builder/SourceBuilder.java index 516a5a8..4fecbfa 100644 --- a/src/main/java/com/power/doc/builder/SourceBuilder.java +++ b/src/main/java/com/power/doc/builder/SourceBuilder.java @@ -446,7 +446,6 @@ public class SourceBuilder { param.setDesc(DocGlobalConstants.ANY_OBJECT_MSG).setVersion(DocGlobalConstants.DEFAULT_VERSION); } else { param.setDesc(DocGlobalConstants.ANY_OBJECT_MSG).setRequired(false).setVersion(DocGlobalConstants.DEFAULT_VERSION); - } paramList.add(param); } else { @@ -523,8 +522,8 @@ public class SourceBuilder { comment = field.getComment(); } if (StringUtil.isNotEmpty(comment)) { - comment = comment.replace("\r\n", "
"); - comment = comment.replace("\n", "
"); + comment = comment.replaceAll("\r\n", "
"); + comment = comment.replaceAll("\n", "
"); } if (DocClassUtil.isPrimitive(subTypeName)) { ApiParam param = ApiParam.of().setField(pre + fieldName); @@ -537,8 +536,36 @@ public class SourceBuilder { } } else { ApiParam param = ApiParam.of().setField(pre + fieldName); + JavaClass javaClass = builder.getClassByName(subTypeName); + String enumComments = javaClass.getComment(); + if(StringUtil.isNotEmpty(enumComments)){ + enumComments = enumComments.replaceAll("\r\n", "
"); + enumComments = enumComments.replaceAll("\r\n", "
"); + comment = comment +"(See: "+ enumComments+")"; + } String processedType = DocClassUtil.processTypeNameForParams(typeSimpleName.toLowerCase()); param.setType(processedType); + if (!isResp && javaClass.isEnum()) { + List methods = javaClass.getMethods(); + int index = 0; + String reTypeName = "object"; + enumOut:for (JavaMethod method : methods) { + JavaType type = method.getReturnType(); + reTypeName = type.getCanonicalName(); + List javaAnnotationList = method.getAnnotations(); + for (JavaAnnotation annotation : javaAnnotationList) { + if (annotation.getType().getSimpleName().contains("JsonValue")) { + break enumOut; + } + } + if (CollectionUtil.isEmpty(javaAnnotations) && index < 1) { + break enumOut; + } + index++; + } + param.setType(DocClassUtil.processTypeNameForParams(reTypeName)); + } + if (StringUtil.isNotEmpty(comment)) { commonHandleParam(paramList, param, isRequired, comment, since, strRequired); } else { @@ -629,7 +656,9 @@ public class SourceBuilder { } else if (simpleName.equals(subTypeName)) { //do nothing } else { - paramList.addAll(buildParams(fieldGicName, preBuilder.toString(), i + 1, isRequired, responseFieldMap, isResp, registryClasses)); + if (isResp && !javaClass.isEnum()) { + paramList.addAll(buildParams(fieldGicName, preBuilder.toString(), i + 1, isRequired, responseFieldMap, isResp, registryClasses)); + } } } } @@ -899,7 +928,38 @@ public class SourceBuilder { } else if (typeName.equals(subTypeName)) { data0.append("{\"$ref\":\"...\"}").append(","); } else { - data0.append(buildJson(subTypeName, fieldGicName, responseFieldMap, isResp, counter + 1, registryClasses)).append(","); + JavaClass javaClass = builder.getClassByName(subTypeName); + if (!isResp && javaClass.isEnum()) { + List methods = javaClass.getMethods(); + int index = 0; + enumOut: + for (JavaMethod method : methods) { + JavaType type = method.getReturnType(); + List javaAnnotations = method.getAnnotations(); + for (JavaAnnotation annotation : javaAnnotations) { + if (annotation.getType().getSimpleName().contains("JsonValue")) { + break enumOut; + } + } + if (CollectionUtil.isEmpty(javaAnnotations) && index < 1) { + break enumOut; + } + index++; + } + List javaFields = javaClass.getEnumConstants(); + Object value = null; + index = 0; + for (JavaField javaField : javaFields) { + String simpleName = javaField.getType().getSimpleName(); + if (!DocClassUtil.isPrimitive(simpleName) && index < 1) { + value = javaField.getEnumConstantArguments().get(0); + } + } + data0.append(value).append(","); + } else { + data0.append(buildJson(subTypeName, fieldGicName, responseFieldMap, isResp, counter + 1, registryClasses)).append(","); + } + } } }