You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by re...@apache.org on 2020/12/07 15:48:55 UTC

[cxf] 01/03: Update to Swagger Core 2.1.6 (#733)

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

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

commit 3436215413082598adb4353489fce4754854b516
Author: Andriy Redko <dr...@gmail.com>
AuthorDate: Mon Dec 7 09:24:36 2020 -0500

    Update to Swagger Core 2.1.6 (#733)
    
    (cherry picked from commit 9c17f2fb90a9929d0dc8e4f090da78547a4e7a02)
---
 parent/pom.xml                                     |  2 +-
 .../apache/cxf/systest/jaxrs/AtomBookStore.java    |  3 --
 .../apache/cxf/systest/jaxrs/AtomBookStore2.java   |  3 --
 .../apache/cxf/systest/jaxrs/AtomBookStore3.java   |  3 --
 .../nonspring/JAXRSNonSpringJaxrsServletTest.java  | 47 +++++++++++++++++-----
 5 files changed, 39 insertions(+), 19 deletions(-)

diff --git a/parent/pom.xml b/parent/pom.xml
index c7ea338..f26ff66 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -202,7 +202,7 @@
         <cxf.spring.version>5.2.11.RELEASE</cxf.spring.version>
         <cxf.stax-ex.version>1.8.3</cxf.stax-ex.version>
         <cxf.swagger.ui.version>3.37.0</cxf.swagger.ui.version>
-        <cxf.swagger.v3.version>2.1.5</cxf.swagger.v3.version>
+        <cxf.swagger.v3.version>2.1.6</cxf.swagger.v3.version>
         <cxf.swagger2.version>1.6.2</cxf.swagger2.version>
         <cxf.swagger2.guava.version>27.0-jre</cxf.swagger2.guava.version>
         <cxf.tika.version>1.25</cxf.tika.version>
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore.java
index 6fd8ce0..d462c46 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore.java
@@ -47,10 +47,7 @@ import org.apache.abdera.model.Feed;
 import org.apache.cxf.customer.book.BookNotFoundDetails;
 import org.apache.cxf.customer.book.BookNotFoundFault;
 
-import io.swagger.v3.oas.annotations.Hidden;
-
 @Path("/")
-@Hidden /* Excluding from Swagger's scans (Abdera's classes break model introspection */
 public class AtomBookStore {
 
     @Context protected UriInfo uField;
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore2.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore2.java
index 2dd7554..bb3587c 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore2.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore2.java
@@ -29,10 +29,7 @@ import javax.ws.rs.core.UriInfo;
 
 import org.apache.abdera.model.Feed;
 
-import io.swagger.v3.oas.annotations.Hidden;
-
 @Path("/")
-@Hidden /* Excluding from Swagger's scans (Abdera's classes break model introspection */
 public class AtomBookStore2 extends AtomBookStore {
 
     @GET
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore3.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore3.java
index f40d7bc..59df36d 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore3.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/AtomBookStore3.java
@@ -25,10 +25,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.core.Context;
 import javax.ws.rs.core.UriInfo;
 
-import io.swagger.v3.oas.annotations.Hidden;
-
 @Path("/atom")
-@Hidden /* Excluding from Swagger's scans (Abdera's classes break model introspection */
 public class AtomBookStore3 extends AtomBookStore {
 
     @Context
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/nonspring/JAXRSNonSpringJaxrsServletTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/nonspring/JAXRSNonSpringJaxrsServletTest.java
index 16a8560..85327a8 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/nonspring/JAXRSNonSpringJaxrsServletTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/nonspring/JAXRSNonSpringJaxrsServletTest.java
@@ -19,19 +19,28 @@
 
 package org.apache.cxf.systest.jaxrs.nonspring;
 
+import java.io.IOException;
+
 import javax.ws.rs.core.Response;
 
+import com.fasterxml.jackson.core.JsonGenerator;
+import com.fasterxml.jackson.databind.JsonSerializer;
+import com.fasterxml.jackson.databind.SerializerProvider;
+
 import org.apache.cxf.jaxrs.client.WebClient;
 import org.apache.cxf.jaxrs.model.AbstractResourceInfo;
 import org.apache.cxf.systest.jaxrs.Book;
 import org.apache.cxf.testutil.common.AbstractBusClientServerTestBase;
 
+import io.swagger.v3.core.util.Json;
+
 import org.junit.BeforeClass;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
+
 /**
  * A test for launching the JAX-RS service using CXFNonSpringJaxrsServlet
  */
@@ -65,16 +74,36 @@ public class JAXRSNonSpringJaxrsServletTest extends AbstractBusClientServerTestB
 
     @Test
     public void testFeatureOnResourceClassUsingApplication() throws Exception {
-        String address = "http://localhost:" + PORT2 + "/bookstore/;JSESSIONID=xxx";
-        WebClient wc = WebClient.create(address);
-        Book book = wc.get(Book.class);
-        assertEquals(124L, book.getId());
-        assertEquals("root", book.getName());
+        final JsonSerializer<Object> defaultNullKeySerializer = Json
+            .mapper()
+            .getSerializerProvider()
+            .getDefaultNullKeySerializer();
 
-        // Check OpenAPI feature is working correctly
-        wc = WebClient.create("http://localhost:" + PORT2 + "/openapi.json");
-        Response openAPIResponse = wc.get();
-        assertEquals(200, openAPIResponse.getStatus());
+        try {
+            // Swagger Core v3 does not interpret FormParam("") properly, sets property key as 'null' and fails the
+            // serialization with "Null key for a Map not allowed in JSON (use a converting NullKeySerializer?)"
+            Json.mapper().getSerializerProvider().setNullKeySerializer(new JsonSerializer<Object>() {
+                @Override
+                public void serialize(Object value, JsonGenerator gen, SerializerProvider provider) throws IOException {
+                    gen.writeFieldName("");
+                }
+            });
+
+            String address = "http://localhost:" + PORT2 + "/bookstore/;JSESSIONID=xxx";
+            WebClient wc = WebClient.create(address);
+            Book book = wc.get(Book.class);
+            assertEquals(124L, book.getId());
+            assertEquals("root", book.getName());
+    
+            // Check OpenAPI feature is working correctly
+            wc = WebClient.create("http://localhost:" + PORT2 + "/openapi.json");
+            Response openAPIResponse = wc.get();
+            assertEquals(200, openAPIResponse.getStatus());
+        } finally {
+            if (defaultNullKeySerializer != null) {
+                Json.mapper().getSerializerProvider().setNullKeySerializer(defaultNullKeySerializer);
+            }
+        }
     }
 
 }
\ No newline at end of file