Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

G3 upgrade #23

Open
wants to merge 7 commits into
base: master
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 3 additions & 2 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ allprojects {
jcenter()
maven { url 'http://oss.jfrog.org/artifactory/oss-snapshot-local/' }
mavenCentral()
maven { url "https://repo.grails.org/grails/core" }
}

ext {
Expand All @@ -20,7 +21,7 @@ allprojects {
classmate = "1.3.4"
groovy = "2.4.8"
guava = "20.0"
grails = "3.2.4"
grails = "3.3.2"
jackson = '2.7.7'
joda = "2.9.4"
jsonPath = "2.4.0"
Expand All @@ -31,7 +32,7 @@ allprojects {
slf4j = "1.7.22"
snakeyaml = '1.19'
spock = "1.1-groovy-2.4"
spring = "4.2.8.RELEASE"
spring = "4.2.9.RELEASE"
springHateoas = "0.21.0.RELEASE"
springPluginVersion = "1.2.0.RELEASE"
swagger2Core = "1.5.12"
Expand Down
12 changes: 5 additions & 7 deletions springfox-grails-contract-tests/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,8 @@ buildscript {
}
dependencies {
classpath "org.grails:grails-gradle-plugin:$grailsVersion"
classpath "org.grails.plugins:hibernate5:6.0.2"
classpath "org.grails.plugins:views-gradle:1.1.1"
classpath "org.grails.plugins:hibernate5:6.1.8"
classpath "org.grails.plugins:views-gradle:1.2.6"
}
}

Expand Down Expand Up @@ -60,12 +60,10 @@ dependencies {
console "org.grails:grails-console"

profile "org.grails.profiles:rest-api"

provided "org.codehaus.groovy:groovy-ant"

runtime "com.h2database:h2"

testCompile "org.grails:grails-plugin-testing"
runtime "org.apache.tomcat:tomcat-jdbc"

testCompile "org.grails:grails-web-testing-support"
testCompile "org.grails.plugins:geb"
testCompile "org.grails:grails-datastore-rest-client"
testCompile 'io.rest-assured:rest-assured:3.0.6'
Expand Down
4 changes: 2 additions & 2 deletions springfox-grails-contract-tests/gradle.properties
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
grailsVersion=3.2.4
gradleWrapperVersion=3.0
grailsVersion=3.3.2
gradleWrapperVersion=3.5
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ hibernate:
queries: false
use_second_level_cache: true
use_query_cache: false
region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory
# region.factory_class: org.hibernate.cache.ehcache.SingletonEhCacheRegionFactory

dataSource:
pooled: true
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package grails.springfox.sample

import grails.transaction.Transactional
import grails.gorm.transactions.Transactional
import io.swagger.annotations.ApiImplicitParam
import io.swagger.annotations.ApiImplicitParams
import io.swagger.annotations.ApiOperation
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package grails.springfox.sample

import grails.test.mixin.integration.Integration
import grails.testing.mixin.integration.Integration
import groovy.json.JsonOutput
import org.junit.Assert
import org.skyscreamer.jsonassert.JSONAssert
Expand Down
2 changes: 1 addition & 1 deletion springfox-grails/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ buildscript {
maven {
url "https://plugins.gradle.org/m2/"
}
maven { url "https://repo.grails.org/grails/core" }
jcenter()
mavenCentral()
}
Expand Down Expand Up @@ -49,7 +50,6 @@ dependencies {
testCompile "org.spockframework:spock-spring:${spock}"
testCompile "org.spockframework:spock-core:${spock}"
testCompile "org.codehaus.groovy:groovy-all:${groovy}"
testCompile "org.grails:grails-plugin-testing:${grails}"
testCompile "org.grails:grails-plugin-rest:${grails}"

provided "io.swagger:swagger-annotations:${swagger2Core}"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,19 @@
package springfox.documentation.grails;

import com.fasterxml.classmate.TypeResolver;
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.spi.service.RequestHandlerProvider;
import springfox.documentation.spi.service.contexts.Defaults;
import springfox.documentation.spring.web.DocumentationCache;
import springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper;
import springfox.documentation.spring.web.plugins.DocumentationPluginsManager;
import springfox.documentation.spring.web.scanners.ApiDocumentationScanner;

import javax.servlet.ServletContext;
import java.util.List;

@Configuration
@ComponentScan(basePackages = "springfox.documentation.grails")
Expand All @@ -26,4 +36,24 @@ public GrailsPropertyTransformer propertyTransformer() {
public GeneratedClassNamingStrategy namingStrategy() {
return new DefaultGeneratedClassNamingStrategy();
}

@Bean
DocumentationPluginsBootstrapper documentationPluginsBootstrapper(
DocumentationPluginsManager documentationPluginsManager,
List<RequestHandlerProvider> handlerProviders,
DocumentationCache scanned,
ApiDocumentationScanner resourceListing,
TypeResolver typeResolver,
Defaults defaults,
ServletContext servletContext) {

return new SwaggerDocumentationPluginsBootstrapper(
documentationPluginsManager,
handlerProviders,
scanned,
resourceListing,
typeResolver,
defaults,
servletContext);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package springfox.documentation.grails;

import com.fasterxml.classmate.TypeResolver;
import springfox.documentation.spi.service.RequestHandlerProvider;
import springfox.documentation.spi.service.contexts.Defaults;
import springfox.documentation.spring.web.DocumentationCache;
import springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper;
import springfox.documentation.spring.web.plugins.DocumentationPluginsManager;
import springfox.documentation.spring.web.scanners.ApiDocumentationScanner;

import javax.servlet.ServletContext;
import java.util.List;

public class SwaggerDocumentationPluginsBootstrapper extends DocumentationPluginsBootstrapper {

SwaggerDocumentationPluginsBootstrapper(DocumentationPluginsManager documentationPluginsManager,
List<RequestHandlerProvider> handlerProviders,
DocumentationCache scanned,
ApiDocumentationScanner resourceListing,
TypeResolver typeResolver,
Defaults defaults,
ServletContext servletContext) {
super(documentationPluginsManager, handlerProviders, scanned, resourceListing, typeResolver, defaults, servletContext);
}

@Override
public boolean isAutoStartup() {
return false;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
package springfox.documentation.grails;

import grails.core.GrailsApplicationLifeCycle;
import groovy.lang.Closure;
import org.springframework.stereotype.Component;
import springfox.documentation.spring.web.plugins.DocumentationPluginsBootstrapper;

import java.util.Map;


@Component
public class SwaggerGrailsApplicationPostProcessor implements GrailsApplicationLifeCycle {

private DocumentationPluginsBootstrapper documentationPluginsBootstrapper;

public SwaggerGrailsApplicationPostProcessor(DocumentationPluginsBootstrapper documentationPluginsBootstrapper){
this.documentationPluginsBootstrapper = documentationPluginsBootstrapper;
}

@Override
public Closure doWithSpring() { return null; }

@Override
public void doWithDynamicMethods() {}

@Override
public void doWithApplicationContext() {}

@Override
public void onConfigChange(Map<String, Object> event) {}

@Override
public void onStartup(Map<String, Object> event) {
documentationPluginsBootstrapper.start();
}

@Override
public void onShutdown(Map<String, Object> event) {}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import com.fasterxml.classmate.TypeResolver;
import com.google.common.base.Strings;
import grails.core.GrailsDomainClass;
import grails.validation.ConstrainedProperty;
import grails.gorm.validation.ConstrainedProperty;
import grails.web.mapping.UrlMapping;
import springfox.documentation.service.ResolvedMethodParameter;

Expand Down Expand Up @@ -36,7 +36,7 @@ && controllerMatches(u, logicalControllerName)
}

public static Map<String, String> pathParameters(UrlMapping mapping) {
ConstrainedProperty[] constraints = mapping.getConstraints();
ConstrainedProperty[] constraints = (ConstrainedProperty[])mapping.getConstraints();
return IntStream.range(0, constraints.length)
.filter(indicesToUse(mapping))
.mapToObj(i -> constraints[i])
Expand All @@ -49,7 +49,7 @@ public static List<ResolvedMethodParameter> resolvedPathParameters(
TypeResolver resolver,
UrlMapping mapping,
GrailsDomainClass domainClass) {
ConstrainedProperty[] constraints = mapping.getConstraints();
ConstrainedProperty[] constraints = (ConstrainedProperty[])mapping.getConstraints();
List<ConstrainedProperty> pathProperties = IntStream.range(0, constraints.length)
.filter(indicesToUse(mapping))
.mapToObj(i -> constraints[i])
Expand All @@ -68,7 +68,7 @@ public static List<ResolvedMethodParameter> resolvedPathParameters(

private static IntPredicate indicesToUse(UrlMapping mapping) {
return index -> {
ConstrainedProperty property = mapping.getConstraints()[index];
ConstrainedProperty property = (ConstrainedProperty)mapping.getConstraints()[index];
return !property.getPropertyName().equals("controller")
&& !property.getPropertyName().equals("action")
&& !property.isNullable();
Expand Down Expand Up @@ -120,7 +120,7 @@ private static boolean isWildcardAction(UrlMapping urlMapping) {
}

private static boolean hasControllerConstraint(UrlMapping urlMapping, String name) {
return !Arrays.stream(urlMapping.getConstraints())
return !Arrays.stream((ConstrainedProperty[])urlMapping.getConstraints())
.filter(c -> c.getPropertyName().equals(name))
.collect(Collectors.toList()).isEmpty();
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package springfox.documentation.grails

import com.fasterxml.classmate.TypeResolver
import grails.rest.RestfulController
import org.springframework.http.MediaType
import org.springframework.web.bind.annotation.RequestMethod


class IndexActionSpecificationFactorySpec extends ActionSpecificationFactorySpec {
def "Index action produces action specification" () {
given:
Expand All @@ -17,7 +17,7 @@ class IndexActionSpecificationFactorySpec extends ActionSpecificationFactorySpec
spec.consumes == [MediaType.APPLICATION_JSON] as Set
spec.produces == [MediaType.APPLICATION_JSON] as Set
spec.supportedMethods == [RequestMethod.GET] as Set
spec.handlerMethod.method == RestfulController.declaredMethods.find {it.name == "index" }
(AController.methods.findAll {it.name == "index" }).contains(spec.handlerMethod.method)
spec.path == "/a"

and: "Parameters match"
Expand Down