Repository: incubator-geode
Updated Branches:
  refs/heads/feature/GEODE-1983 9fab238fd -> 8edb2e987


GEODE-2014: Upgrade Swagger libraries

This closes #265


Project: http://git-wip-us.apache.org/repos/asf/incubator-geode/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-geode/commit/8edb2e98
Tree: http://git-wip-us.apache.org/repos/asf/incubator-geode/tree/8edb2e98
Diff: http://git-wip-us.apache.org/repos/asf/incubator-geode/diff/8edb2e98

Branch: refs/heads/feature/GEODE-1983
Commit: 8edb2e987503fc44d8293ee0327cdfbd417f667c
Parents: 9fab238
Author: Kevin Duling <[email protected]>
Authored: Tue Oct 18 15:54:55 2016 -0700
Committer: Kirk Lund <[email protected]>
Committed: Wed Oct 19 09:28:23 2016 -0700

----------------------------------------------------------------------
 .../web/RestSecurityIntegrationTest.java        |  2 +-
 .../web/swagger/config/RestApiPathProvider.java | 67 ++++++++++++++------
 .../web/swagger/config/SwaggerConfig.java       | 53 ++++++----------
 gradle/dependency-versions.properties           |  4 +-
 4 files changed, 72 insertions(+), 54 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8edb2e98/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
----------------------------------------------------------------------
diff --git 
a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
 
b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
index 6e91894..fd811d2 100644
--- 
a/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
+++ 
b/geode-assembly/src/test/java/org/apache/geode/rest/internal/web/RestSecurityIntegrationTest.java
@@ -94,7 +94,7 @@ public class RestSecurityIntegrationTest {
   @Test
   public void testFunctions() throws Exception {
     String json = "{\"@type\":\"double\",\"@value\":210}";
-
+    Thread.sleep(500000);
     HttpResponse response = doGet("/functions", "unknown-user", "1234567");
     assertEquals(401, getCode(response));
     response = doGet("/functions", "stranger", "1234567");

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8edb2e98/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/RestApiPathProvider.java
----------------------------------------------------------------------
diff --git 
a/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/RestApiPathProvider.java
 
b/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/RestApiPathProvider.java
index f232c96..8c81f21 100644
--- 
a/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/RestApiPathProvider.java
+++ 
b/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/RestApiPathProvider.java
@@ -16,20 +16,21 @@
  */
 package org.apache.geode.rest.internal.web.swagger.config;
 
-import org.apache.geode.distributed.internal.DistributionConfig;
-import org.apache.geode.distributed.internal.InternalDistributedSystem;
-import org.apache.geode.internal.net.SocketCreator;
-import org.apache.geode.internal.lang.StringUtils;
-import com.mangofactory.swagger.core.SwaggerPathProvider;
+import java.net.UnknownHostException;
+
+import javax.servlet.ServletContext;
+
+import com.mangofactory.swagger.paths.SwaggerPathProvider;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.util.Assert;
-import org.springframework.web.util.UriComponentsBuilder;
 
-import javax.servlet.ServletContext;
-import java.net.UnknownHostException;
+import org.apache.geode.distributed.internal.DistributionConfig;
+import org.apache.geode.distributed.internal.InternalDistributedSystem;
+import org.apache.geode.internal.lang.StringUtils;
+import org.apache.geode.internal.net.SocketCreator;
 
 @SuppressWarnings("unused")
-public class RestApiPathProvider implements SwaggerPathProvider {
+public class RestApiPathProvider extends SwaggerPathProvider {
 
   @Autowired
   private ServletContext servletContext;
@@ -74,22 +75,50 @@ public class RestApiPathProvider implements 
SwaggerPathProvider {
     return defaultPathProvider.getApiResourcePrefix();
   }
 
+  /**
+   * For relative SwaggerPathProviders this is typically '/' meaning relative 
to the swagger ui page serving the
+   * documentation. The swagger specification recommends that this should be 
an absolute URL.
+   * <p>
+   * Corresponds to the base path attribute of a swagger api declaration.
+   * This is the actual base path serving the api (not the swagger 
documentation)
+   * @return the applications base uri
+   */
   @Override
-  public String getAppBasePath() {
-    return UriComponentsBuilder.fromHttpUrl(docsLocation)
-        .path(servletContext.getContextPath()).build().toString();
+  protected String applicationPath() {
+    return null;
   }
 
+  /**
+   * The base path to the swagger api documentation.
+   * <p>
+   * Typically docs are served from &lt;yourApp&gt;/api-docs so a relative 
resourceListing path will omit the api-docs
+   * segment.
+   * E.g.
+   * Relative: "path": "/"
+   * Absolute: "path": "http://localhost:8080/api-docs";
+   * @return the documentation base path
+   */
   @Override
-  public String getSwaggerDocumentationBasePath() {
-    return UriComponentsBuilder.fromHttpUrl(getAppBasePath())
-        .pathSegment("api-docs/").build().toString();
+  protected String getDocumentationPath() {
+    return null;
   }
 
-  @Override
-  public String getRequestMappingEndpoint(String requestMappingPattern) {
-    return 
defaultPathProvider.getRequestMappingEndpoint(requestMappingPattern);
-  }
+  //  @Override
+  //  public String getAppBasePath() {
+  //    return UriComponentsBuilder.fromHttpUrl(docsLocation)
+  //        .path(servletContext.getContextPath()).build().toString();
+  //  }
+  //
+  //  @Override
+  //  public String getSwaggerDocumentationBasePath() {
+  //    return UriComponentsBuilder.fromHttpUrl(getAppBasePath())
+  //        .pathSegment("api-docs/").build().toString();
+  //  }
+  //
+  //  @Override
+  //  public String getRequestMappingEndpoint(String requestMappingPattern) {
+  //    return 
defaultPathProvider.getRequestMappingEndpoint(requestMappingPattern);
+  //  }
 
   public void setDefaultPathProvider(
       final SwaggerPathProvider defaultSwaggerPathProvider) {

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8edb2e98/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/SwaggerConfig.java
----------------------------------------------------------------------
diff --git 
a/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/SwaggerConfig.java
 
b/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/SwaggerConfig.java
index 42578ba..33a96b3 100644
--- 
a/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/SwaggerConfig.java
+++ 
b/geode-web-api/src/main/java/org/apache/geode/rest/internal/web/swagger/config/SwaggerConfig.java
@@ -20,22 +20,21 @@ import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 
-import org.apache.geode.internal.i18n.LocalizedStrings;
-import com.mangofactory.swagger.configuration.JacksonScalaSupport;
 import com.mangofactory.swagger.configuration.SpringSwaggerConfig;
-import com.mangofactory.swagger.configuration.SpringSwaggerModelConfig;
 import com.mangofactory.swagger.configuration.SwaggerGlobalSettings;
 import com.mangofactory.swagger.core.SwaggerApiResourceListing;
+import com.mangofactory.swagger.models.dto.ApiInfo;
+import com.mangofactory.swagger.models.dto.AuthorizationType;
+import com.mangofactory.swagger.plugin.SwaggerSpringMvcPlugin;
 import com.mangofactory.swagger.scanners.ApiListingReferenceScanner;
-import com.wordnik.swagger.model.ApiInfo;
-import com.wordnik.swagger.model.AuthorizationType;
-
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.context.annotation.Configuration;
 
+import org.apache.geode.internal.i18n.LocalizedStrings;
+
 @Configuration
 @ComponentScan(basePackages = "com.mangofactory.swagger")
 @SuppressWarnings("unused")
@@ -44,17 +43,26 @@ public class SwaggerConfig {
   protected static final List<String> DEFAULT_INCLUDE_PATTERNS = Arrays
       .asList("/.*");
 
-  protected static final String SWAGGER_GROUP = "gemfireApi";
+  protected static final String SWAGGER_GROUP = "apacheGeode";
 
   @Autowired
   private SpringSwaggerConfig springSwaggerConfig;
 
-  @Autowired
-  private SpringSwaggerModelConfig springSwaggerModelConfig;
-
   @Value("${app.docs}")
   private String docsLocation;
 
+  @SuppressWarnings("SpringJavaAutowiringInspection")
+  @Autowired
+  public void setSpringSwaggerConfig(SpringSwaggerConfig springSwaggerConfig) {
+    this.springSwaggerConfig = springSwaggerConfig;
+  }
+
+  @Bean
+  public SwaggerSpringMvcPlugin customImplementation() {
+
+    return new 
SwaggerSpringMvcPlugin(this.springSwaggerConfig).apiInfo(apiInfo());
+  }
+
   /**
    * API Info as it appears on the Swagger-UI page
    */
@@ -69,20 +77,6 @@ public class SwaggerConfig {
   }
 
   /**
-   * Adds the Jackson Scala module to the MappingJackson2HttpMessageConverter
-   * registered with Spring. Swagger core models are Scala so we need to be 
able
-   * to convert to JSON. Also registers some custom serializers needed to
-   * transform Swagger models to Swagger-UI required JSON format.
-   */
-  @Bean
-  public JacksonScalaSupport jacksonScalaSupport() {
-    JacksonScalaSupport jacksonScalaSupport = new JacksonScalaSupport();
-    // set to false to disable
-    jacksonScalaSupport.setRegisterScalaModule(true);
-    return jacksonScalaSupport;
-  }
-
-  /**
    * Configure a SwaggerApiResourceListing for each Swagger instance within 
your
    * app. e.g. 1. private 2. external APIs 3. ..., required to be a Spring bean
    * as Spring will call the postConstruct method to bootstrap Swagger 
scanning.
@@ -93,8 +87,7 @@ public class SwaggerConfig {
     // ApiListingReferenceScanner
     // Note that swaggerCache() is by DefaultSwaggerController to serve the
     // Swagger JSON
-    SwaggerApiResourceListing swaggerApiResourceListing = new 
SwaggerApiResourceListing(
-        springSwaggerConfig.swaggerCache(), SWAGGER_GROUP);
+    SwaggerApiResourceListing swaggerApiResourceListing = new 
SwaggerApiResourceListing(springSwaggerConfig.swaggerCache(), SWAGGER_GROUP);
 
     // set required Swagger settings
     
swaggerApiResourceListing.setSwaggerGlobalSettings(swaggerGlobalSettings());
@@ -108,12 +101,10 @@ public class SwaggerConfig {
 
     // every SwaggerApiResourceListing needs an ApiListingReferenceScanner to
     // scan the Spring RequestMappings
-    swaggerApiResourceListing
-        .setApiListingReferenceScanner(apiListingReferenceScanner());
+    
swaggerApiResourceListing.setApiListingReferenceScanner(apiListingReferenceScanner());
 
     // global authorization - see the Swagger documentation
-    swaggerApiResourceListing.setAuthorizationTypes(Collections
-        .<AuthorizationType> emptyList());
+    
swaggerApiResourceListing.setAuthorizationTypes(Collections.<AuthorizationType>emptyList());
 
     return swaggerApiResourceListing;
   }
@@ -128,8 +119,6 @@ public class SwaggerConfig {
         .defaultResponseMessages());
     swaggerGlobalSettings.setIgnorableParameterTypes(springSwaggerConfig
         .defaultIgnorableParameterTypes());
-    swaggerGlobalSettings.setParameterDataTypes(springSwaggerModelConfig
-        .defaultParameterDataTypes());
     return swaggerGlobalSettings;
   }
 

http://git-wip-us.apache.org/repos/asf/incubator-geode/blob/8edb2e98/gradle/dependency-versions.properties
----------------------------------------------------------------------
diff --git a/gradle/dependency-versions.properties 
b/gradle/dependency-versions.properties
index 50af2aa..a4caa34 100644
--- a/gradle/dependency-versions.properties
+++ b/gradle/dependency-versions.properties
@@ -100,8 +100,8 @@ spring-tx.version = 4.3.2.RELEASE
 springframework.version = 4.3.2.RELEASE
 stephenc-findbugs.version = 1.3.9-1
 spymemcached.version = 2.9.0
-swagger.version = 1.3.2
-swagger-springmvc.version = 0.8.2
+swagger.version=1.3.13
+swagger-springmvc.version=1.0.2
 system-rules.version = 1.16.0
 tempus-fugit.version = 1.1
 tomcat6.version = 6.0.37

Reply via email to