com.griddynamics.jagger.jaas.config.SwaggerConfig.java Source code

Java tutorial

Introduction

Here is the source code for com.griddynamics.jagger.jaas.config.SwaggerConfig.java

Source

package com.griddynamics.jagger.jaas.config;

import com.google.common.base.Predicates;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.bind.annotation.RequestMethod;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.PathSelectors;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.builders.ResponseMessageBuilder;
import springfox.documentation.schema.ModelRef;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.service.ResponseMessage;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import java.util.ArrayList;
import java.util.List;

@EnableSwagger2
@Configuration
/**
 * Configures Swagger REST API docs. Available at /swagger-ui.html url.
 */
public class SwaggerConfig {

    @Value("${application.version}")
    private String version;

    /**
     * Docket object for swagger configuration.
     *
     * @return Docket object.
     */
    @Bean
    public Docket docket() {
        return new Docket(DocumentationType.SWAGGER_2).apiInfo(apiInfo()).select()
                .apis(RequestHandlerSelectors.any()).paths(Predicates.not(PathSelectors.regex("/error"))).build()
                .useDefaultResponseMessages(false).globalResponseMessage(RequestMethod.GET, responseMessages());
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("Jagger as a Service")
                .description("JaaS in a main artifact in Jagger 2. It is an always listening component.\n\n"
                        + "It provides different information through its REST API.\n\n"
                        + "JaaS artifact packed as an all in jar (with all dependencies inside) with embedded Tomcat.\n\n"
                        + "JaaS based on Spring Boot, so its properties can be configured using one of Spring Boot ways"
                        + "by default JaaS is listening on port 8080. To change it just override property \"server.port\".")
                .license("Apache License, Version 2.0")
                .licenseUrl("https://github.com/griddynamics/jagger/blob/master/license.txt").version(version)
                .build();
    }

    private List<ResponseMessage> responseMessages() {
        List<ResponseMessage> responseMessages = new ArrayList<>();
        responseMessages.add(new ResponseMessageBuilder().code(500)
                .message("500 - Internal server error.\n\n"
                        + "There is a problem with the resource you are looking for, and it can not be displayed.")
                .responseModel(new ModelRef("Error")).build());
        return responseMessages;
    }
}