Skip to content

Commit 5b725a9

Browse files
author
王哲
committed
提取apigcc-springmvc;生成Postman.json文件
1 parent 044c103 commit 5b725a9

File tree

96 files changed

+5096
-710
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

96 files changed

+5096
-710
lines changed

apigcc-core/build.gradle

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
dependencies {
2+
compile 'com.github.javaparser:javaparser-symbol-solver-core:3.14.4'
3+
compile 'com.fasterxml.jackson.core:jackson-databind:2.5.2'
4+
compile 'org.asciidoctor:asciidoctorj:2.1.0'
5+
}

src/main/java/com/apigcc/Apigcc.java apigcc-core/src/main/java/com/apigcc/core/Apigcc.java

+45-10
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
package com.apigcc;
1+
package com.apigcc.core;
22

3-
import com.apigcc.parser.VisitorParser;
4-
import com.apigcc.render.ProjectRender;
5-
import com.apigcc.schema.Project;
6-
import com.apigcc.spring.SpringParserStrategy;
3+
import com.apigcc.core.common.helper.StringHelper;
4+
import com.apigcc.core.parser.ParserStrategy;
5+
import com.apigcc.core.parser.VisitorParser;
6+
import com.apigcc.core.render.ProjectRender;
7+
import com.apigcc.core.resolver.TypeResolvers;
8+
import com.apigcc.core.schema.Project;
79
import com.github.javaparser.ParseResult;
810
import com.github.javaparser.ParserConfiguration;
911
import com.github.javaparser.ast.CompilationUnit;
@@ -13,10 +15,15 @@
1315
import com.github.javaparser.symbolsolver.resolution.typesolvers.JavaParserTypeSolver;
1416
import com.github.javaparser.symbolsolver.resolution.typesolvers.ReflectionTypeSolver;
1517
import com.github.javaparser.utils.SourceRoot;
18+
import com.google.common.collect.Lists;
19+
import lombok.Getter;
1620
import lombok.extern.slf4j.Slf4j;
1721

1822
import java.io.IOException;
1923
import java.nio.file.Path;
24+
import java.util.List;
25+
import java.util.Objects;
26+
import java.util.ServiceLoader;
2027

2128
@Slf4j
2229
public class Apigcc {
@@ -27,12 +34,17 @@ public static Apigcc getInstance(){
2734
return INSTANCE;
2835
}
2936

37+
@Getter
3038
private Context context;
39+
@Getter
3140
private Project project = new Project();
3241

3342
private VisitorParser visitorParser = new VisitorParser();
3443
private ParserConfiguration parserConfiguration;
3544

45+
@Getter
46+
private TypeResolvers typeResolvers = new TypeResolvers();
47+
3648
private Apigcc(){
3749
init(new Context());
3850
}
@@ -52,7 +64,6 @@ private void init(Context context){
5264
project.setName(context.getName());
5365
project.setDescription(context.getDescription());
5466
project.setVersion(context.getVersion());
55-
visitorParser.setParserStrategy(new SpringParserStrategy());
5667

5768
CombinedTypeSolver typeSolver = new CombinedTypeSolver();
5869
for (Path dependency : context.getDependencies()) {
@@ -65,10 +76,37 @@ private void init(Context context){
6576
log.warn("exception on {} {}", jar, e.getMessage());
6677
}
6778
}
68-
typeSolver.add(new ReflectionTypeSolver(false));
79+
typeSolver.add(new ReflectionTypeSolver());
6980

7081
parserConfiguration = new ParserConfiguration();
7182
parserConfiguration.setSymbolResolver(new JavaSymbolSolver(typeSolver));
83+
84+
ParserStrategy strategy = loadParserStrategy();
85+
strategy.onLoad();
86+
visitorParser.setParserStrategy(strategy);
87+
88+
}
89+
90+
/**
91+
* 加载并设置解析框架
92+
* null时,使用读取到的第一个框架解析器
93+
* 找不到时,报错
94+
*/
95+
private ParserStrategy loadParserStrategy(){
96+
ServiceLoader<ParserStrategy> serviceLoader = ServiceLoader.load(ParserStrategy.class);
97+
List<ParserStrategy> strategies = Lists.newArrayList(serviceLoader);
98+
if(strategies.isEmpty()){
99+
throw new IllegalArgumentException("no com.apigcc.core.parser.ParserStrategy implements found");
100+
}
101+
if(StringHelper.isBlank(context.framework)){
102+
return strategies.get(0);
103+
}
104+
for (ParserStrategy strategy : strategies) {
105+
if(Objects.equals(context.framework,strategy.name())){
106+
return strategy;
107+
}
108+
}
109+
throw new IllegalArgumentException("no com.apigcc.core.parser.ParserStrategy implements found for "+context.framework);
72110
}
73111

74112
/**
@@ -100,7 +138,4 @@ public void render(){
100138
}
101139
}
102140

103-
public Context getContext() {
104-
return context;
105-
}
106141
}

src/main/java/com/apigcc/Context.java apigcc-core/src/main/java/com/apigcc/core/Context.java

+14-6
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
package com.apigcc;
1+
package com.apigcc.core;
22

3-
import com.apigcc.common.helper.FileHelper;
4-
import com.apigcc.render.AsciidocHtmlRender;
5-
import com.apigcc.render.AsciidocRender;
6-
import com.apigcc.render.ProjectRender;
3+
import com.apigcc.core.common.helper.FileHelper;
4+
import com.apigcc.core.render.AsciidocRender;
5+
import com.apigcc.core.render.PostmanRender;
6+
import com.apigcc.core.render.ProjectRender;
77
import com.google.common.collect.Lists;
88
import lombok.Getter;
99
import lombok.Setter;
@@ -20,8 +20,16 @@ public class Context {
2020
public static final String DEFAULT_BUILD_PATH = "build";
2121
public static final String DEFAULT_CODE_STRUCTURE = "src/main/java";
2222

23+
/**
24+
* 设置当前解析框架
25+
*/
26+
@Setter
27+
public String framework;
28+
2329
@Setter
24-
public List<ProjectRender> renders = Lists.newArrayList(new AsciidocRender(), new AsciidocHtmlRender());
30+
public List<ProjectRender> renders = Lists.newArrayList(
31+
new AsciidocRender(),
32+
new PostmanRender());
2533

2634
@Setter
2735
private Path buildPath = Paths.get(DEFAULT_BUILD_PATH);

src/main/java/com/apigcc/common/Assert.java apigcc-core/src/main/java/com/apigcc/core/common/Assert.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common;
1+
package com.apigcc.core.common;
22

33
import com.google.common.base.Strings;
44

src/main/java/com/apigcc/common/ObjectMappers.java apigcc-core/src/main/java/com/apigcc/core/common/ObjectMappers.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common;
1+
package com.apigcc.core.common;
22

33
import com.fasterxml.jackson.annotation.JsonInclude;
44
import com.fasterxml.jackson.core.JsonProcessingException;

src/main/java/com/apigcc/common/QueryStringBuilder.java apigcc-core/src/main/java/com/apigcc/core/common/QueryStringBuilder.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common;
1+
package com.apigcc.core.common;
22

33
import com.fasterxml.jackson.databind.JsonNode;
44
import com.fasterxml.jackson.databind.node.ObjectNode;

src/main/java/com/apigcc/common/URI.java apigcc-core/src/main/java/com/apigcc/core/common/URI.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.apigcc.common;
1+
package com.apigcc.core.common;
22

3-
import com.apigcc.common.helper.StringHelper;
3+
import com.apigcc.core.common.helper.StringHelper;
44
import com.google.common.collect.Lists;
55
import lombok.EqualsAndHashCode;
66
import lombok.Getter;

src/main/java/com/apigcc/common/description/ArrayTypeDescription.java apigcc-core/src/main/java/com/apigcc/core/common/description/ArrayTypeDescription.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,11 @@
1-
package com.apigcc.common.description;
1+
package com.apigcc.core.common.description;
22

3-
import com.apigcc.common.ObjectMappers;
4-
import com.apigcc.schema.Row;
3+
import com.apigcc.core.common.ObjectMappers;
4+
import com.apigcc.core.schema.Row;
55
import com.fasterxml.jackson.databind.node.ArrayNode;
66

77
import java.util.ArrayList;
88
import java.util.Collection;
9-
import java.util.Collections;
109

1110
public class ArrayTypeDescription extends TypeDescription {
1211

src/main/java/com/apigcc/common/description/ObjectTypeDescription.java apigcc-core/src/main/java/com/apigcc/core/common/description/ObjectTypeDescription.java

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
1-
package com.apigcc.common.description;
1+
package com.apigcc.core.common.description;
22

3-
import com.apigcc.common.ObjectMappers;
4-
import com.apigcc.schema.Row;
3+
import com.apigcc.core.common.ObjectMappers;
4+
import com.apigcc.core.schema.Row;
55
import com.fasterxml.jackson.databind.node.ObjectNode;
66
import com.google.common.collect.Lists;
77
import lombok.Getter;

src/main/java/com/apigcc/common/description/PrimitiveTypeDescription.java apigcc-core/src/main/java/com/apigcc/core/common/description/PrimitiveTypeDescription.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.description;
1+
package com.apigcc.core.common.description;
22

33
import com.github.javaparser.resolution.types.ResolvedPrimitiveType;
44
import com.github.javaparser.resolution.types.ResolvedReferenceType;

src/main/java/com/apigcc/common/description/StringTypeDescription.java apigcc-core/src/main/java/com/apigcc/core/common/description/StringTypeDescription.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.description;
1+
package com.apigcc.core.common.description;
22

33
public class StringTypeDescription extends TypeDescription {
44

src/main/java/com/apigcc/common/description/TypeDescription.java apigcc-core/src/main/java/com/apigcc/core/common/description/TypeDescription.java

+3-4
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
1-
package com.apigcc.common.description;
1+
package com.apigcc.core.common.description;
22

3-
import com.apigcc.common.helper.StringHelper;
4-
import com.apigcc.schema.Project;
5-
import com.apigcc.schema.Row;
3+
import com.apigcc.core.common.helper.StringHelper;
4+
import com.apigcc.core.schema.Row;
65
import com.google.common.collect.Lists;
76
import lombok.Getter;
87
import lombok.Setter;

src/main/java/com/apigcc/common/description/UnAvailableTypeDescription.java apigcc-core/src/main/java/com/apigcc/core/common/description/UnAvailableTypeDescription.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
1-
package com.apigcc.common.description;
1+
package com.apigcc.core.common.description;
22

3-
import com.apigcc.schema.Row;
3+
import com.apigcc.core.schema.Row;
44

55
import java.util.Collection;
66

src/test/java/com/apigcc/example/diff/FileMatcher.java apigcc-core/src/main/java/com/apigcc/core/common/diff/FileMatcher.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.example.diff;
1+
package com.apigcc.core.common.diff;
22

33
import com.google.common.base.Charsets;
44
import lombok.Getter;

src/test/java/com/apigcc/example/diff/FileSystem.java apigcc-core/src/main/java/com/apigcc/core/common/diff/FileSystem.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.example.diff;
1+
package com.apigcc.core.common.diff;
22

33
import java.awt.*;
44
import java.io.File;

src/test/java/com/apigcc/example/diff/MatchPatcher.java apigcc-core/src/main/java/com/apigcc/core/common/diff/MatchPatcher.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@
1515
* See the License for the specific language governing permissions and
1616
* limitations under the License.
1717
*/
18-
package com.apigcc.example.diff;
18+
package com.apigcc.core.common.diff;
1919

2020
import java.io.UnsupportedEncodingException;
2121
import java.net.URLDecoder;

src/main/java/com/apigcc/common/helper/AnnotationHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/AnnotationHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.github.javaparser.ast.expr.*;
44
import com.github.javaparser.ast.nodeTypes.NodeWithAnnotations;

src/main/java/com/apigcc/common/helper/ClassDeclarationHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/ClassDeclarationHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.github.javaparser.ast.body.ClassOrInterfaceDeclaration;
44
import com.github.javaparser.ast.body.FieldDeclaration;

src/main/java/com/apigcc/common/helper/CommentHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/CommentHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.github.javaparser.ast.body.FieldDeclaration;
44
import com.github.javaparser.ast.body.MethodDeclaration;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.apigcc.core.common.helper;
2+
3+
import com.github.javaparser.ast.CompilationUnit;
4+
import com.github.javaparser.ast.Node;
5+
6+
import java.util.Optional;
7+
8+
public class CompilationUnitHelper {
9+
10+
public static Optional<CompilationUnit> getCompilationUnit(Node node){
11+
if(node instanceof CompilationUnit){
12+
return Optional.of((CompilationUnit) node);
13+
}
14+
if (node.getParentNode().isPresent()){
15+
return getCompilationUnit(node.getParentNode().get());
16+
}
17+
return Optional.empty();
18+
}
19+
20+
}

src/main/java/com/apigcc/common/helper/ExpressionHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/ExpressionHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.github.javaparser.ast.NodeList;
44
import com.github.javaparser.ast.expr.*;

src/main/java/com/apigcc/common/helper/FieldHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/FieldHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.github.javaparser.ast.expr.Expression;
44
import com.github.javaparser.resolution.declarations.ResolvedFieldDeclaration;

src/main/java/com/apigcc/common/helper/FileHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/FileHelper.java

+1-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.google.common.collect.Lists;
44
import lombok.extern.slf4j.Slf4j;
@@ -8,12 +8,9 @@
88
import java.nio.charset.StandardCharsets;
99
import java.nio.file.Files;
1010
import java.nio.file.Path;
11-
import java.nio.file.Paths;
1211
import java.util.List;
1312
import java.util.stream.Collectors;
1413

15-
import static com.apigcc.Context.DEFAULT_CODE_STRUCTURE;
16-
1714
@Slf4j
1815
public class FileHelper {
1916

src/main/java/com/apigcc/common/helper/JsonPropertyHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/JsonPropertyHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.github.javaparser.ast.body.FieldDeclaration;
44
import com.github.javaparser.ast.expr.AnnotationExpr;

src/main/java/com/apigcc/common/helper/OptionalHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/OptionalHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import java.util.Optional;
44

src/main/java/com/apigcc/common/helper/ReferenceContext.java apigcc-core/src/main/java/com/apigcc/core/common/helper/ReferenceContext.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.google.common.collect.Sets;
44

src/main/java/com/apigcc/common/helper/StringHelper.java apigcc-core/src/main/java/com/apigcc/core/common/helper/StringHelper.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.apigcc.common.helper;
1+
package com.apigcc.core.common.helper;
22

33
import com.google.common.base.Strings;
44

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package com.apigcc.core.common.helper;
2+
3+
import com.github.javaparser.ast.CompilationUnit;
4+
import com.github.javaparser.ast.ImportDeclaration;
5+
import com.github.javaparser.ast.type.Type;
6+
7+
import java.util.Optional;
8+
9+
public class TypeNameHelper {
10+
11+
public static String getName(Type type){
12+
String name = type.toString();
13+
if(type.isClassOrInterfaceType()){
14+
name = type.asClassOrInterfaceType().getNameAsString();
15+
}
16+
Optional<CompilationUnit> optional = CompilationUnitHelper.getCompilationUnit(type);
17+
if(optional.isPresent()){
18+
CompilationUnit compilationUnit = optional.get();
19+
return getNameFromImport(name, compilationUnit);
20+
}
21+
return name;
22+
}
23+
24+
private static String getNameFromImport(String name, CompilationUnit compilationUnit){
25+
int dotPos = name.indexOf('.');
26+
String prefix = null;
27+
if (dotPos > -1) {
28+
prefix = name.substring(0, dotPos);
29+
}
30+
for (ImportDeclaration importDecl : compilationUnit.getImports()) {
31+
if (!importDecl.isAsterisk()) {
32+
String qName = importDecl.getNameAsString();
33+
boolean defaultPackage = !importDecl.getName().getQualifier().isPresent();
34+
boolean found = !defaultPackage && importDecl.getName().getIdentifier().equals(name);
35+
if (!found) {
36+
if (prefix != null) {
37+
found = qName.endsWith("." + prefix);
38+
if (found) {
39+
qName = qName + name.substring(dotPos);
40+
}
41+
}
42+
}
43+
if (found) {
44+
return qName;
45+
}
46+
}
47+
}
48+
return name;
49+
}
50+
51+
}

0 commit comments

Comments
 (0)