Skip to content

Commit 43d62ca

Browse files
committed
批量导出接口
1 parent 8328a61 commit 43d62ca

File tree

3 files changed

+79
-17
lines changed

3 files changed

+79
-17
lines changed

apidoc-core/src/main/java/com/ztianzeng/apidoc/Reader.java

Lines changed: 33 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ public OpenAPI read(Class<?> cls) {
8484
BeanDescription beanDesc = mapper.getSerializationConfig().introspect(targetType);
8585

8686

87-
8887
// 处理方法
8988
for (JavaMethod method : classByName.getMethods()) {
9089
boolean isRquestMapping = false;
@@ -139,6 +138,39 @@ public OpenAPI read(Class<?> cls) {
139138
}
140139

141140

141+
public OpenAPI read(Set<Class<?>> classes) {
142+
Set<Class<?>> sortedClasses = new TreeSet<>(new Comparator<Class<?>>() {
143+
@Override
144+
public int compare(Class<?> class1, Class<?> class2) {
145+
if (class1.equals(class2)) {
146+
return 0;
147+
} else if (class1.isAssignableFrom(class2)) {
148+
return -1;
149+
} else if (class2.isAssignableFrom(class1)) {
150+
return 1;
151+
}
152+
return class1.getName().compareTo(class2.getName());
153+
}
154+
});
155+
sortedClasses.addAll(classes);
156+
157+
158+
for (Class<?> aClass : sortedClasses) {
159+
OpenAPI read = read(aClass);
160+
161+
paths.putAll(read.getPaths());
162+
if (components.getSchemas() == null) {
163+
components.setSchemas(new HashMap<>(20));
164+
}
165+
components.getSchemas().putAll(read.getComponents().getSchemas());
166+
167+
}
168+
169+
170+
return openAPI;
171+
}
172+
173+
142174
protected String getOperationId(String operationId) {
143175
boolean operationIdUsed = existOperationId(operationId);
144176
String operationIdToFind = null;

apidoc-core/src/main/java/com/ztianzeng/apidoc/SourceBuilder.java

Lines changed: 34 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,17 @@
11
package com.ztianzeng.apidoc;
22

3-
import com.fasterxml.jackson.annotation.JsonInclude;
4-
import com.fasterxml.jackson.databind.DeserializationFeature;
5-
import com.fasterxml.jackson.databind.ObjectMapper;
6-
import com.fasterxml.jackson.databind.SerializationFeature;
3+
import com.fasterxml.jackson.databind.type.TypeFactory;
74
import com.thoughtworks.qdox.JavaProjectBuilder;
8-
import com.thoughtworks.qdox.model.*;
9-
import com.ztianzeng.apidoc.constants.RequestMethod;
5+
import com.thoughtworks.qdox.model.JavaAnnotation;
6+
import com.thoughtworks.qdox.model.JavaClass;
107
import com.ztianzeng.apidoc.utils.DocUtils;
11-
import org.apache.commons.lang3.StringUtils;
128

139
import java.io.File;
14-
import java.util.Collection;
15-
import java.util.HashMap;
16-
import java.util.List;
17-
import java.util.Map;
10+
import java.lang.reflect.Type;
11+
import java.util.*;
1812

19-
import static com.ztianzeng.apidoc.constants.GlobalConstants.IGNORE_TAG;
20-
import static com.ztianzeng.apidoc.constants.SpringMvcConstants.*;
21-
import static com.ztianzeng.apidoc.utils.DocUtils.getRequestMappingMethod;
22-
import static com.ztianzeng.apidoc.utils.DocUtils.isRequestMapping;
13+
import static com.ztianzeng.apidoc.constants.SpringMvcConstants.CONTROLLER_FULLY;
14+
import static com.ztianzeng.apidoc.constants.SpringMvcConstants.REST_CONTROLLER_FULLY;
2315

2416
/**
2517
* 核心处理器
@@ -57,7 +49,34 @@ private void loadJavaFiles(String uri) {
5749
}
5850
}
5951

52+
public Set<Class<?>> getControllerData() throws ClassNotFoundException {
53+
Set<Class<?>> apiMethodDocs = new HashSet<>();
54+
for (JavaClass javaClass : javaClasses) {
55+
if (isController(javaClass)) {
56+
apiMethodDocs.add(TypeFactory.defaultInstance().findClass(javaClass.getBinaryName()));
57+
}
58+
}
59+
return apiMethodDocs;
60+
}
6061

62+
/**
63+
* 检测controller上的注解
64+
*
65+
* @param cls
66+
* @return
67+
*/
68+
private boolean isController(JavaClass cls) {
69+
List<JavaAnnotation> classAnnotations = cls.getAnnotations();
70+
for (JavaAnnotation annotation : classAnnotations) {
71+
String annotationName = annotation.getType().getName();
72+
if ("Controller".equals(annotationName) || "RestController".equals(annotationName)
73+
|| REST_CONTROLLER_FULLY.equals(annotationName)
74+
|| CONTROLLER_FULLY.equals(annotationName)) {
75+
return true;
76+
}
77+
}
78+
return false;
79+
}
6180

6281
public JavaProjectBuilder getBuilder() {
6382
return builder;

pom.xml

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,5 +58,16 @@
5858
<scope>test</scope>
5959
</dependency>
6060
</dependencies>
61-
61+
<distributionManagement>
62+
<repository>
63+
<id>nexus-releases</id>
64+
<name>CNABC Release Maven Repository Group</name>
65+
<url>http://nexus.cnabc-inc.com/content/repositories/share_releases</url>
66+
</repository>
67+
<snapshotRepository>
68+
<id>nexus-snapshots</id>
69+
<name>CNABC Snapshot Maven Repository Group</name>
70+
<url>http://nexus.cnabc-inc.com/content/repositories/share_snapshots/</url>
71+
</snapshotRepository>
72+
</distributionManagement>
6273
</project>

0 commit comments

Comments
 (0)