From 5b823097be938e286263995383adb98add9a157b Mon Sep 17 00:00:00 2001 From: Tamas Bunth <tamas.bunth@collabora.co.uk> Date: Mon, 5 Mar 2018 21:39:05 +0100 Subject: [PATCH] Fix swagger UI --- api.iml | 41 ++++++++++--------- pom.xml | 33 +++++++++++++++ readme.md | 9 +++- src/main/kotlin/mobildata/ApiApplication.kt | 15 +++++-- .../kotlin/mobildata/web/SwaggerConfig.kt | 15 ++++--- 5 files changed, 82 insertions(+), 31 deletions(-) diff --git a/api.iml b/api.iml index 357b9e2..5644b7c 100644 --- a/api.iml +++ b/api.iml @@ -59,16 +59,16 @@ <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-to-slf4j:2.10.0" level="project" /> <orderEntry type="library" name="Maven: org.apache.logging.log4j:log4j-api:2.10.0" level="project" /> <orderEntry type="library" name="Maven: org.slf4j:jul-to-slf4j:1.7.25" level="project" /> - <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.1" level="project" /> + <orderEntry type="library" name="Maven: javax.annotation:javax.annotation-api:1.3.2" level="project" /> <orderEntry type="library" scope="RUNTIME" name="Maven: org.yaml:snakeyaml:1.19" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-aop:2.0.0.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.4.BUILD-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-aop:5.0.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.aspectj:aspectjweaver:1.8.13" level="project" /> <orderEntry type="library" name="Maven: org.springframework.boot:spring-boot-starter-jdbc:2.0.0.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.7" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.2.13.Final" level="project" /> - <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.1.Final" level="project" /> + <orderEntry type="library" name="Maven: com.zaxxer:HikariCP:2.7.8" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-jdbc:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.hibernate:hibernate-core:5.2.14.Final" level="project" /> + <orderEntry type="library" name="Maven: org.jboss.logging:jboss-logging:3.3.2.Final" level="project" /> <orderEntry type="library" name="Maven: org.hibernate.javax.persistence:hibernate-jpa-2.1-api:1.0.0.Final" level="project" /> <orderEntry type="library" name="Maven: org.javassist:javassist:3.22.0-GA" level="project" /> <orderEntry type="library" name="Maven: antlr:antlr:2.7.7" level="project" /> @@ -76,13 +76,13 @@ <orderEntry type="library" name="Maven: dom4j:dom4j:1.6.1" level="project" /> <orderEntry type="library" name="Maven: org.hibernate.common:hibernate-commons-annotations:5.0.1.Final" level="project" /> <orderEntry type="library" name="Maven: javax.transaction:javax.transaction-api:1.2" level="project" /> - <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:2.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-orm:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-aspects:5.0.4.BUILD-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.data:spring-data-jpa:2.0.5.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework.data:spring-data-commons:2.0.5.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-orm:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-context:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-tx:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-beans:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-aspects:5.0.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.mindrot:jbcrypt:0.4" level="project" /> <orderEntry type="library" name="Maven: io.jsonwebtoken:jjwt:0.7.0" level="project" /> <orderEntry type="library" name="Maven: com.fasterxml.jackson.core:jackson-databind:2.9.4" level="project" /> @@ -98,9 +98,9 @@ <orderEntry type="library" name="Maven: org.apache.tomcat.embed:tomcat-embed-websocket:8.5.28" level="project" /> <orderEntry type="library" name="Maven: org.hibernate.validator:hibernate-validator:6.0.7.Final" level="project" /> <orderEntry type="library" name="Maven: javax.validation:validation-api:2.0.1.Final" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.4.BUILD-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-web:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-webmvc:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-expression:5.0.4.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jre8:1.1.2" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-stdlib-jre7:1.1.2" level="project" /> <orderEntry type="library" name="Maven: org.jetbrains.kotlin:kotlin-reflect:1.1.2" level="project" /> @@ -116,7 +116,7 @@ <orderEntry type="library" scope="TEST" name="Maven: net.minidev:accessors-smart:1.2" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: org.ow2.asm:asm:5.0.4" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: junit:junit:4.12" level="project" /> - <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.9.0" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.assertj:assertj-core:3.9.1" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: org.mockito:mockito-core:2.15.0" level="project" /> <orderEntry type="library" name="Maven: net.bytebuddy:byte-buddy:1.7.10" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: net.bytebuddy:byte-buddy-agent:1.7.10" level="project" /> @@ -125,9 +125,9 @@ <orderEntry type="library" scope="TEST" name="Maven: org.hamcrest:hamcrest-library:1.3" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: org.skyscreamer:jsonassert:1.5.0" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: com.vaadin.external.google:android-json:0.0.20131108.vaadin1" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.4.BUILD-SNAPSHOT" level="project" /> - <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.0.4.BUILD-SNAPSHOT" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-core:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" name="Maven: org.springframework:spring-jcl:5.0.4.RELEASE" level="project" /> + <orderEntry type="library" scope="TEST" name="Maven: org.springframework:spring-test:5.0.4.RELEASE" level="project" /> <orderEntry type="library" scope="TEST" name="Maven: org.xmlunit:xmlunit-core:2.5.1" level="project" /> <orderEntry type="library" name="Maven: org.postgresql:postgresql:9.4-1206-jdbc42" level="project" /> <orderEntry type="library" name="Maven: com.netflix.feign:feign-core:8.18.0" level="project" /> @@ -150,5 +150,6 @@ <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-core:1.2.0.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.springframework.plugin:spring-plugin-metadata:1.2.0.RELEASE" level="project" /> <orderEntry type="library" name="Maven: org.mapstruct:mapstruct:1.1.0.Final" level="project" /> + <orderEntry type="library" name="Maven: io.springfox:springfox-swagger-ui:2.6.1" level="project" /> </component> </module> \ No newline at end of file diff --git a/pom.xml b/pom.xml index fa711de..d42b505 100644 --- a/pom.xml +++ b/pom.xml @@ -90,6 +90,11 @@ <artifactId>springfox-swagger2</artifactId> <version>2.7.0</version> </dependency> + <dependency> + <groupId>io.springfox</groupId> + <artifactId>springfox-swagger-ui</artifactId> + <version>2.6.1</version> + </dependency> </dependencies> <build> @@ -134,6 +139,34 @@ </dependency> </dependencies> </plugin> + <plugin> + <groupId>com.github.kongchen</groupId> + <artifactId>swagger-maven-plugin</artifactId> + <version>3.1.5</version> + <configuration> + <apiSources> + <apiSource> + <springmvc>true</springmvc> + <locations>com.sandy2friends.test.web.rest</locations> + <info> + <title>REST API</title> + <version>1</version> + <description>REST API</description> + </info> + <swaggerDirectory>swagger</swaggerDirectory> + <swaggerFileName>rest api</swaggerFileName> + </apiSource> + </apiSources> + </configuration> + <executions> + <execution> + <phase>compile</phase> + <goals> + <goal>generate</goal> + </goals> + </execution> + </executions> + </plugin> </plugins> </build> diff --git a/readme.md b/readme.md index fb0a112..a7583dc 100644 --- a/readme.md +++ b/readme.md @@ -58,7 +58,12 @@ It uses PostgreSQL database. # Build and run -You need Java and maven installed. +Before running the server, a database has to be configured. With the current configuration, a PostgreSQL database +is configured at the following url: `jdbc:postgresql://localhost:5432/mobildata` + +You need Java and maven installed. Build & run the server with the following command: mvn spring-boot:run - open http://localhost:8080 + +For the first run, you may have to uncomment `spring.jpa.generate-ddl=true` and comment out `spring.jpa.hibernate.ddl-auto=create-drop` + diff --git a/src/main/kotlin/mobildata/ApiApplication.kt b/src/main/kotlin/mobildata/ApiApplication.kt index ab1474d..448f139 100644 --- a/src/main/kotlin/mobildata/ApiApplication.kt +++ b/src/main/kotlin/mobildata/ApiApplication.kt @@ -17,6 +17,9 @@ import org.springframework.validation.beanvalidation.MethodValidationPostProcess import org.springframework.web.servlet.config.annotation.* import com.fasterxml.jackson.annotation.JsonInclude import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry + + @@ -31,6 +34,13 @@ class ApiApplication : WebMvcConfigurer { registry!!.addInterceptor(exposeResponseInterceptor()) } + override fun addResourceHandlers(registry: ResourceHandlerRegistry?) { + registry!!.addResourceHandler("swagger-ui.html") + .addResourceLocations("classpath:/META-INF/resources/") + registry.addResourceHandler("/webjars/**") + .addResourceLocations("classpath:/META-INF/resources/webjars/") + } + override fun addCorsMappings(registry: CorsRegistry?) { registry!!.addMapping("/api/**") .allowedOrigins("*") @@ -46,9 +56,8 @@ class ApiApplication : WebMvcConfigurer { registry.addRedirectViewController("/documentation/configuration/ui", "/configuration/ui") registry.addRedirectViewController("/documentation/configuration/security", "/configuration/security") registry.addRedirectViewController("/documentation/swagger-resources", "/swagger-resources") - // no swagger-ui used - //registry.addRedirectViewController("/documentation", "/api/swagger-ui.html") - //registry.addRedirectViewController("/documentation/", "/api/swagger-ui.html") + registry.addRedirectViewController("/documentation", "/api/swagger-ui.html") + registry.addRedirectViewController("/documentation/", "/api/swagger-ui.html") } @Bean diff --git a/src/main/kotlin/mobildata/web/SwaggerConfig.kt b/src/main/kotlin/mobildata/web/SwaggerConfig.kt index 6787987..f7d1dad 100644 --- a/src/main/kotlin/mobildata/web/SwaggerConfig.kt +++ b/src/main/kotlin/mobildata/web/SwaggerConfig.kt @@ -7,12 +7,8 @@ import springfox.documentation.builders.RequestHandlerSelectors import springfox.documentation.spi.DocumentationType import springfox.documentation.spring.web.plugins.Docket import springfox.documentation.swagger2.annotations.EnableSwagger2 -import org.springframework.web.servlet.config.annotation.ViewControllerRegistry -import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry - - - - +import springfox.documentation.builders.ApiInfoBuilder +import springfox.documentation.service.ApiInfo @Configuration @@ -27,4 +23,11 @@ class SwaggerConfig { .build() } + @Bean + fun apiInfo(): ApiInfo { + val builder : ApiInfoBuilder = ApiInfoBuilder(); + builder.title("My Application API through Swagger UI").version("1.0").license("(C) Copyright Test") + .description("List of all the APIs of My Application App through Swagger UI"); + return builder.build(); + } } \ No newline at end of file -- GitLab