diff --git a/pom.xml b/pom.xml index 614d0f8..c5f25d8 100644 --- a/pom.xml +++ b/pom.xml @@ -2,15 +2,17 @@ 4.0.0 - eu.dnetlib uoa-admin-tools 2.0.5-SNAPSHOT war uoa-admin-tools + + scm:git:gitea@code-repo.d4science.org:MaDgIK/uoa-monitor-service.git + eu.dnetlib uoa-spring-boot-parent - 1.0.0-SNAPSHOT + 1.0.0 UTF-8 @@ -36,7 +38,19 @@ eu.dnetlib uoa-admin-tools-library - 1.0.6-SNAPSHOT + 1.0.6 + + + + io.springfox + springfox-swagger2 + ${swagger-version} + + + + io.springfox + springfox-swagger-ui + ${swagger-version} diff --git a/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java b/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java index c9e5dee..808e13e 100644 --- a/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java +++ b/src/main/java/eu/dnetlib/uoaadmintools/UoaAdminToolsApplication.java @@ -2,6 +2,7 @@ package eu.dnetlib.uoaadmintools; import com.fasterxml.jackson.databind.ObjectMapper; import eu.dnetlib.uoaadmintools.configuration.GlobalVars; +import eu.dnetlib.uoaadmintools.configuration.properties.APIProperties; import eu.dnetlib.uoaadmintools.configuration.properties.BrowserCacheConfig; import eu.dnetlib.uoaadmintools.configuration.properties.ManagersApiConfig; import eu.dnetlib.uoaadmintools.configuration.properties.MongoConfig; @@ -24,7 +25,7 @@ import org.springframework.web.client.RestTemplate; @PropertySource("classpath:admintools.properties"), @PropertySource(value = "classpath:dnet-override.properties", ignoreResourceNotFound = true) }) -@EnableConfigurationProperties({MongoConfig.class, ManagersApiConfig.class, BrowserCacheConfig.class, GlobalVars.class}) +@EnableConfigurationProperties({MongoConfig.class, ManagersApiConfig.class, BrowserCacheConfig.class, GlobalVars.class, APIProperties.class}) @Import({AuthorizationConfiguration.class, UoaAdminToolsLibraryConfiguration.class}) public class UoaAdminToolsApplication { diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/SwaggerConfig.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/SwaggerConfig.java new file mode 100644 index 0000000..8f31d38 --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintools/configuration/SwaggerConfig.java @@ -0,0 +1,86 @@ +package eu.dnetlib.uoaadmintools.configuration; + +import eu.dnetlib.uoaadmintools.configuration.properties.APIProperties; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Profile; +import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry; +import org.springframework.web.servlet.config.annotation.ViewControllerRegistry; +import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; +import springfox.documentation.builders.ApiInfoBuilder; +import springfox.documentation.builders.ParameterBuilder; +import springfox.documentation.builders.PathSelectors; +import springfox.documentation.builders.RequestHandlerSelectors; +import springfox.documentation.schema.ModelRef; +import springfox.documentation.service.ApiInfo; +import springfox.documentation.service.Parameter; +import springfox.documentation.spi.DocumentationType; +import springfox.documentation.spring.web.plugins.Docket; +import springfox.documentation.swagger2.annotations.EnableSwagger2; + +import java.util.Collections; +import java.util.List; + +/** + * Swagger configuration class + */ +@Configuration +@Profile({"swagger"}) +@EnableSwagger2 +public class SwaggerConfig extends WebMvcConfigurerAdapter { + + private final APIProperties apiProperties; + + @Autowired + public SwaggerConfig(APIProperties apiProperties) { + this.apiProperties = apiProperties; + } + + + @Bean + public Docket createRestApi() { + return new Docket(DocumentationType.SWAGGER_2) +// .globalOperationParameters(globalParameterList()) + .apiInfo(apiInfo()) + .select() + .apis(RequestHandlerSelectors.any()) + .paths(PathSelectors.any()) + .build(); + } + + private ApiInfo apiInfo() { + return new ApiInfoBuilder() + .title(this.apiProperties.getTitle()) + .description(this.apiProperties.getDescription()) + .version(this.apiProperties.getVersion()) + .build(); + } + + private List globalParameterList() { + Parameter authTokenHeader = new ParameterBuilder() + .name("Session") // name of the header + .modelRef(new ModelRef("string")) // data-type of the header + .required(false) + .parameterType("header") + .description("Session ID") + .build(); + return Collections.singletonList(authTokenHeader); + } + + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addRedirectViewController("/v2/api-docs", "/v2/api-docs"); + registry.addRedirectViewController("/swagger-resources/configuration/ui", "/swagger-resources/configuration/ui"); + registry.addRedirectViewController("/swagger-resources/configuration/security", "/swagger-resources/configuration/security"); + registry.addRedirectViewController("/swagger-resources", "/swagger-resources"); + } + + @Override + public void addResourceHandlers(ResourceHandlerRegistry registry) { + registry.addResourceHandler("/swagger-ui.html**").addResourceLocations("classpath:/META-INF/resources/swagger-ui.html"); + registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/"); + } + +} + diff --git a/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/APIProperties.java b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/APIProperties.java new file mode 100644 index 0000000..41c16dd --- /dev/null +++ b/src/main/java/eu/dnetlib/uoaadmintools/configuration/properties/APIProperties.java @@ -0,0 +1,38 @@ +package eu.dnetlib.uoaadmintools.configuration.properties; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +@ConfigurationProperties("api") +public class APIProperties { + + private String title; + private String description; + private String version; + + public APIProperties() { + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getVersion() { + return version; + } + + public void setVersion(String version) { + this.version = version; + } +} diff --git a/src/main/resources/admintools.properties b/src/main/resources/admintools.properties index 01e6a0b..fee81cb 100644 --- a/src/main/resources/admintools.properties +++ b/src/main/resources/admintools.properties @@ -50,3 +50,8 @@ admintool.cache.url = https://beta.{community}.openaire.eu/purge/ #admintool.mongodb.database=openaireconnect #admintool.mongodb.username=dnet8480 #admintool.mongodb.password= + +#static properties +api.title = Uoa Admin Tools Documentation Swagger +api.description = Uoa Admin Tools is a service which is saving and serving helptexts and dynamic content +api.version = ${project.version} \ No newline at end of file diff --git a/src/main/resources/log4j2.xml b/src/main/resources/log4j2.xml index 4ec29fc..ad623b7 100644 --- a/src/main/resources/log4j2.xml +++ b/src/main/resources/log4j2.xml @@ -29,11 +29,11 @@ - - - - + + + + \ No newline at end of file