Uplift of PMS from ONAP
[nonrtric.git] / enrichment-coordinator-service / src / main / java / org / oransc / enrichment / SwaggerConfig.java
index 6fa38aa..fdfc0c9 100644 (file)
 
 package org.oransc.enrichment;
 
-import com.fasterxml.classmate.TypeResolver;
-import com.google.common.base.Predicates;
+import io.swagger.v3.oas.annotations.OpenAPIDefinition;
+import io.swagger.v3.oas.annotations.info.Info;
+import io.swagger.v3.oas.annotations.info.License;
+import io.swagger.v3.oas.annotations.tags.Tag;
 
-import org.springframework.context.annotation.Bean;
-import org.springframework.context.annotation.Configuration;
-import org.springframework.web.servlet.config.annotation.ResourceHandlerRegistry;
-import org.springframework.web.servlet.config.annotation.WebMvcConfigurationSupport;
-
-import springfox.documentation.builders.ApiInfoBuilder;
-import springfox.documentation.builders.PathSelectors;
-import springfox.documentation.builders.RequestHandlerSelectors;
-import springfox.documentation.service.ApiInfo;
-import springfox.documentation.spi.DocumentationType;
-import springfox.documentation.spring.web.plugins.Docket;
-import springfox.documentation.swagger2.annotations.EnableSwagger2;
+import org.oransc.enrichment.controllers.StatusController;
+import org.oransc.enrichment.controllers.consumer.ConsumerConsts;
+import org.oransc.enrichment.controllers.producer.ProducerConsts;
 
 /**
- * Swagger configuration class that uses swagger2 documentation type and scans
+ * Swagger configuration class that uses swagger documentation type and scans
  * all the controllers. To access the swagger gui go to
  * http://ip:port/swagger-ui.html
  */
-@Configuration
-@EnableSwagger2
-public class SwaggerConfig extends WebMvcConfigurationSupport {
-
-    static final String API_TITLE = "Enrichment Data service";
-    static final String DESCRIPTION = "This page lists all the rest apis for the service.";
-    static final String VERSION = "1.0";
-    @SuppressWarnings("squid:S1075") // Refactor your code to get this URI from a customizable parameter.
-    static final String RESOURCES_PATH = "classpath:/META-INF/resources/";
-    static final String WEBJARS_PATH = RESOURCES_PATH + "webjars/";
-    static final String SWAGGER_UI = "swagger-ui.html";
-    static final String WEBJARS = "/webjars/**";
 
-    /**
-     * Gets the API info.
-     *
-     * @return the API info.
-     */
-    @Bean
-    public Docket api(TypeResolver resolver) {
-        return new Docket(DocumentationType.SWAGGER_2) //
-            .apiInfo(apiInfo()) //
-            .select() //
-            .apis(RequestHandlerSelectors.any()) //
-            .paths(PathSelectors.any()) //
-            .paths(Predicates.not(PathSelectors.regex("/error"))) // this endpoint is not implemented, but was
-                                                                  // visible for Swagger
-            .paths(Predicates.not(PathSelectors.regex("/actuator.*"))) // this endpoint is implemented by spring
-                                                                       // framework, exclude for now
-            .build();
+@OpenAPIDefinition( //
+    tags = {@Tag(name = ConsumerConsts.CONSUMER_API_NAME, description = ConsumerConsts.CONSUMER_API_DESCRIPTION),
+        @Tag(
+            name = ConsumerConsts.CONSUMER_API_CALLBACKS_NAME,
+            description = ConsumerConsts.CONSUMER_API_CALLBACKS_DESCRIPTION),
+        @Tag(
+            name = ProducerConsts.PRODUCER_API_CALLBACKS_NAME,
+            description = ProducerConsts.PRODUCER_API_CALLBACKS_DESCRIPTION),
+        @Tag(name = ProducerConsts.PRODUCER_API_NAME, description = ProducerConsts.PRODUCER_API_DESCRIPTION), //
+        @Tag(name = StatusController.API_NAME, description = StatusController.API_DESCRIPTION)}, //
+    info = @Info(
+        title = "Enrichment Information Service", //
+        version = "1.0", //
+        description = SwaggerConfig.DESCRIPTION, //
+        license = @License(
+            name = "Copyright (C) 2020 Nordix Foundation. Licensed under the Apache License.",
+            url = "http://www.apache.org/licenses/LICENSE-2.0")))
+public class SwaggerConfig {
+    private SwaggerConfig() {
     }
 
-    private static ApiInfo apiInfo() {
-        return new ApiInfoBuilder() //
-            .title(API_TITLE) //
-            .description(DESCRIPTION) //
-            .version(VERSION) //
-            .build();
-    }
-
-    @Override
-    protected void addResourceHandlers(ResourceHandlerRegistry registry) {
-        registry.addResourceHandler(SWAGGER_UI) //
-            .addResourceLocations(RESOURCES_PATH);
+    static final String API_TITLE = "Enrichment Data service";
 
-        registry.addResourceHandler(WEBJARS) //
-            .addResourceLocations(WEBJARS_PATH);
-    }
+    static final String DESCRIPTION = "<h1>API documentation</h1>" //
+        + "<h2>General</h2>" //
+        + "<p>" //
+        + "  The service is mainly a broker between data producers and data consumers. A data producer has the ability to producer one or several type of data (EI type). One type of data can be produced by zero to many producers. <br /><br />A data consumer can have several active data subscriptions (EI job). One EI job consists of the type of data to produce and additional parameters for filtering of the data. These parameters are different for different data types." //
+        + "</p>" //
+        + "<h2>APIs provided by the service</h2>" //
+        + "<h4>A1-EI</h4>" //
+        + "<p>" //
+        + "  This API is between Near-RT RIC, which is a data consumer, and the Non-RT RIC. " //
+        + "</p>" + "<h4>Data producer API</h4>" //
+        + "<p>"
+        + "  This API is between data producers and this service. It is divivided into two parts, where one is provided by this service (registration) and one part is provided by the data producer."
+        + "</p>" //
+        + "<h4>EI Service status</h4>" //
+        + "<p>" //
+        + "  This API provides a means to monitor the service." //
+        + "</p>";
 
 }