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);
     }
 }