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 2018/03/30 13:56:54 UTC

[cxf] branch master updated: CXF-7692: Swagger UI is not shown in OSGi deployment

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

reta pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/cxf.git


The following commit(s) were added to refs/heads/master by this push:
     new be88562  CXF-7692: Swagger UI is not shown in OSGi deployment
be88562 is described below

commit be88562abb79110e6d6d4092aea4a2deb731b6a9
Author: reta <dr...@gmail.com>
AuthorDate: Fri Mar 30 09:54:37 2018 -0400

    CXF-7692: Swagger UI is not shown in OSGi deployment
---
 .../apache/cxf/jaxrs/swagger/SwaggerUiService.java |  7 +++---
 .../AbstractSwagger2ServiceDescriptionTest.java    | 25 +++++++++++++++++++---
 .../AbstractOpenApiServiceDescriptionTest.java     | 24 +++++++++++++++++++--
 3 files changed, 48 insertions(+), 8 deletions(-)

diff --git a/rt/rs/description-swagger-ui/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiService.java b/rt/rs/description-swagger-ui/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiService.java
index 49a939d..e889915 100644
--- a/rt/rs/description-swagger-ui/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiService.java
+++ b/rt/rs/description-swagger-ui/src/main/java/org/apache/cxf/jaxrs/swagger/SwaggerUiService.java
@@ -70,11 +70,12 @@ public class SwaggerUiService {
         
         try {
             final URL resourceURL = locator.locate(resourcePath);
+            final String path = resourceURL.getPath();
 
             String mediaType = null;
-            int ind = resourcePath.lastIndexOf('.');
-            if (ind != -1 && ind < resourcePath.length()) {
-                String resourceExt = resourcePath.substring(ind + 1);
+            int ind = path.lastIndexOf('.');
+            if (ind != -1 && ind < path.length()) {
+                String resourceExt = path.substring(ind + 1);
                 if (mediaTypes != null && mediaTypes.containsKey(resourceExt)) {
                     mediaType = mediaTypes.get(resourceExt);
                 } else {
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java
index 8bdc1ea..979a8ba 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/AbstractSwagger2ServiceDescriptionTest.java
@@ -209,10 +209,29 @@ public abstract class AbstractSwagger2ServiceDescriptionTest extends AbstractBus
         WebClient uiClient = WebClient
             .create("http://localhost:" + getPort() + "/swagger-ui.css")
             .accept("text/css");
-        String css = uiClient.get(String.class);
-        assertThat(css, containsString(".swagger-ui{"));
+        
+        try (Response response = uiClient.get()) {
+            String css = response.readEntity(String.class);
+            assertThat(css, containsString(".swagger-ui{"));
+            assertThat(response.getMediaType(), equalTo(MediaType.valueOf("text/css")));
+        }
     }
-    
+
+    @Test
+    public void testUiRootResource() {
+        // Test that Swagger UI resources do not interfere with 
+        // application-specific ones and are accessible.
+        WebClient uiClient = WebClient
+            .create("http://localhost:" + getPort() + "/api-docs")
+            .accept("*/*");
+        
+        try (Response response = uiClient.get()) {
+            String html = response.readEntity(String.class);
+            assertThat(html, containsString("<!-- HTML"));
+            assertThat(response.getMediaType(), equalTo(MediaType.TEXT_HTML_TYPE));
+        }
+    }
+
     @Test
     @Ignore
     public void testApiListingIsProperlyReturnedYAML() throws Exception {
diff --git a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/openapi/AbstractOpenApiServiceDescriptionTest.java b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/openapi/AbstractOpenApiServiceDescriptionTest.java
index 2aa3216..0e8654f 100644
--- a/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/openapi/AbstractOpenApiServiceDescriptionTest.java
+++ b/systests/jaxrs/src/test/java/org/apache/cxf/systest/jaxrs/description/openapi/AbstractOpenApiServiceDescriptionTest.java
@@ -25,6 +25,7 @@ import java.util.Map;
 
 import javax.ws.rs.HttpMethod;
 import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.Response;
 
 import com.fasterxml.jackson.jaxrs.json.JacksonJsonProvider;
 
@@ -209,8 +210,27 @@ public abstract class AbstractOpenApiServiceDescriptionTest extends AbstractBusC
         WebClient uiClient = WebClient
             .create(getBaseUrl() + "/swagger-ui.css")
             .accept("text/css");
-        String css = uiClient.get(String.class);
-        assertThat(css, containsString(".swagger-ui{"));
+
+        try (Response response = uiClient.get()) {
+            String css = response.readEntity(String.class);
+            assertThat(css, containsString(".swagger-ui{"));
+            assertThat(response.getMediaType(), equalTo(MediaType.valueOf("text/css")));
+        }
+    }
+    
+    @Test
+    public void testUiRootResource() {
+        // Test that Swagger UI resources do not interfere with 
+        // application-specific ones and are accessible.
+        WebClient uiClient = WebClient
+            .create(getBaseUrl() + "/api-docs")
+            .accept("*/*");
+        
+        try (Response response = uiClient.get()) {
+            String html = response.readEntity(String.class);
+            assertThat(html, containsString("<!-- HTML"));
+            assertThat(response.getMediaType(), equalTo(MediaType.TEXT_HTML_TYPE));
+        }
     }
     
     protected String getApplicationPath() {

-- 
To stop receiving notification emails like this one, please contact
reta@apache.org.