fix #59.
This commit is contained in:
parent
bd134394cf
commit
1a9a64eb03
|
@ -1,12 +1,13 @@
|
|||
## smart-doc版本
|
||||
版本小于1.0都属于试用,正式1.0起始发布将会等到文中提到的问题解决后才发布。
|
||||
#### 版本号:1.9.7
|
||||
- 更新日期: 2020-10-19
|
||||
- 更新日期: 2020-10-24
|
||||
- 更新内容:
|
||||
1. 修复restful接口泛型中使用?时的解析错误。
|
||||
2. 优化rpc html非all in one的问题。
|
||||
3. 对rest query参数自动添加描述,增加可读性。
|
||||
4. support ali dubbo,#I22CF7 .
|
||||
5. support @RequestMapping headers.
|
||||
#### 版本号:1.9.6
|
||||
- 更新日期: 2020-10-09
|
||||
- 更新内容:
|
||||
|
|
2
pom.xml
2
pom.xml
|
@ -5,7 +5,7 @@
|
|||
<modelVersion>4.0.0</modelVersion>
|
||||
<artifactId>smart-doc</artifactId>
|
||||
<packaging>jar</packaging>
|
||||
<version>1.9.6</version>
|
||||
<version>1.9.7</version>
|
||||
|
||||
<name>smart-doc</name>
|
||||
<url>https://github.com/smart-doc-group/smart-doc.git</url>
|
||||
|
|
|
@ -23,19 +23,18 @@
|
|||
package com.power.doc.handler;
|
||||
|
||||
import com.power.common.util.StringUtil;
|
||||
import com.power.doc.constants.DocAnnotationConstants;
|
||||
import com.power.doc.constants.DocTags;
|
||||
import com.power.doc.constants.SpringMvcAnnotations;
|
||||
import com.power.doc.constants.*;
|
||||
import com.power.doc.model.ApiReqHeader;
|
||||
import com.power.doc.utils.DocClassUtil;
|
||||
import com.power.doc.utils.DocUtil;
|
||||
import com.thoughtworks.qdox.model.JavaAnnotation;
|
||||
import com.thoughtworks.qdox.model.JavaMethod;
|
||||
import com.thoughtworks.qdox.model.JavaParameter;
|
||||
import com.thoughtworks.qdox.model.expression.AnnotationValue;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.stream.Collectors;
|
||||
import java.util.stream.Stream;
|
||||
|
||||
/**
|
||||
* @author yu 2019/12/22.
|
||||
|
@ -49,7 +48,42 @@ public class SpringMVCRequestHeaderHandler {
|
|||
* @return list of ApiReqHeader
|
||||
*/
|
||||
public List<ApiReqHeader> handle(JavaMethod method) {
|
||||
List<ApiReqHeader> apiReqHeaders = new ArrayList<>();
|
||||
List<ApiReqHeader> mappingHeaders = new ArrayList<>();
|
||||
List<JavaAnnotation> annotations = method.getAnnotations();
|
||||
for (JavaAnnotation annotation : annotations) {
|
||||
String annotationName = annotation.getType().getName();
|
||||
if (!isMapping(annotationName)) {
|
||||
continue;
|
||||
}
|
||||
Object headersObject = annotation.getNamedParameter("headers");
|
||||
List<String> headers = (LinkedList) headersObject;
|
||||
for (String str : headers) {
|
||||
String header = StringUtil.removeQuotes(str);
|
||||
if (header.startsWith("!")) {
|
||||
continue;
|
||||
}
|
||||
if (header.contains("!=")) {
|
||||
String headerName = header.substring(0, header.indexOf("!"));
|
||||
ApiReqHeader apiReqHeader = ApiReqHeader.builder().setName(headerName)
|
||||
.setRequired(true).setValue(null).setDesc(header).setType("string");
|
||||
mappingHeaders.add(apiReqHeader);
|
||||
} else {
|
||||
String headerName;
|
||||
String headerValue = null;
|
||||
if (header.contains("=")) {
|
||||
int index = header.indexOf("=");
|
||||
headerName = header.substring(0, header.indexOf("="));
|
||||
headerValue = header.substring(index + 1);
|
||||
} else {
|
||||
headerName = header;
|
||||
}
|
||||
ApiReqHeader apiReqHeader = ApiReqHeader.builder().setName(headerName)
|
||||
.setRequired(true).setValue(headerValue).setDesc(header).setType("string");
|
||||
mappingHeaders.add(apiReqHeader);
|
||||
}
|
||||
}
|
||||
}
|
||||
List<ApiReqHeader> reqHeaders = new ArrayList<>();
|
||||
for (JavaParameter javaParameter : method.getParameters()) {
|
||||
List<JavaAnnotation> javaAnnotations = javaParameter.getAnnotations();
|
||||
String className = method.getDeclaringClass().getCanonicalName();
|
||||
|
@ -84,11 +118,27 @@ public class SpringMVCRequestHeaderHandler {
|
|||
}
|
||||
String typeName = javaParameter.getType().getValue().toLowerCase();
|
||||
apiReqHeader.setType(DocClassUtil.processTypeNameForParams(typeName));
|
||||
apiReqHeaders.add(apiReqHeader);
|
||||
reqHeaders.add(apiReqHeader);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
return apiReqHeaders;
|
||||
List<ApiReqHeader> allApiReqHeaders = Stream.of(mappingHeaders, reqHeaders)
|
||||
.flatMap(Collection::stream).distinct().collect(Collectors.toList());
|
||||
return allApiReqHeaders;
|
||||
}
|
||||
|
||||
private boolean isMapping(String annotationName) {
|
||||
switch (annotationName) {
|
||||
case "GetMapping":
|
||||
case "RequestMapping":
|
||||
case "PostMapping":
|
||||
case "PutMapping":
|
||||
case "PatchMapping":
|
||||
case "DeleteMapping":
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -163,7 +163,6 @@ public class SpringBootDocBuildTemplate implements IDocBuildTemplate<ApiDoc> {
|
|||
.handle(projectBuilder.getServerUrl(), baseUrl, method, constantsMap);
|
||||
//handle headers
|
||||
List<ApiReqHeader> apiReqHeaders = new SpringMVCRequestHeaderHandler().handle(method);
|
||||
apiMethodDoc.setRequestHeaders(apiReqHeaders);
|
||||
if (Objects.nonNull(requestMapping)) {
|
||||
if (null != method.getTagByName(IGNORE)) {
|
||||
continue;
|
||||
|
|
Loading…
Reference in New Issue