change error dict

This commit is contained in:
oppofind 2019-12-07 15:37:55 +08:00
parent 3f9ace5ad2
commit 246db12a72
7 changed files with 126 additions and 9 deletions

View File

@ -33,7 +33,7 @@ public class AdocDocBuilder {
builderTemplate.buildAllInOne(apiDocList, config, ALL_IN_ONE_ADOC_TPL, INDEX_DOC);
} else {
builderTemplate.buildApiDoc(apiDocList, config, API_DOC_ADOC_TPL, API_EXTENSION);
builderTemplate.buildErrorCodeDoc(config.getErrorCodes(), config, ERROR_CODE_LIST_ADOC_TPL, ERROR_CODE_LIST_ADOC);
builderTemplate.buildErrorCodeDoc(config, ERROR_CODE_LIST_ADOC_TPL, ERROR_CODE_LIST_ADOC);
}
}

View File

@ -33,7 +33,7 @@ public class ApiDocBuilder {
builderTemplate.buildAllInOne(apiDocList, config, ALL_IN_ONE_MD_TPL, "AllInOne" + version + ".md");
} else {
builderTemplate.buildApiDoc(apiDocList, config, API_DOC_MD_TPL, API_EXTENSION);
builderTemplate.buildErrorCodeDoc(config.getErrorCodes(), config, ERROR_CODE_LIST_MD_TPL, ERROR_CODE_LIST_MD);
builderTemplate.buildErrorCodeDoc(config, ERROR_CODE_LIST_MD_TPL, ERROR_CODE_LIST_MD);
}
}

View File

@ -133,17 +133,18 @@ public class DocBuilderTemplate {
/**
* build error_code adoc
*
* @param errorCodeList list data of Api doc
* @param config api config
* @param template template
* @param outPutFileName output file
*/
public void buildErrorCodeDoc(List<ApiErrorCode> errorCodeList, ApiConfig config, String template, String outPutFileName) {
if (CollectionUtil.isNotEmpty(errorCodeList)) {
Template mapper = BeetlTemplateUtil.getByName(template);
mapper.binding(TemplateVariable.LIST.getVariable(), errorCodeList);
FileUtil.nioWriteFile(mapper.render(), config.getOutPath() + FILE_SEPARATOR + outPutFileName);
public void buildErrorCodeDoc(ApiConfig config, String template, String outPutFileName) {
List<ApiErrorCode> errorCodeList = config.getErrorCodes();
if (CollectionUtil.isEmpty(errorCodeList)) {
errorCodeList = errorCodeDictToList(config);
}
Template mapper = BeetlTemplateUtil.getByName(template);
mapper.binding(TemplateVariable.LIST.getVariable(), errorCodeList);
FileUtil.nioWriteFile(mapper.render(), config.getOutPath() + FILE_SEPARATOR + outPutFileName);
}
/**
@ -221,4 +222,43 @@ public class DocBuilderTemplate {
}
return apiDocDictList;
}
private List<ApiErrorCode> errorCodeDictToList(ApiConfig config) {
List<ApiErrorCodeDictionary> errorCodeDictionaries = config.getErrorCodeDictionaries();
if (CollectionUtil.isEmpty(errorCodeDictionaries)) {
return new ArrayList<>(0);
} else {
List<ApiErrorCode> errorCodeList = new ArrayList<>();
try {
for (ApiErrorCodeDictionary dictionary : errorCodeDictionaries) {
Class<?> clzz = dictionary.getEnumClass();
if (Objects.isNull(clzz)) {
if (StringUtil.isEmpty(dictionary.getEnumClassName())) {
throw new RuntimeException(" enum class name can't be null.");
}
clzz = Class.forName(dictionary.getEnumClassName());
}
if (!clzz.isEnum()) {
throw new RuntimeException(clzz.getCanonicalName() + " is not an enum class.");
}
Object[] objects = clzz.getEnumConstants();
String valueMethodName = "get" + StringUtil.firstToUpperCase(dictionary.getCodeField());
String descMethodName = "get" + StringUtil.firstToUpperCase(dictionary.getDescField());
Method valueMethod = clzz.getMethod(valueMethodName);
Method descMethod = clzz.getMethod(descMethodName);
for (Object object : objects) {
Object val = valueMethod.invoke(object);
Object desc = descMethod.invoke(object);
ApiErrorCode errorCode = new ApiErrorCode();
errorCode.setDesc(String.valueOf(desc));
errorCode.setValue(String.valueOf(val));
errorCodeList.add(errorCode);
}
}
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException | ClassNotFoundException e) {
e.printStackTrace();
}
return errorCodeList;
}
}
}

View File

@ -31,7 +31,7 @@ public class PostmanJsonBuilder {
*
* @param config 配置文件
*/
public static void BuildPostmanApi(ApiConfig config) {
public static void buildPostmanApi(ApiConfig config) {
DocBuilderTemplate builderTemplate = new DocBuilderTemplate();
builderTemplate.checkAndInit(config);
SourceBuilder sourceBuilder = new SourceBuilder(config);

View File

@ -97,6 +97,12 @@ public class ApiConfig {
*/
private List<ApiDataDictionary> dataDictionaries;
/**
* @since 1.7.9
* api error code dictionary
*/
private List<ApiErrorCodeDictionary> errorCodeDictionaries;
/**
* @since 1.7.5
* project name
@ -225,6 +231,14 @@ public class ApiConfig {
this.dataDictionaries = CollectionUtil.asList(dataDictConfigs);
}
public List<ApiErrorCodeDictionary> getErrorCodeDictionaries() {
return errorCodeDictionaries;
}
public void setErrorCodeDictionaries(ApiErrorCodeDictionary... errorCodeDictConfigs) {
this.errorCodeDictionaries = CollectionUtil.asList(errorCodeDictConfigs);
}
public boolean isCoverOld() {
return coverOld;
}

View File

@ -0,0 +1,62 @@
package com.power.doc.model;
/**
* @author yu 2019/12/7.
*/
public class ApiErrorCodeDictionary {
/**
* enumClass
*/
private Class enumClass;
/**
* enum class name
*/
private String enumClassName;
/**
* code field
*/
private String codeField;
/**
* description field
*/
private String descField;
public Class getEnumClass() {
return enumClass;
}
public ApiErrorCodeDictionary setEnumClass(Class enumClass) {
this.enumClass = enumClass;
return this;
}
public String getCodeField() {
return codeField;
}
public ApiErrorCodeDictionary setCodeField(String codeField) {
this.codeField = codeField;
return this;
}
public String getDescField() {
return descField;
}
public ApiErrorCodeDictionary setDescField(String descField) {
this.descField = descField;
return this;
}
public String getEnumClassName() {
return enumClassName;
}
public ApiErrorCodeDictionary setEnumClassName(String enumClassName) {
this.enumClassName = enumClassName;
return this;
}
}

View File

@ -58,6 +58,7 @@ public class ApiDocTest {
CustomRespField.field().setName("code").setValue("00000")
//.setDesc("响应代码")
);*/
config.setErrorCodes();
//非必须只有当setAllInOne设置为true时文档变更记录才生效https://gitee.com/sunyurepository/ApplicationPower/issues/IPS4O
config.setRevisionLogs(