fix blank in url
This commit is contained in:
parent
cf28ee774c
commit
3a376b61cd
|
@ -123,8 +123,10 @@
|
||||||
#### 版本号:1.7.7
|
#### 版本号:1.7.7
|
||||||
- 更新日期:待定
|
- 更新日期:待定
|
||||||
- 更新内容:
|
- 更新内容:
|
||||||
1. 修改timestamp类型字段创建json示例错误bug
|
1. 修改timestamp类型字段创建json示例错误bug。
|
||||||
|
2. fix #I1545A 单接口多路径bug。
|
||||||
|
3. 修改部分url生成部署空格问题。
|
||||||
|
4. 优化对java.util.concurrent.ConcurrentMap的解析。
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
package com.power.doc.builder;
|
package com.power.doc.builder;
|
||||||
|
|
||||||
import com.power.common.util.DateTimeUtil;
|
import com.power.common.util.DateTimeUtil;
|
||||||
import com.power.common.util.StringUtil;
|
|
||||||
import com.power.doc.model.ApiConfig;
|
import com.power.doc.model.ApiConfig;
|
||||||
import com.power.doc.model.ApiDoc;
|
import com.power.doc.model.ApiDoc;
|
||||||
|
|
||||||
|
|
|
@ -49,7 +49,7 @@ public class HtmlApiDocBuilder {
|
||||||
copyCss(config.getOutPath());
|
copyCss(config.getOutPath());
|
||||||
buildApiDoc(apiDocList, config.getOutPath());
|
buildApiDoc(apiDocList, config.getOutPath());
|
||||||
buildErrorCodeDoc(config.getErrorCodes(), config.getOutPath());
|
buildErrorCodeDoc(config.getErrorCodes(), config.getOutPath());
|
||||||
buildDictionary(apiDocDictList,config.getOutPath());
|
buildDictionary(apiDocDictList, config.getOutPath());
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -79,8 +79,8 @@ public class HtmlApiDocBuilder {
|
||||||
indexTemplate.binding(TemplateVariable.HOME_PAGE.getVariable(), homePage);
|
indexTemplate.binding(TemplateVariable.HOME_PAGE.getVariable(), homePage);
|
||||||
indexTemplate.binding(TemplateVariable.API_DOC_LIST.getVariable(), apiDocList);
|
indexTemplate.binding(TemplateVariable.API_DOC_LIST.getVariable(), apiDocList);
|
||||||
indexTemplate.binding(TemplateVariable.VERSION.getVariable(), now);
|
indexTemplate.binding(TemplateVariable.VERSION.getVariable(), now);
|
||||||
indexTemplate.binding(TemplateVariable.ERROR_CODE_LIST.getVariable(),config.getErrorCodes());
|
indexTemplate.binding(TemplateVariable.ERROR_CODE_LIST.getVariable(), config.getErrorCodes());
|
||||||
indexTemplate.binding(TemplateVariable.DICT_LIST.getVariable(),config.getDataDictionaries());
|
indexTemplate.binding(TemplateVariable.DICT_LIST.getVariable(), config.getDataDictionaries());
|
||||||
if (CollectionUtil.isEmpty(config.getErrorCodes())) {
|
if (CollectionUtil.isEmpty(config.getErrorCodes())) {
|
||||||
indexTemplate.binding(TemplateVariable.DICT_ORDER.getVariable(), apiDocList.size() + 1);
|
indexTemplate.binding(TemplateVariable.DICT_ORDER.getVariable(), apiDocList.size() + 1);
|
||||||
} else {
|
} else {
|
||||||
|
@ -149,11 +149,12 @@ public class HtmlApiDocBuilder {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* build dictionary
|
* build dictionary
|
||||||
|
*
|
||||||
* @param apiDocDictList dictionary list
|
* @param apiDocDictList dictionary list
|
||||||
* @param outPath
|
* @param outPath
|
||||||
*/
|
*/
|
||||||
private static void buildDictionary(List<ApiDocDict> apiDocDictList, String outPath) {
|
private static void buildDictionary(List<ApiDocDict> apiDocDictList, String outPath) {
|
||||||
if(CollectionUtil.isNotEmpty(apiDocDictList)){
|
if (CollectionUtil.isNotEmpty(apiDocDictList)) {
|
||||||
Template template = BeetlTemplateUtil.getByName(DICT_LIST_MD_TPL);
|
Template template = BeetlTemplateUtil.getByName(DICT_LIST_MD_TPL);
|
||||||
template.binding(TemplateVariable.DICT_LIST.getVariable(), apiDocDictList);
|
template.binding(TemplateVariable.DICT_LIST.getVariable(), apiDocDictList);
|
||||||
String dictHtml = MarkDownUtil.toHtml(template.render());
|
String dictHtml = MarkDownUtil.toHtml(template.render());
|
||||||
|
|
|
@ -249,7 +249,7 @@ public class SourceBuilder {
|
||||||
}
|
}
|
||||||
apiReqHeader.setDesc(desc.toString());
|
apiReqHeader.setDesc(desc.toString());
|
||||||
if (requestHeaderMap.get(DocAnnotationConstants.REQUIRED_PROP) != null) {
|
if (requestHeaderMap.get(DocAnnotationConstants.REQUIRED_PROP) != null) {
|
||||||
apiReqHeader.setRequired(!"false".equals(requestHeaderMap.get(DocAnnotationConstants.REQUIRED_PROP)));
|
apiReqHeader.setRequired(!Boolean.FALSE.toString().equals(requestHeaderMap.get(DocAnnotationConstants.REQUIRED_PROP)));
|
||||||
} else {
|
} else {
|
||||||
apiReqHeader.setRequired(true);
|
apiReqHeader.setRequired(true);
|
||||||
}
|
}
|
||||||
|
@ -274,11 +274,10 @@ public class SourceBuilder {
|
||||||
if (urls.length > 1) {
|
if (urls.length > 1) {
|
||||||
url = getUrls(baseUrl, urls);
|
url = getUrls(baseUrl, urls);
|
||||||
} else {
|
} else {
|
||||||
url = this.appUrl + "/" + baseUrl + "/" + url;
|
url = UrlUtil.simplifyUrl(this.appUrl + "/" + baseUrl + "/" + url) ;
|
||||||
}
|
}
|
||||||
|
|
||||||
apiMethodDoc.setType(methodType);
|
apiMethodDoc.setType(methodType);
|
||||||
apiMethodDoc.setUrl(UrlUtil.simplifyUrl(url));
|
apiMethodDoc.setUrl(url);
|
||||||
List<ApiParam> requestParams = requestParams(method, DocTags.PARAM, cls.getCanonicalName());
|
List<ApiParam> requestParams = requestParams(method, DocTags.PARAM, cls.getCanonicalName());
|
||||||
apiMethodDoc.setRequestParams(requestParams);
|
apiMethodDoc.setRequestParams(requestParams);
|
||||||
String requestJson = buildReqJson(method, apiMethodDoc, isPostMethod);
|
String requestJson = buildReqJson(method, apiMethodDoc, isPostMethod);
|
||||||
|
@ -310,7 +309,9 @@ public class SourceBuilder {
|
||||||
private String getUrls(String baseUrl, String[] urls) {
|
private String getUrls(String baseUrl, String[] urls) {
|
||||||
StringBuilder sb = new StringBuilder();
|
StringBuilder sb = new StringBuilder();
|
||||||
for (int i = 0; i < urls.length; i++) {
|
for (int i = 0; i < urls.length; i++) {
|
||||||
sb.append(this.appUrl + "/" + baseUrl + "/" + urls[i].replace("[", "").replace("]", ""));
|
String url = this.appUrl + "/" + baseUrl + "/" + StringUtil.trimBlank(urls[i])
|
||||||
|
.replace("[", "").replace("]", "");
|
||||||
|
sb.append(UrlUtil.simplifyUrl(url));
|
||||||
if (i < urls.length - 1) {
|
if (i < urls.length - 1) {
|
||||||
sb.append(";\t");
|
sb.append(";\t");
|
||||||
}
|
}
|
||||||
|
@ -422,7 +423,7 @@ public class SourceBuilder {
|
||||||
*
|
*
|
||||||
* @param className class name
|
* @param className class name
|
||||||
* @param pre pre
|
* @param pre pre
|
||||||
* @param i counter
|
* @param i Recursive counter
|
||||||
* @param isRequired required flag
|
* @param isRequired required flag
|
||||||
* @param responseFieldMap response map
|
* @param responseFieldMap response map
|
||||||
* @param isResp response flag
|
* @param isResp response flag
|
||||||
|
@ -434,16 +435,17 @@ public class SourceBuilder {
|
||||||
if (StringUtil.isEmpty(className)) {
|
if (StringUtil.isEmpty(className)) {
|
||||||
throw new RuntimeException("Class name can't be null or empty.");
|
throw new RuntimeException("Class name can't be null or empty.");
|
||||||
}
|
}
|
||||||
|
// Check circular reference
|
||||||
List<ApiParam> paramList = new ArrayList<>();
|
List<ApiParam> paramList = new ArrayList<>();
|
||||||
if (registryClasses.containsKey(className) && i > registryClasses.size()) {
|
if (registryClasses.containsKey(className) && i > registryClasses.size()) {
|
||||||
return paramList;
|
return paramList;
|
||||||
}
|
}
|
||||||
|
// Registry class
|
||||||
registryClasses.put(className, className);
|
registryClasses.put(className, className);
|
||||||
String simpleName = DocClassUtil.getSimpleName(className);
|
String simpleName = DocClassUtil.getSimpleName(className);
|
||||||
String[] globGicName = DocClassUtil.getSimpleGicName(className);
|
String[] globGicName = DocClassUtil.getSimpleGicName(className);
|
||||||
JavaClass cls = getJavaClass(simpleName);
|
JavaClass cls = this.getJavaClass(simpleName);
|
||||||
//clsss.isEnum()
|
List<JavaField> fields = this.getFields(cls, 0);
|
||||||
List<JavaField> fields = getFields(cls, 0);
|
|
||||||
int n = 0;
|
int n = 0;
|
||||||
if (DocClassUtil.isPrimitive(simpleName)) {
|
if (DocClassUtil.isPrimitive(simpleName)) {
|
||||||
paramList.addAll(primitiveReturnRespComment(DocClassUtil.processTypeNameForParams(simpleName)));
|
paramList.addAll(primitiveReturnRespComment(DocClassUtil.processTypeNameForParams(simpleName)));
|
||||||
|
@ -507,7 +509,7 @@ public class SourceBuilder {
|
||||||
continue out;
|
continue out;
|
||||||
} else if (DocAnnotationConstants.SHORT_JSON_FIELD.equals(annotationName) && isResp) {
|
} else if (DocAnnotationConstants.SHORT_JSON_FIELD.equals(annotationName) && isResp) {
|
||||||
if (null != annotation.getProperty(DocAnnotationConstants.SERIALIZE_PROP)) {
|
if (null != annotation.getProperty(DocAnnotationConstants.SERIALIZE_PROP)) {
|
||||||
if ("false".equals(annotation.getProperty(DocAnnotationConstants.SERIALIZE_PROP).toString())) {
|
if (Boolean.FALSE.toString().equals(annotation.getProperty(DocAnnotationConstants.SERIALIZE_PROP).toString())) {
|
||||||
continue out;
|
continue out;
|
||||||
}
|
}
|
||||||
} else if (null != annotation.getProperty(DocAnnotationConstants.NAME_PROP)) {
|
} else if (null != annotation.getProperty(DocAnnotationConstants.NAME_PROP)) {
|
||||||
|
@ -598,7 +600,7 @@ public class SourceBuilder {
|
||||||
preBuilder.append("└─");
|
preBuilder.append("└─");
|
||||||
if (DocClassUtil.isMap(subTypeName)) {
|
if (DocClassUtil.isMap(subTypeName)) {
|
||||||
String gNameTemp = field.getType().getGenericCanonicalName();
|
String gNameTemp = field.getType().getGenericCanonicalName();
|
||||||
if (DocGlobalConstants.JAVA_MAP_FULLY.equals(gNameTemp)) {
|
if (DocClassUtil.isMap(gNameTemp)) {
|
||||||
ApiParam param1 = ApiParam.of().setField(preBuilder.toString() + "any object")
|
ApiParam param1 = ApiParam.of().setField(preBuilder.toString() + "any object")
|
||||||
.setType("object").setDesc(DocGlobalConstants.ANY_OBJECT_MSG).setVersion(DocGlobalConstants.DEFAULT_VERSION);
|
.setType("object").setDesc(DocGlobalConstants.ANY_OBJECT_MSG).setVersion(DocGlobalConstants.DEFAULT_VERSION);
|
||||||
paramList.add(param1);
|
paramList.add(param1);
|
||||||
|
@ -717,8 +719,8 @@ public class SourceBuilder {
|
||||||
* @param typeName type name
|
* @param typeName type name
|
||||||
* @param genericCanonicalName genericCanonicalName
|
* @param genericCanonicalName genericCanonicalName
|
||||||
* @param responseFieldMap map of response fields data
|
* @param responseFieldMap map of response fields data
|
||||||
* @param isResp response flag
|
* @param isResp Response flag
|
||||||
* @param counter counter
|
* @param counter Recursive counter
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
private String buildJson(String typeName, String genericCanonicalName, Map<String, CustomRespField> responseFieldMap,
|
private String buildJson(String typeName, String genericCanonicalName, Map<String, CustomRespField> responseFieldMap,
|
||||||
|
@ -822,7 +824,7 @@ public class SourceBuilder {
|
||||||
continue out;
|
continue out;
|
||||||
} else if (DocAnnotationConstants.SHORT_JSON_FIELD.equals(annotationName) && isResp) {
|
} else if (DocAnnotationConstants.SHORT_JSON_FIELD.equals(annotationName) && isResp) {
|
||||||
if (null != annotation.getProperty(DocAnnotationConstants.SERIALIZE_PROP)) {
|
if (null != annotation.getProperty(DocAnnotationConstants.SERIALIZE_PROP)) {
|
||||||
if ("false".equals(annotation.getProperty(DocAnnotationConstants.SERIALIZE_PROP).toString())) {
|
if (Boolean.FALSE.toString().equals(annotation.getProperty(DocAnnotationConstants.SERIALIZE_PROP).toString())) {
|
||||||
continue out;
|
continue out;
|
||||||
}
|
}
|
||||||
} else if (null != annotation.getProperty(DocAnnotationConstants.NAME_PROP)) {
|
} else if (null != annotation.getProperty(DocAnnotationConstants.NAME_PROP)) {
|
||||||
|
@ -894,7 +896,7 @@ public class SourceBuilder {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else if (DocClassUtil.isMap(subTypeName)) {
|
} else if (DocClassUtil.isMap(subTypeName)) {
|
||||||
if (DocGlobalConstants.JAVA_MAP_FULLY.equals(subTypeName)) {
|
if (DocClassUtil.isMap(fieldGicName)) {
|
||||||
data0.append("{").append("\"mapKey\":{}},");
|
data0.append("{").append("\"mapKey\":{}},");
|
||||||
continue out;
|
continue out;
|
||||||
}
|
}
|
||||||
|
|
|
@ -305,6 +305,8 @@ public class DocClassUtil {
|
||||||
return true;
|
return true;
|
||||||
case "java.util.concurrent.ConcurrentHashMap":
|
case "java.util.concurrent.ConcurrentHashMap":
|
||||||
return true;
|
return true;
|
||||||
|
case "java.util.concurrent.ConcurrentMap":
|
||||||
|
return true;
|
||||||
case "java.util.Properties":
|
case "java.util.Properties":
|
||||||
return true;
|
return true;
|
||||||
case "java.util.Hashtable":
|
case "java.util.Hashtable":
|
||||||
|
|
|
@ -5,6 +5,7 @@ import com.power.common.util.DateTimeUtil;
|
||||||
import com.power.common.util.IDCardUtil;
|
import com.power.common.util.IDCardUtil;
|
||||||
import com.power.common.util.RandomUtil;
|
import com.power.common.util.RandomUtil;
|
||||||
import com.power.common.util.StringUtil;
|
import com.power.common.util.StringUtil;
|
||||||
|
import com.power.doc.constants.DocAnnotationConstants;
|
||||||
import com.power.doc.constants.DocGlobalConstants;
|
import com.power.doc.constants.DocGlobalConstants;
|
||||||
import com.thoughtworks.qdox.model.DocletTag;
|
import com.thoughtworks.qdox.model.DocletTag;
|
||||||
import com.thoughtworks.qdox.model.JavaAnnotation;
|
import com.thoughtworks.qdox.model.JavaAnnotation;
|
||||||
|
@ -249,10 +250,10 @@ public class DocUtil {
|
||||||
* @return String
|
* @return String
|
||||||
*/
|
*/
|
||||||
public static String handleMappingValue(JavaAnnotation annotation) {
|
public static String handleMappingValue(JavaAnnotation annotation) {
|
||||||
if (null == annotation.getNamedParameter("value")) {
|
if (null == annotation.getNamedParameter(DocAnnotationConstants.VALUE_PROP)) {
|
||||||
return "/";
|
return "/";
|
||||||
} else {
|
} else {
|
||||||
return annotation.getNamedParameter("value").toString();
|
return StringUtil.trimBlank(String.valueOf(annotation.getNamedParameter(DocAnnotationConstants.VALUE_PROP)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue