com.approdorix.user.UsersApplication.java Source code

Java tutorial

Introduction

Here is the source code for com.approdorix.user.UsersApplication.java

Source

package com.approdorix.user;

import com.fasterxml.jackson.annotation.JsonCreator;
import com.fasterxml.jackson.databind.Module;
import com.fasterxml.jackson.module.paramnames.ParameterNamesModule;
import com.google.common.base.Predicate;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Import;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.service.ApiInfo;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

import static com.google.common.base.Predicates.or;
import static springfox.documentation.builders.PathSelectors.regex;

@EnableSwagger2
@SpringBootApplication
@Import({ SecurityConfiguration.class })
public class UsersApplication {

    public static void main(String[] args) {
        SpringApplication.run(UsersApplication.class, args);
    }

    @Bean
    public Module parameterNamesModule() {
        return new ParameterNamesModule(JsonCreator.Mode.PROPERTIES);
    }

    @Bean
    public Docket fullApi() {
        return new Docket(DocumentationType.SWAGGER_2).groupName("full-api").apiInfo(apiInfo()).select()
                .paths(apiPaths()).build();
    }

    private Predicate<String> apiPaths() {
        return or(regex("/api/api.*"), regex("/api/user.*"));
    }

    private ApiInfo apiInfo() {
        return new ApiInfoBuilder().title("Users API").description("This is Identity Management API.")
                .termsOfServiceUrl("http://approdorix.com/").contact("piotr@pietrzak.me")
                .license("Apache License Version 2.0")
                .licenseUrl("https://github.com/piotrpietrzak/approdorix-users/blob/master/LICENSE").version("2.0")
                .build();
    }
}