package eu.dnetlib; import org.springdoc.core.GroupedOpenApi; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration; import org.springframework.cache.annotation.EnableCaching; import org.springframework.context.annotation.Bean; import org.springframework.scheduling.annotation.EnableScheduling; import eu.dnetlib.DnetOpenaireExporterProperties.Swagger; import eu.dnetlib.common.app.AbstractDnetApp; import eu.dnetlib.openaire.community.CommunityApiController; import eu.dnetlib.openaire.context.ContextApiController; import eu.dnetlib.openaire.dsm.DsmApiController; import eu.dnetlib.openaire.funders.FundersApiController; import eu.dnetlib.openaire.info.InfoController; import eu.dnetlib.openaire.project.ProjectsController; import io.swagger.v3.oas.models.ExternalDocumentation; import io.swagger.v3.oas.models.OpenAPI; import io.swagger.v3.oas.models.info.Info; import io.swagger.v3.oas.models.info.License; @EnableCaching @EnableScheduling @SpringBootApplication @EnableAutoConfiguration(exclude = { SolrAutoConfiguration.class }) public class DNetOpenaireExporterApplication extends AbstractDnetApp { public static final String V1 = "1.0.0"; public static void main(final String[] args) throws Exception { SpringApplication.run(DNetOpenaireExporterApplication.class, args); } @Override protected void configSwagger(final OpenAPI openApi) { openApi.info(new Info().title("D-Net Exporter APIs") .description("APIs documentation") .version(V1) .license(new License().name("Apache 2.0").url("http://www.apache.org/licenses/LICENSE-2.0"))) .externalDocs(new ExternalDocumentation() .description("SpringShop Wiki Documentation") .url("https://springshop.wiki.github.org/docs")); } @Bean public GroupedOpenApi dsm() { return newGroupedOpenApi("Datasource Manager", DsmApiController.class.getPackage().getName()); } @Bean public GroupedOpenApi projects() { return newGroupedOpenApi("OpenAIRE Projects", ProjectsController.class.getPackage().getName()); } @Bean public GroupedOpenApi funders() { return newGroupedOpenApi("OpenAIRE Funders", FundersApiController.class.getPackage().getName()); } @Bean public GroupedOpenApi communities() { return newGroupedOpenApi("OpenAIRE Communities", CommunityApiController.class.getPackage().getName()); } @Bean public GroupedOpenApi contexts() { return newGroupedOpenApi("OpenAIRE Contexts", ContextApiController.class.getPackage().getName()); } @Bean public GroupedOpenApi info() { return newGroupedOpenApi("OpenAIRE Info", InfoController.class.getPackage().getName()); } private GroupedOpenApi newGroupedOpenApi(final String groupName, final String controllerPackage, final Swagger swag, final String version) { return GroupedOpenApi.builder() .group(groupName) .packagesToScan(controllerPackage) .build(); } }