You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by il...@apache.org on 2019/11/14 08:28:38 UTC
[cxf] 01/02: Various small improvements to OpenApiCustomizer to
allow easier override
This is an automated email from the ASF dual-hosted git repository.
ilgrosso pushed a commit to branch CXF-8158
in repository https://gitbox.apache.org/repos/asf/cxf.git
commit ded3d576bd441552dd95ea7a094790f9987f0851
Author: Francesco Chicchiriccò <il...@apache.org>
AuthorDate: Thu Nov 14 09:27:28 2019 +0100
Various small improvements to OpenApiCustomizer to allow easier override
---
.../cxf/jaxrs/openapi/OpenApiCustomizer.java | 52 +++++++++++-----------
1 file changed, 27 insertions(+), 25 deletions(-)
diff --git a/rt/rs/description-openapi-v3/src/main/java/org/apache/cxf/jaxrs/openapi/OpenApiCustomizer.java b/rt/rs/description-openapi-v3/src/main/java/org/apache/cxf/jaxrs/openapi/OpenApiCustomizer.java
index f24f2d7..315e1d1 100644
--- a/rt/rs/description-openapi-v3/src/main/java/org/apache/cxf/jaxrs/openapi/OpenApiCustomizer.java
+++ b/rt/rs/description-openapi-v3/src/main/java/org/apache/cxf/jaxrs/openapi/OpenApiCustomizer.java
@@ -43,23 +43,23 @@ import io.swagger.v3.jaxrs2.Reader;
import io.swagger.v3.oas.integration.api.OpenAPIConfiguration;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
-import io.swagger.v3.oas.models.PathItem.HttpMethod;
import io.swagger.v3.oas.models.parameters.Parameter;
import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.servers.Server;
import io.swagger.v3.oas.models.tags.Tag;
+import java.util.Optional;
public class OpenApiCustomizer {
- private boolean dynamicBasePath;
+ protected boolean dynamicBasePath;
- private boolean replaceTags;
+ protected boolean replaceTags;
- private DocumentationProvider javadocProvider;
+ protected DocumentationProvider javadocProvider;
- private List<ClassResourceInfo> cris;
+ protected List<ClassResourceInfo> cris;
- private String applicationPath;
+ protected String applicationPath;
public OpenAPIConfiguration customize(final OpenAPIConfiguration configuration) {
if (configuration == null) {
@@ -101,51 +101,53 @@ public class OpenApiCustomizer {
List<Tag> tags = new ArrayList<>();
oas.getPaths().forEach((pathKey, pathItem) -> {
- Tag tag = null;
+ Optional<Tag> tag;
if (replaceTags && operations.containsKey(pathKey)) {
ClassResourceInfo cri = operations.get(pathKey);
- tag = new Tag();
+ tag = Optional.of(new Tag());
tag.setName(cri.getURITemplate().getValue().replaceAll("/", "_"));
if (javadocProvider != null) {
tag.setDescription(javadocProvider.getClassDoc(cri));
}
- if (!tags.contains(tag)) {
- tags.add(tag);
+ if (!tags.contains(tag.get())) {
+ tags.add(tag.get());
}
+ } else {
+ tag = Optional.empty();
}
- for (Map.Entry<HttpMethod, Operation> subentry : pathItem.readOperationsMap().entrySet()) {
- if (replaceTags && tag != null) {
- subentry.getValue().setTags(Collections.singletonList(tag.getName()));
+ pathItem.readOperationsMap().forEach((method, operation) -> {
+ if (replaceTags && tag.isPresent()) {
+ operation.setTags(Collections.singletonList(tag.get().getName()));
}
- Pair<String, String> key = Pair.of(subentry.getKey().name(), pathKey);
+ Pair<String, String> key = Pair.of(method.name(), pathKey);
if (methods.containsKey(key) && javadocProvider != null) {
OperationResourceInfo ori = methods.get(key);
- if (StringUtils.isBlank(subentry.getValue().getSummary())) {
- subentry.getValue().setSummary(javadocProvider.getMethodDoc(ori));
+ if (StringUtils.isBlank(operation.getSummary())) {
+ operation.setSummary(javadocProvider.getMethodDoc(ori));
}
- if (subentry.getValue().getParameters() == null) {
+ if (operation.getParameters() == null) {
List<Parameter> parameters = new ArrayList<>();
addParameters(parameters);
- subentry.getValue().setParameters(parameters);
+ operation.setParameters(parameters);
} else {
- for (int i = 0; i < subentry.getValue().getParameters().size(); i++) {
- if (StringUtils.isBlank(subentry.getValue().getParameters().get(i).getDescription())) {
- subentry.getValue().getParameters().get(i).
+ for (int i = 0; i < operation.getParameters().size(); i++) {
+ if (StringUtils.isBlank(operation.getParameters().get(i).getDescription())) {
+ operation.getParameters().get(i).
setDescription(javadocProvider.getMethodParameterDoc(ori, i));
}
}
- addParameters(subentry.getValue().getParameters());
+ addParameters(operation.getParameters());
}
- customizeResponses(subentry.getValue(), ori);
+ customizeResponses(operation, ori);
}
- }
+ });
});
if (replaceTags && oas.getTags() != null) {
oas.setTags(tags);
@@ -250,7 +252,7 @@ public class OpenApiCustomizer {
}
}
- private MessageContext createMessageContext() {
+ protected MessageContext createMessageContext() {
return JAXRSUtils.createContextValue(JAXRSUtils.getCurrentMessage(), null, MessageContext.class);
}
}