Skip to content

Commit 55e4e4c

Browse files
committed
open-api: code cleanup and refactor
1 parent 3638d0c commit 55e4e4c

File tree

12 files changed

+380
-365
lines changed

12 files changed

+380
-365
lines changed

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/JavaDocSetter.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public static void set(OperationExt operation, ScriptDoc doc) {
3131
var parameterNames = parameters.stream().map(Parameter::getName).collect(Collectors.toList());
3232
if (operation.getRequestBody() != null) {
3333
var javaDocNames = new LinkedHashSet<>(doc.getJavadocParameterNames());
34-
javaDocNames.removeAll(parameterNames);
34+
parameterNames.forEach(javaDocNames::remove);
3535
if (javaDocNames.size() == 1) {
3636
// just add body name on lambda/script routes.
3737
parameterNames.addAll(javaDocNames);
@@ -75,11 +75,11 @@ public static void set(OperationExt operation, MethodDoc doc, List<String> param
7575
defaultResponse.setDescription(doc.getReturnDoc());
7676
}
7777
for (var throwsDoc : doc.getThrows().values()) {
78-
var response = operation.getResponse(Integer.toString(throwsDoc.getStatusCode().value()));
78+
var response = operation.getResponse(throwsDoc.getCode());
7979
if (response == null) {
80-
response = operation.addResponse(Integer.toString(throwsDoc.getStatusCode().value()));
80+
response = operation.addResponse(throwsDoc.getCode());
8181
}
82-
response.setDescription(throwsDoc.getText());
82+
response.setDescription(throwsDoc.getDescription());
8383
}
8484
}
8585
}

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/javadoc/ClassDoc.java

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@
55
*/
66
package io.jooby.internal.openapi.javadoc;
77

8-
import static io.jooby.internal.openapi.javadoc.JavaDocSupport.*;
8+
import static io.jooby.internal.openapi.javadoc.JavaDocStream.*;
9+
import static io.jooby.internal.openapi.javadoc.JavaDocSupport.getClassName;
910

1011
import java.util.*;
1112
import java.util.stream.Collectors;
@@ -198,40 +199,15 @@ private String toMethodSignature(String methodName, List<String> parameterNames)
198199
}
199200

200201
public String getSimpleName() {
201-
return getSimpleName(node);
202-
}
203-
204-
protected String getSimpleName(DetailAST node) {
205-
return node.findFirstToken(TokenTypes.IDENT).getText();
202+
return JavaDocSupport.getSimpleName(node);
206203
}
207204

208205
public String getName() {
209-
var classScope =
210-
Stream.concat(
211-
Stream.of(node),
212-
backward(node)
213-
.filter(
214-
tokens(
215-
TokenTypes.CLASS_DEF,
216-
TokenTypes.INTERFACE_DEF,
217-
TokenTypes.ENUM_DEF,
218-
TokenTypes.RECORD_DEF)))
219-
.map(this::getSimpleName)
220-
.toList();
221-
222-
return Stream.concat(Stream.of(getPackage()), classScope.stream())
223-
.collect(Collectors.joining("."));
206+
return getClassName(node);
224207
}
225208

226209
public String getPackage() {
227-
return String.join(
228-
".",
229-
backward(node)
230-
.filter(tokens(TokenTypes.COMPILATION_UNIT))
231-
.findFirst()
232-
.flatMap(it -> tree(it).filter(tokens(TokenTypes.PACKAGE_DEF)).findFirst())
233-
.map(it -> tree(it).filter(tokens(TokenTypes.IDENT)).map(DetailAST::getText).toList())
234-
.orElse(List.of()));
210+
return JavaDocSupport.getPackageName(node);
235211
}
236212

237213
public boolean isRecord() {

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/javadoc/FieldDoc.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@
77

88
import com.puppycrawl.tools.checkstyle.api.DetailAST;
99
import com.puppycrawl.tools.checkstyle.api.DetailNode;
10-
import com.puppycrawl.tools.checkstyle.api.TokenTypes;
1110

1211
public class FieldDoc extends JavaDocNode {
1312
public FieldDoc(JavaDocParser ctx, DetailAST node, DetailAST javadoc) {
@@ -19,6 +18,6 @@ public FieldDoc(JavaDocParser ctx, DetailAST node, DetailAST javadoc) {
1918
}
2019

2120
public String getName() {
22-
return node.findFirstToken(TokenTypes.IDENT).getText();
21+
return JavaDocSupport.getSimpleName(node);
2322
}
2423
}

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/javadoc/JavaDocNode.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
*/
66
package io.jooby.internal.openapi.javadoc;
77

8-
import static io.jooby.internal.openapi.javadoc.JavaDocSupport.*;
9-
import static io.jooby.internal.openapi.javadoc.JavaDocSupport.javadocToken;
8+
import static io.jooby.internal.openapi.javadoc.JavaDocStream.*;
9+
import static io.jooby.internal.openapi.javadoc.JavaDocStream.javadocToken;
1010

1111
import java.util.*;
1212
import java.util.function.Predicate;
@@ -95,7 +95,7 @@ public String getDescription() {
9595
}
9696

9797
public String getText() {
98-
return getText(JavaDocSupport.forward(javadoc, JAVADOC_TAG).toList(), false);
98+
return getText(JavaDocStream.forward(javadoc, JAVADOC_TAG).toList(), false);
9999
}
100100

101101
protected static String getText(List<DetailNode> nodes, boolean stripLeading) {

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/javadoc/JavaDocParser.java

Lines changed: 9 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77

88
import static com.puppycrawl.tools.checkstyle.JavaParser.parseFile;
99
import static io.jooby.SneakyThrows.throwingFunction;
10-
import static io.jooby.internal.openapi.javadoc.JavaDocSupport.*;
11-
import static io.jooby.internal.openapi.javadoc.JavaDocSupport.tokens;
10+
import static io.jooby.internal.openapi.javadoc.JavaDocStream.*;
11+
import static io.jooby.internal.openapi.javadoc.JavaDocStream.tokens;
1212
import static java.util.Optional.ofNullable;
1313

1414
import java.io.File;
@@ -177,13 +177,12 @@ private ScriptRef resolveScriptComment(
177177
tree(statementList)
178178
.filter(tokens(TokenTypes.METHOD_REF))
179179
.findFirst()
180-
.flatMap(
181-
ref -> ofNullable(resolveFromMethodRef(classDoc, script, ref)))
180+
.flatMap(ref -> ofNullable(resolveFromMethodRef(classDoc, ref)))
182181
.orElseGet(() -> new ScriptRef(null, defaultComment))))
183182
.orElseGet(() -> new ScriptRef(null, defaultComment));
184183
}
185184

186-
private ScriptRef resolveFromMethodRef(ClassDoc classDoc, DetailAST script, DetailAST methodRef) {
185+
private ScriptRef resolveFromMethodRef(ClassDoc classDoc, DetailAST methodRef) {
187186
var referenceOwner = getTypeName(methodRef);
188187
DetailAST scope = null;
189188
String className;
@@ -192,7 +191,7 @@ private ScriptRef resolveFromMethodRef(ClassDoc classDoc, DetailAST script, Deta
192191
className = classDoc.getName();
193192
} else {
194193
// resolve className
195-
className = toQualifiedName(classDoc, referenceOwner);
194+
className = JavaDocSupport.toQualifiedName(classDoc.node, referenceOwner);
196195
scope = resolveType(className);
197196
if (scope == JavaDocNode.EMPTY_AST) {
198197
// not found
@@ -236,41 +235,10 @@ private ScriptRef resolveFromMethodRef(ClassDoc classDoc, DetailAST script, Deta
236235
}
237236

238237
private static String getTypeName(DetailAST methodRef) {
239-
var referenceOwner =
240-
tree(methodRef.getFirstChild())
241-
.filter(tokens(TokenTypes.DOT).negate())
242-
.map(DetailAST::getText)
243-
.collect(Collectors.joining("."));
244-
return referenceOwner;
245-
}
246-
247-
private static String toQualifiedName(ClassDoc classDoc, String referenceOwner) {
248-
var className = referenceOwner;
249-
if (!className.contains(".")) {
250-
if (!classDoc.getSimpleName().equals(className)) {
251-
var cu =
252-
backward(classDoc.getNode())
253-
.filter(tokens(TokenTypes.COMPILATION_UNIT))
254-
.findFirst()
255-
.orElseThrow(
256-
() ->
257-
new IllegalArgumentException(
258-
"No compilation unit found: " + referenceOwner));
259-
className =
260-
children(cu)
261-
.filter(tokens(TokenTypes.IMPORT))
262-
.map(
263-
it ->
264-
tree(it.getFirstChild())
265-
.filter(tokens(TokenTypes.DOT).negate())
266-
.map(DetailAST::getText)
267-
.collect(Collectors.joining(".")))
268-
.filter(qualifiedName -> qualifiedName.endsWith("." + referenceOwner))
269-
.findFirst()
270-
.orElseGet(() -> String.join(".", classDoc.getPackage(), referenceOwner));
271-
}
272-
}
273-
return className;
238+
return tree(methodRef.getFirstChild())
239+
.filter(tokens(TokenTypes.DOT).negate())
240+
.map(DetailAST::getText)
241+
.collect(Collectors.joining("."));
274242
}
275243

276244
/**

0 commit comments

Comments
 (0)