Skip to content

Commit d96861b

Browse files
committed
add return method
1 parent 5a99cff commit d96861b

File tree

7 files changed

+162
-177
lines changed

7 files changed

+162
-177
lines changed
Lines changed: 17 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,53 +1,45 @@
11
package com.hsjfans.github.model;
22

33
import com.google.common.collect.Maps;
4+
import com.google.common.collect.Sets;
5+
import lombok.Data;
46
import org.springframework.stereotype.Controller;
57
import org.springframework.web.bind.annotation.PatchMapping;
68
import org.springframework.web.bind.annotation.RequestMapping;
79
import org.springframework.web.bind.annotation.RequestMethod;
810

911
import java.io.Serializable;
12+
import java.util.Collection;
1013
import java.util.Map;
14+
import java.util.Set;
1115
import java.util.concurrent.ConcurrentMap;
1216

1317
/**
1418
* @author hsjfans[hsjfans.scholar@gmail.com]
1519
*/
16-
@Controller
17-
@RequestMapping(value = "/123/",method = {RequestMethod.POST,RequestMethod.GET})
20+
21+
@Data
1822
public class ApiTree implements Serializable {
1923

20-
private static final ConcurrentMap<Class<?>,ControllerClass> controllerClassMap
21-
= Maps.newConcurrentMap();
24+
private final Set<ControllerClass> set
25+
= Sets.newHashSet();
2226

2327
/**
24-
* insert the controller cl
25-
* @param cl
28+
* insert the controller cl
29+
*
30+
* @param controllerClass
2631
*/
27-
@PatchMapping(value ={ "/123","/456"})
28-
public void insert(Class<?> cl,ControllerClass controllerClass){
29-
controllerClassMap.putIfAbsent(cl,controllerClass);
32+
public void insert(ControllerClass controllerClass) {
33+
set.add(controllerClass);
3034
}
3135

3236

33-
/**
34-
* @name 测试get
35-
*/
36-
@RequestMapping(value = "/789")
37-
public void get(){
38-
return;
37+
public void insertAll(Collection<? extends ControllerClass> controllerClasses) {
38+
set.addAll(controllerClasses);
3939
}
4040

4141

42-
/**
43-
* @name 测试set
44-
*/
45-
@RequestMapping("/123-12312")
46-
public void set(){
47-
return;
48-
}
49-
50-
public static ConcurrentMap<Class<?>, ControllerClass> getControllerClassMap() {
51-
return controllerClassMap;
42+
public void union(ApiTree apiTree) {
43+
set.addAll(apiTree.getSet());
5244
}
5345
}

src/main/java/com/hsjfans/github/model/RequestParam.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,5 +68,7 @@ public class RequestParam implements Serializable {
6868
private List<RequestParam> params;
6969

7070

71+
private Object[] enumValues;
72+
7173

7274
}

src/main/java/com/hsjfans/github/model/ResponseReturn.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import lombok.Data;
44

5+
import java.util.List;
6+
57
/**
68
* @author hsjfans[hsjfans.scholar@gmail.com]
79
*/
@@ -11,7 +13,7 @@ public class ResponseReturn {
1113
/**
1214
* the return item
1315
*/
14-
private ReturnItem returnItem;
16+
private List<RequestParam> returnItem;
1517

1618
/**
1719
* the description
@@ -24,6 +26,10 @@ public class ResponseReturn {
2426
*/
2527
private String name;
2628

29+
/**
30+
* the type
31+
*/
32+
private String type;
2733

2834

2935

src/main/java/com/hsjfans/github/model/ReturnItem.java

Lines changed: 0 additions & 29 deletions
This file was deleted.

src/main/java/com/hsjfans/github/parser/AbstractParser.java

Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,12 @@ public abstract class AbstractParser implements Parser {
2323

2424
protected final Config config;
2525

26+
private final ApiTree apiTree;
27+
2628
public AbstractParser(Config config){
2729
this.config = config;
2830
this.classLoader = new ApiClassLoader(config);
31+
this.apiTree = new ApiTree();
2932
}
3033

3134

@@ -43,14 +46,21 @@ public ApiTree parse(String projectPath, boolean recursive) throws ParserExcepti
4346
Set<CompilationUnit> compilationUnits = getAllControllerClass(javaFiles);
4447
Set<ControllerClass> controllerClasses = Sets.newHashSet();
4548
compilationUnits.forEach(compilationUnit -> parseCompilationUnit(compilationUnit,controllerClasses));
46-
return null;
49+
this.apiTree.insertAll(controllerClasses);
50+
return apiTree;
4751
}
4852

4953

5054
@Override
5155
public ApiTree parse(List<String> projectPaths, boolean recursive) throws ParserException {
52-
// todo
53-
return null;
56+
projectPaths.forEach(path->{
57+
try {
58+
this.apiTree.union(this.parse(path,recursive));
59+
} catch (ParserException e) {
60+
e.printStackTrace();
61+
}
62+
});
63+
return this.apiTree;
5464
}
5565

5666

src/main/java/com/hsjfans/github/parser/SpringParser.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22

33

44
import com.github.javaparser.ast.CompilationUnit;
5+
import com.github.javaparser.ast.NodeList;
56
import com.github.javaparser.ast.PackageDeclaration;
67
import com.github.javaparser.ast.body.MethodDeclaration;
8+
import com.github.javaparser.ast.body.Parameter;
79
import com.github.javaparser.ast.body.TypeDeclaration;
810
import com.github.javaparser.ast.expr.AnnotationExpr;
911
import com.google.common.collect.Lists;
@@ -105,22 +107,31 @@ protected void parseCompilationUnit(CompilationUnit compilationUnit,final Set<
105107

106108
LogUtil.info(" className = %s 加载完毕 %s",className,controllerClass);
107109
final List<ControllerMethod> controllerMethods = Lists.newArrayListWithCapacity(cl.getMethods().length);
110+
108111
// just public method
112+
// PostMapping GetMapping ...
109113
Arrays.stream(cl.getMethods())
110114
.filter(method ->
111115
Arrays.stream(method.getAnnotations()).anyMatch(annotation ->
112116
SpringUtil.map.containsKey(annotation.annotationType().getSimpleName())))
113117
.forEach(method -> {
118+
// LogUtil.info(" method signature is %s",methodSignature(method));
119+
// LogUtil.info(" methodDeclarations are %s",typeDeclaration.getMethods().get(0).getSignature().asString());
114120
// LogUtil.info(" methodName is %s annotations len = %s ",method.getName(),method.getAnnotations()[0].annotationType().getSimpleName());
115-
List<MethodDeclaration> methodDeclarations = typeDeclaration.getMethodsByName(method.getName());
116-
// LogUtil.info( " methodDeclarations is %s",methodDeclarations.toString());
121+
List<MethodDeclaration> methodDeclarations = typeDeclaration.getMethodsBySignature(method.getName(),methodSignature(method));
122+
// typeDeclaration.getMethods().forEach(methodDeclaration -> {
123+
// System.out.println(methodDeclaration.getSignature().asString());
124+
// });
125+
LogUtil.info( " methodDeclarations is %s and method is %s ",methodDeclarations.toString(),method.getName());
117126
if(methodDeclarations.size()>0){
118127
ControllerMethod controllerMethod = null;
119128
try {
120-
controllerMethod = ClassUtils.parseMethodComment(methodDeclarations.get(0).getComment().orElse(null),method);
129+
controllerMethod = ClassUtils.parseMethodComment(methodDeclarations.get(0),method);
121130
if(controllerMethod!=null){
122131
controllerMethod.setAClass(cl);
132+
controllerMethod.setMethod(method);
123133
controllerMethods.add(controllerMethod);
134+
LogUtil.info( " methodDeclarations %s 解析完毕",methodDeclarations.toString());
124135
}
125136
} catch (NoSuchMethodException | InvocationTargetException | IllegalAccessException e) {
126137
LogUtil.error(" err = %s ",e.getMessage());
@@ -137,14 +148,12 @@ protected void parseCompilationUnit(CompilationUnit compilationUnit,final Set<
137148

138149
}
139150

140-
private static String methodSignature(Method method){
141-
StringBuilder stringBuilder = new StringBuilder(method.getName());
142-
Arrays.stream(method.getParameters()).forEach(
143-
parameter -> {
144-
stringBuilder.append(parameter.getType().getSimpleName());
145-
}
146-
);
147-
return stringBuilder.toString();
151+
private static String[] methodSignature(Method method){
152+
String[] strings = new String[method.getParameters().length];
153+
for (int i = 0; i < method.getParameters().length; i++) {
154+
strings[i] = method.getParameters()[i].getType().getSimpleName();
155+
}
156+
return strings;
148157
}
149158

150159

0 commit comments

Comments
 (0)