Skip to content

Commit 4790091

Browse files
authored
Merge pull request #14 from aboutbits/swagger-fixes
Swagger fixes
2 parents 8609f39 + f13285f commit 4790091

5 files changed

Lines changed: 29 additions & 9 deletions

File tree

.idea/checkstyle-idea.xml

Lines changed: 6 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/it/aboutbits/springboot/toolbox/swagger/customization/alphabetical_model_order/OrderModelsCustomizer.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@ public class OrderModelsCustomizer implements OpenApiCustomizer {
1010
public void customise(OpenAPI openApi) {
1111
var components = openApi.getComponents();
1212

13-
components.schemas(new TreeMap<>(components.getSchemas()));
13+
if (components != null && components.getSchemas() != null) {
14+
components.schemas(new TreeMap<>(components.getSchemas()));
15+
}
1416
}
1517
}

src/main/java/it/aboutbits/springboot/toolbox/swagger/customization/default_not_null/NullableCustomizer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ public class NullableCustomizer implements OpenApiCustomizer {
1010
@Override
1111
@SuppressWarnings("unchecked")
1212
public void customise(OpenAPI openApi) {
13+
if (openApi.getComponents() == null || openApi.getComponents().getSchemas() == null) {
14+
return;
15+
}
1316
openApi.getComponents().getSchemas().values()
1417
.forEach(schema -> {
1518
var requiredProperties = new ArrayList<String>();

src/main/java/it/aboutbits/springboot/toolbox/swagger/customization/logout_route/LogoutCustomizer.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,23 @@
44
import io.swagger.v3.oas.models.Operation;
55
import io.swagger.v3.oas.models.PathItem;
66
import io.swagger.v3.oas.models.responses.ApiResponses;
7+
import lombok.NonNull;
78
import lombok.RequiredArgsConstructor;
89
import org.springdoc.core.customizers.OpenApiCustomizer;
910

1011
@RequiredArgsConstructor
1112
public class LogoutCustomizer implements OpenApiCustomizer {
13+
@NonNull
1214
private final String logoutUrl;
15+
@NonNull
16+
private final String tag;
1317

1418
@Override
1519
public void customise(OpenAPI openApi) {
1620
var operation = new Operation();
17-
operation.addTagsItem("Authentication API");
21+
operation.addTagsItem(tag);
1822
operation.summary("Logout the current user");
23+
operation.operationId("logout");
1924
operation.responses(new ApiResponses());
2025

2126
var pathItem = new PathItem();

src/main/java/it/aboutbits/springboot/toolbox/swagger/type/CustomTypePropertyCustomizer.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,17 @@ public class CustomTypePropertyCustomizer implements PropertyCustomizer {
2020
public Schema<?> customize(Schema property, AnnotatedType annotatedType) {
2121
var type = annotatedType.getType();
2222

23+
if (type instanceof SimpleType simpleType) {
24+
var rawClass = simpleType.getRawClass();
25+
26+
// We set the enum name as the description because swagger treats each usage as a new enum.
27+
// This way we can preserve the information about the original enum type.
28+
if (rawClass.isEnum()) {
29+
var displayName = rawClass.getCanonicalName().replace(rawClass.getPackage().getName() + ".", "");
30+
property.setDescription(displayName);
31+
}
32+
}
33+
2334
if (type instanceof SimpleType simpleType && CustomType.class.isAssignableFrom(simpleType.getRawClass())) {
2435
var rawClass = simpleType.getRawClass();
2536

0 commit comments

Comments
 (0)