This is an automated email from the ASF dual-hosted git repository.

ilgrosso pushed a commit to branch 3.1.x-fixes
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/3.1.x-fixes by this push:
     new 1146722  Fixing SwaggerToOpenApiConversionUtils against recent OpenApi 
3.0.1
1146722 is described below

commit 11467221746a050e21ae9d1df5817887392db99b
Author: Francesco Chicchiriccò <[email protected]>
AuthorDate: Mon Mar 19 16:57:58 2018 +0100

    Fixing SwaggerToOpenApiConversionUtils against recent OpenApi 3.0.1
---
 .../openapi/SwaggerToOpenApiConversionUtils.java   | 145 ++++++++++++---------
 .../SwaggerToOpenApiConversionUtilsTest.java       |  11 +-
 2 files changed, 85 insertions(+), 71 deletions(-)

diff --git 
a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java
 
b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java
index f523377..1ff9b2e 100644
--- 
a/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java
+++ 
b/rt/rs/description-swagger/src/main/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtils.java
@@ -29,6 +29,7 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Map;
 import java.util.logging.Logger;
+import javax.ws.rs.core.MediaType;
 
 import org.apache.cxf.Bus;
 import org.apache.cxf.BusFactory;
@@ -87,58 +88,63 @@ public final class SwaggerToOpenApiConversionUtils {
     }
     
     public static String getOpenApiFromSwaggerJson(
-            MessageContext ctx, String json, OpenApiConfiguration cfg) throws 
IOException {
+            final MessageContext ctx,
+            final String json,
+            final OpenApiConfiguration cfg) throws IOException {
 
         JsonMapObjectReaderWriter readerWriter = new 
JsonMapObjectReaderWriter();
         JsonMapObject sw2 = readerWriter.fromJsonToJsonObject(json);
         JsonMapObject sw3 = new JsonMapObject();
-        
+
         // "openapi"
-        sw3.setProperty("openapi", "3.0.0");
-        
+        sw3.setProperty("openapi", "3.0.1");
+
         // "servers"
         setServersProperty(ctx, sw2, sw3);
-        
+
         // "info"
         JsonMapObject infoObject = sw2.getJsonMapProperty("info");
         if (infoObject != null) {
             sw3.setProperty("info", infoObject);
         }
-        
+
         // "tags"
         List<Map<String, Object>> tagsObject = sw2.getListMapProperty("tags");
         if (tagsObject != null) {
             sw3.setProperty("tags", tagsObject);
         }
-        
+
         // paths
-        Map<String, JsonMapObject> requestBodies = cfg != null && 
cfg.isCreateRequestBodies() 
-            ? new LinkedHashMap<String, JsonMapObject>() : null;
+        Map<String, JsonMapObject> requestBodies = cfg != null && 
cfg.isCreateRequestBodies()
+                ? new LinkedHashMap<String, JsonMapObject>() : null;
         setPathsProperty(sw2, sw3, requestBodies);
-        
+
         // components
         setComponentsProperty(sw2, sw3, requestBodies);
-        
+
         // externalDocs
         Object externalDocsObject = sw2.getProperty("externalDocs");
         if (externalDocsObject != null) {
             sw3.setProperty("externalDocs", externalDocsObject);
         }
-        
-        return readerWriter.toJson(sw3).replace("#/definitions/", 
"#/components/schemas/");
+
+        return readerWriter.toJson(sw3);
     }
-    
-    private static void setComponentsProperty(JsonMapObject sw2, JsonMapObject 
sw3,
-                                              Map<String, JsonMapObject> 
requestBodies) {
+
+    private static void setComponentsProperty(
+            final JsonMapObject sw2,
+            final JsonMapObject sw3,
+            final Map<String, JsonMapObject> requestBodies) {
+
         JsonMapObject comps = new JsonMapObject();
-        JsonMapObject requestBodiesObj = new JsonMapObject(); 
+        JsonMapObject requestBodiesObj = new JsonMapObject();
         if (requestBodies != null) {
             for (Map.Entry<String, JsonMapObject> entry : 
requestBodies.entrySet()) {
                 requestBodiesObj.setProperty(entry.getKey(), entry.getValue());
             }
         }
         comps.setProperty("requestBodies", requestBodiesObj);
-        
+
         JsonMapObject s2Defs = sw2.getJsonMapProperty("definitions");
         if (s2Defs != null) {
             for (Object schema : s2Defs.asMap().values()) {
@@ -152,7 +158,7 @@ public final class SwaggerToOpenApiConversionUtils {
                     }
                 }
             }
-            
+
             comps.setProperty("schemas", s2Defs);
         }
         JsonMapObject s2SecurityDefs = 
sw2.getJsonMapProperty("securityDefinitions");
@@ -167,30 +173,33 @@ public final class SwaggerToOpenApiConversionUtils {
                 }
             }
         }
-        
+
         sw3.setProperty("components", comps);
     }
-    
-    private static void setPathsProperty(JsonMapObject sw2, JsonMapObject sw3,
-                                         Map<String, JsonMapObject> 
requestBodies) {
+
+    private static void setPathsProperty(
+            final JsonMapObject sw2,
+            final JsonMapObject sw3,
+            final Map<String, JsonMapObject> requestBodies) {
+
         JsonMapObject sw2Paths = sw2.getJsonMapProperty("paths");
         for (Map.Entry<String, Object> sw2PathEntries : 
sw2Paths.asMap().entrySet()) {
-            Map<String, Object> map1 = CastUtils.cast((Map<?, 
?>)sw2PathEntries.getValue());
+            Map<String, Object> map1 = CastUtils.cast((Map<?, ?>) 
sw2PathEntries.getValue());
             JsonMapObject sw2PathVerbs = new JsonMapObject(map1);
             for (Map.Entry<String, Object> sw2PathVerbEntries : 
sw2PathVerbs.asMap().entrySet()) {
-                Map<String, Object> map2 = CastUtils.cast((Map<?, 
?>)sw2PathVerbEntries.getValue());
+                Map<String, Object> map2 = CastUtils.cast((Map<?, ?>) 
sw2PathVerbEntries.getValue());
                 JsonMapObject sw2PathVerbProps = new JsonMapObject(map2);
-                
+
                 prepareRequestBody(sw2PathVerbProps, requestBodies);
                 prepareResponses(sw2PathVerbProps);
-                
+
             }
         }
-        
+
         sw3.setProperty("paths", sw2Paths);
     }
-    
-    private static void prepareResponses(JsonMapObject sw2PathVerbProps) {
+
+    private static void prepareResponses(final JsonMapObject sw2PathVerbProps) 
{
         List<String> sw2PathVerbProduces = CastUtils.cast((List<?>) 
sw2PathVerbProps.removeProperty("produces"));
 
         JsonMapObject sw2PathVerbResps = 
sw2PathVerbProps.getJsonMapProperty("responses");
@@ -214,7 +223,7 @@ public final class SwaggerToOpenApiConversionUtils {
                 }
                 JsonMapObject headers = v2Resp.getJsonMapProperty("headers");
                 if (headers != null) {
-                    for (Map.Entry<String, Object> header: 
headers.asMap().entrySet()) {
+                    for (Map.Entry<String, Object> header : 
headers.asMap().entrySet()) {
                         JsonMapObject headerObj = new 
JsonMapObject(headers.getMapProperty(header.getKey()));
                         String type = headerObj.getStringProperty("type");
                         if (type != null) {
@@ -233,11 +242,12 @@ public final class SwaggerToOpenApiConversionUtils {
         }
     }
 
-    private static void prepareRequestBody(JsonMapObject sw2PathVerbProps, 
-                                           Map<String, JsonMapObject> 
requestBodies) {
-        List<String> sw2PathVerbConsumes =
-            
CastUtils.cast((List<?>)sw2PathVerbProps.removeProperty("consumes"));
-        
+    private static void prepareRequestBody(
+            final JsonMapObject sw2PathVerbProps,
+            final Map<String, JsonMapObject> requestBodies) {
+
+        List<String> sw2PathVerbConsumes = CastUtils.cast((List<?>) 
sw2PathVerbProps.removeProperty("consumes"));
+
         JsonMapObject sw3RequestBody = null;
         List<JsonMapObject> sw3formBody = null;
         List<Map<String, Object>> sw2PathVerbParamsList = 
sw2PathVerbProps.getListMapProperty("parameters");
@@ -247,7 +257,7 @@ public final class SwaggerToOpenApiConversionUtils {
                 sw2PathVerbParamMap.removeProperty("pattern");
                 if 
("body".equals(sw2PathVerbParamMap.getStringProperty("in"))) {
                     it.remove();
-                    
+
                     sw3RequestBody = new JsonMapObject();
                     String description = 
sw2PathVerbParamMap.getStringProperty("description");
                     if (description != null) {
@@ -260,11 +270,11 @@ public final class SwaggerToOpenApiConversionUtils {
                     JsonMapObject schema = 
sw2PathVerbParamMap.getJsonMapProperty("schema");
                     if (schema != null) {
                         JsonMapObject content = 
prepareContentFromSchema(schema, sw2PathVerbConsumes,
-                                                                         
requestBodies != null);
+                                requestBodies != null);
                         if (content != null) {
                             sw3RequestBody.setProperty("content", content);
                         }
-                        
+
                     }
                 } else if 
("formData".equals(sw2PathVerbParamMap.getStringProperty("in"))) {
                     it.remove();
@@ -292,7 +302,7 @@ public final class SwaggerToOpenApiConversionUtils {
                         sw2PathVerbParamMap.setProperty("style", "matrix");
                     }
 
-                    String type = 
(String)sw2PathVerbParamMap.removeProperty("type");
+                    String type = (String) 
sw2PathVerbParamMap.removeProperty("type");
                     Object enumK = sw2PathVerbParamMap.removeProperty("enum");
                     if (type != null) {
                         JsonMapObject schema = new JsonMapObject();
@@ -314,10 +324,10 @@ public final class SwaggerToOpenApiConversionUtils {
                 }
             }
         }
-        if (sw2PathVerbParamsList.isEmpty()) {
+        if (sw2PathVerbParamsList != null && sw2PathVerbParamsList.isEmpty()) {
             sw2PathVerbProps.removeProperty("parameters");
         }
-        if (sw3formBody != null) {
+        if (sw3RequestBody != null && sw3formBody != null) {
             sw3RequestBody.setProperty("content", 
prepareFormContent(sw3formBody, sw2PathVerbConsumes));
         }
         if (sw3RequestBody != null) {
@@ -326,28 +336,30 @@ public final class SwaggerToOpenApiConversionUtils {
             } else {
                 JsonMapObject content = 
sw3RequestBody.getJsonMapProperty("content");
                 if (content != null) {
-                    String requestBodyName = 
(String)content.removeProperty("requestBodyName");
+                    String requestBodyName = (String) 
content.removeProperty("requestBodyName");
                     if (requestBodyName != null) {
                         requestBodies.put(requestBodyName, sw3RequestBody);
-                        String ref = "#components/requestBodies/" + 
requestBodyName;
+                        String ref = "#/components/requestBodies/" + 
requestBodyName;
                         sw2PathVerbProps.setProperty("requestBody",
-                                                     
Collections.singletonMap("$ref", ref));
+                                Collections.singletonMap("$ref", ref));
                     }
                 }
             }
         }
     }
 
-    private static JsonMapObject prepareFormContent(List<JsonMapObject> 
formList, List<String> mediaTypes) {
+    private static JsonMapObject prepareFormContent(
+            final List<JsonMapObject> formList, final List<String> mediaTypes) 
{
+
         String mediaType = StringUtils.isEmpty(mediaTypes)
-            ? "application/x-www-form-urlencoded" : mediaTypes.get(0); 
+                ? MediaType.APPLICATION_FORM_URLENCODED : mediaTypes.get(0);
         JsonMapObject content = new JsonMapObject();
         JsonMapObject formType = new JsonMapObject();
         JsonMapObject schema = new JsonMapObject();
         schema.setProperty("type", "object");
         JsonMapObject props = new JsonMapObject();
         for (JsonMapObject prop : formList) {
-            String name = (String)prop.removeProperty("name");
+            String name = (String) prop.removeProperty("name");
             props.setProperty(name, prop);
             if ("file".equals(prop.getProperty("type"))) {
                 prop.setProperty("type", "string");
@@ -362,19 +374,21 @@ public final class SwaggerToOpenApiConversionUtils {
         return content;
     }
 
-    private static JsonMapObject prepareContentFromSchema(JsonMapObject schema,
-                                                          List<String> 
mediaTypes,
-                                                          boolean 
storeModelName) {
+    private static JsonMapObject prepareContentFromSchema(
+            final JsonMapObject schema,
+            final List<String> mediaTypes,
+            final boolean storeModelName) {
+
         String type = schema.getStringProperty("type");
         String modelName = null;
         boolean isArray = false;
         if (!"object".equals(type) || !"string".equals(type)) {
-            String ref = null;
+            String ref;
             JsonMapObject items = null;
             if ("array".equals(type)) {
                 isArray = true;
                 items = schema.getJsonMapProperty("items");
-                ref = (String)items.getProperty("$ref");
+                ref = (String) items.getProperty("$ref");
             } else {
                 ref = schema.getStringProperty("$ref");
             }
@@ -382,22 +396,19 @@ public final class SwaggerToOpenApiConversionUtils {
                 int index = ref.lastIndexOf("/");
                 modelName = ref.substring(index + 1);
                 if (items == null) {
-                    schema.setProperty("$ref", "#components/schemas/" + 
modelName);
+                    schema.setProperty("$ref", "#/components/schemas/" + 
modelName);
                 } else {
-                    items.setProperty("$ref", "#components/schemas/" + 
modelName);
+                    items.setProperty("$ref", "#/components/schemas/" + 
modelName);
                 }
             }
         }
+
         JsonMapObject content = new JsonMapObject();
-        
-        List<String> mediaTypesList = mediaTypes == null 
-            ? Collections.singletonList("application/json") : mediaTypes;
-        
-        for (String mediaType : mediaTypesList) {
-            content.setProperty(mediaType, 
-                        Collections.singletonMap("schema", schema));
-            
+
+        for (String mediaType : mediaTypes == null ? 
Arrays.asList(MediaType.APPLICATION_JSON) : mediaTypes) {
+            content.setProperty(mediaType, Collections.singletonMap("schema", 
schema));
         }
+
         if (modelName != null && storeModelName) {
             content.setProperty("requestBodyName", isArray ? modelName + 
"Array" : modelName);
         }
@@ -405,7 +416,11 @@ public final class SwaggerToOpenApiConversionUtils {
         return content;
     }
 
-    private static void setServersProperty(MessageContext ctx, JsonMapObject 
sw2, JsonMapObject sw3) {
+    private static void setServersProperty(
+            final MessageContext ctx,
+            final JsonMapObject sw2,
+            final JsonMapObject sw3) {
+
         URI requestURI = ctx == null ? null : 
URI.create(ctx.getHttpServletRequest().getRequestURL().toString());
 
         List<String> sw2Schemes = sw2.getListStringProperty("schemes");
@@ -428,7 +443,7 @@ public final class SwaggerToOpenApiConversionUtils {
         String sw2BasePath = sw2.getStringProperty("basePath");
 
         String sw3ServerUrl = sw2Scheme + "://" + sw2Host + sw2BasePath;
-        sw3.setProperty("servers", 
Collections.singletonList(Collections.singletonMap("url", sw3ServerUrl)));
+        sw3.setProperty("servers", 
Arrays.asList(Collections.singletonMap("url", sw3ServerUrl)));
     }
 
 }
diff --git 
a/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtilsTest.java
 
b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtilsTest.java
index 73b352e..6e3620b 100644
--- 
a/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtilsTest.java
+++ 
b/rt/rs/description-swagger/src/test/java/org/apache/cxf/jaxrs/swagger/openapi/SwaggerToOpenApiConversionUtilsTest.java
@@ -35,7 +35,7 @@ public class SwaggerToOpenApiConversionUtilsTest extends 
Assert {
         String s = 
SwaggerToOpenApiConversionUtils.getOpenApiFromSwaggerLoc("/swagger2petShop.json");
         JsonMapObjectReaderWriter readerWriter = new 
JsonMapObjectReaderWriter();
         JsonMapObject sw3 = readerWriter.fromJsonToJsonObject(s);
-        assertEquals("3.0.0", sw3.getStringProperty("openapi"));
+        assertEquals("3.0.1", sw3.getStringProperty("openapi"));
         verifyServersProperty(sw3);
         verifyInfoProperty(sw3);
         verifyTagsProperty(sw3);
@@ -50,7 +50,7 @@ public class SwaggerToOpenApiConversionUtilsTest extends 
Assert {
         String s = 
SwaggerToOpenApiConversionUtils.getOpenApiFromSwaggerLoc("/swagger2petShop.json",
 cfg);
         JsonMapObjectReaderWriter readerWriter = new 
JsonMapObjectReaderWriter();
         JsonMapObject sw3 = readerWriter.fromJsonToJsonObject(s);
-        assertEquals("3.0.0", sw3.getStringProperty("openapi"));
+        assertEquals("3.0.1", sw3.getStringProperty("openapi"));
         verifyServersProperty(sw3);
         verifyInfoProperty(sw3);
         verifyTagsProperty(sw3);
@@ -623,8 +623,7 @@ public class SwaggerToOpenApiConversionUtilsTest extends 
Assert {
     private void verifyRequestBodyRef(JsonMapObject json, String refName) {
         JsonMapObject requestBody = json.getJsonMapProperty("requestBody");
         assertEquals(1, requestBody.size());
-        assertEquals("#components/requestBodies/" + refName,
-                     requestBody.getProperty("$ref"));
+        assertEquals("#/components/requestBodies/" + refName, 
requestBody.getProperty("$ref"));
     }
 
     private void verifyPetPathPut(JsonMapObject pet, OpenApiConfiguration cfg) 
{
@@ -653,7 +652,7 @@ public class SwaggerToOpenApiConversionUtilsTest extends 
Assert {
         assertEquals(1, content.size());
         JsonMapObject schema = content.getJsonMapProperty("schema");
         assertEquals(1, schema.size());
-        assertEquals("#components/schemas/" + modelName, 
schema.getStringProperty("$ref"));
+        assertEquals("#/components/schemas/" + modelName, 
schema.getStringProperty("$ref"));
     }
     private void verifySimpleStringContent(JsonMapObject contentMap, String 
mediaType) {
         JsonMapObject content = contentMap.getJsonMapProperty(mediaType);
@@ -707,7 +706,7 @@ public class SwaggerToOpenApiConversionUtilsTest extends 
Assert {
         assertEquals("array", schema.getStringProperty("type"));
         JsonMapObject items = schema.getJsonMapProperty("items");
         assertEquals(1, items.size());
-        assertEquals("#components/schemas/" + modelName, 
items.getStringProperty("$ref"));
+        assertEquals("#/components/schemas/" + modelName, 
items.getStringProperty("$ref"));
     }
 
     private void verifyServersProperty(JsonMapObject sw3) {

-- 
To stop receiving notification emails like this one, please contact
[email protected].

Reply via email to