Project

General

Profile

1
package eu.dnetlib.swagger.configuration;
2

    
3
import eu.dnetlib.common.rmi.DNetRestDocumentation;
4
import org.springframework.beans.factory.annotation.Value;
5
import org.springframework.context.annotation.Bean;
6
import org.springframework.context.annotation.Configuration;
7
import springfox.documentation.builders.ApiInfoBuilder;
8
import springfox.documentation.builders.RequestHandlerSelectors;
9
import springfox.documentation.service.ApiInfo;
10
import springfox.documentation.service.Contact;
11
import springfox.documentation.spi.DocumentationType;
12
import springfox.documentation.spring.web.plugins.Docket;
13
import springfox.documentation.swagger2.annotations.EnableSwagger2;
14

    
15
@Configuration
16
@EnableSwagger2
17
public class SwaggerDocumentationConfig {
18

    
19
    @Value("${api.rest.contact.name}")
20
    private String contactName;
21

    
22
    @Value("${api.rest.contact.url}")
23
    private String contactUrl;
24

    
25
    @Value("${api.rest.contact.email}")
26
    private String contactEmail;
27

    
28
	@Value("${api.rest.title}")
29
	private String title;
30

    
31
	@Value("${api.rest.description}")
32
	private String description;
33

    
34
	@Value("${api.rest.license}")
35
	private String license;
36
	@Value("${api.rest.license.url}")
37
	private String licenseUrl;
38

    
39
    @Bean
40
    public Docket customImplementation(){
41
        return new Docket(DocumentationType.SWAGGER_2)
42
                .select()
43
			        //.apis(RequestHandlerSelectors.any())
44
                    //.apis(RequestHandlerSelectors.basePackage("eu.dnetlib.**.controller.*"))
45
		            //.apis(RequestHandlerSelectors.withClassAnnotation(RestController.class))
46
		            .apis(RequestHandlerSelectors.withClassAnnotation(DNetRestDocumentation.class))
47
                    //.paths(PathSelectors.ant("/ds/**"))
48
                    .build()
49
                .directModelSubstitute(org.joda.time.LocalDate.class, java.sql.Date.class)
50
                .directModelSubstitute(org.joda.time.DateTime.class, java.util.Date.class)
51
                .apiInfo(apiInfo());
52
    }
53

    
54
	private ApiInfo apiInfo() {
55
		return new ApiInfoBuilder()
56
				.title(title)
57
				.description(description)
58
				.license(license)
59
				.licenseUrl(licenseUrl)
60
				.termsOfServiceUrl("")
61
				.version("1.0.0")
62
				.contact(new Contact(contactName, contactUrl, contactEmail))
63
				.build();
64
	}
65

    
66
}
(5-5/5)