update swagger to v3 open api version 32/119332/1
authorBOSLET, CORY <cory.boslet@att.com>
Mon, 15 Mar 2021 15:25:54 +0000 (11:25 -0400)
committerAT&T Open Source <g22940@att.com>
Mon, 15 Mar 2021 15:25:54 +0000 (11:25 -0400)
Upgraded all projects and services to use the new v3 swagger,
discontinued use of old swagger.
Updated unit test to account for swagger change and removed apis

Issue-ID: SO-3587
Signed-off-by: AT&T Open Source <g22940@att.com>
Change-Id: Iddcfe92f8ab240691f92ce2bf23e1ab2ad159780

15 files changed:
adapters/mso-openstack-adapters/pom.xml
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/cloudregion/CloudRegionRestV1.java
adapters/mso-openstack-adapters/src/main/java/org/onap/so/adapters/openstack/CXFConfiguration.java
adapters/mso-requests-db-adapter/pom.xml
adapters/mso-requests-db-adapter/src/main/java/org/onap/so/adapters/requestsdb/application/CXFConfiguration.java
adapters/mso-sdnc-adapter/pom.xml
adapters/mso-sdnc-adapter/src/main/java/org/onap/so/adapters/sdnc/CXFConfiguration.java
asdc-controller/pom.xml
asdc-controller/src/main/java/org/onap/so/asdc/JerseyConfiguration.java
bpmn/so-bpmn-infrastructure-flows/pom.xml
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/CreateVcpeResCustServiceSimplifiedTest.java
bpmn/so-bpmn-infrastructure-flows/src/test/java/org/onap/so/bpmn/infrastructure/process/GenericPnfSoftwareUpgradeTest.java
bpmn/so-bpmn-tasks/pom.xml
graph-inventory/fluent-builder-maven-plugin/pom.xml
pom.xml

index 32448d3..6dcc1a4 100644 (file)
     </dependency>
     <dependency>
       <groupId>org.apache.cxf</groupId>
-      <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
+      <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
index 6cf42e1..49cc019 100644 (file)
@@ -39,15 +39,18 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
+import io.swagger.v3.oas.annotations.OpenAPIDefinition;
+import io.swagger.v3.oas.annotations.Operation;
+import io.swagger.v3.oas.annotations.Parameter;
+import io.swagger.v3.oas.annotations.info.Info;
+import io.swagger.v3.oas.annotations.media.Content;
+import io.swagger.v3.oas.annotations.media.Schema;
+import io.swagger.v3.oas.annotations.responses.ApiResponse;
+import io.swagger.v3.oas.annotations.responses.ApiResponses;
 
 
 @Path("/v1/cloud-region")
-@Api(value = "/v1/cloud-region", description = "root of cloud region adapter")
+@OpenAPIDefinition(info = @Info(title = "/v1/cloud-region", description = "root of cloud region adapter"))
 @Component
 public class CloudRegionRestV1 {
     private static Logger logger = LoggerFactory.getLogger(CloudRegionRestV1.class);
@@ -58,13 +61,12 @@ public class CloudRegionRestV1 {
     @POST
     @Consumes({MediaType.APPLICATION_JSON})
     @Produces({MediaType.APPLICATION_JSON})
-    @ApiOperation(value = "CreateCloudRegion", response = Response.class,
-            notes = "Create a cloud site in MSO and Region In AAI")
-    @ApiResponses({@ApiResponse(code = 201, message = "Cloud Region has been created"),
-            @ApiResponse(code = 500, message = "Create Cloud Region has failed")})
+    @Operation(description = "CreateCloudRegion", summary = "Create a cloud site in MSO and Region In AAI")
+    @ApiResponses({@ApiResponse(responseCode = "201", description = "Cloud Region has been created"),
+            @ApiResponse(responseCode = "500", description = "Create Cloud Region has failed")})
     public Response createCloudRegion(
-            @ApiParam(value = "cloud-region-id", required = true) @PathParam("cloud-region-id") String cloudRegionId,
-            @ApiParam(value = "CloudSite", required = true) final CloudSite cloudSite) {
+            @Parameter(name = "cloud-region-id", required = true) @PathParam("cloud-region-id") String cloudRegionId,
+            @Parameter(name = "CloudSite", required = true) final CloudSite cloudSite) {
         cloudRestImpl.createCloudRegion(cloudSite);
         return Response.status(HttpStatus.SC_CREATED).build();
     }
@@ -73,12 +75,12 @@ public class CloudRegionRestV1 {
     @Path("{cloud-region-id}/{cloud-owner}")
     @Consumes({MediaType.APPLICATION_JSON})
     @Produces({MediaType.APPLICATION_JSON})
-    @ApiOperation(value = "CreateCloudRegion", response = Response.class, notes = "Delete an cloud Region in SO")
-    @ApiResponses({@ApiResponse(code = 204, message = "cloud Region has been deleted"),
-            @ApiResponse(code = 500, message = "Cloud Region delete has failed")})
+    @Operation(description = "CreateCloudRegion", summary = "Delete an cloud Region in SO")
+    @ApiResponses({@ApiResponse(responseCode = "204", description = "cloud Region has been deleted"),
+            @ApiResponse(responseCode = "500", description = "Cloud Region delete has failed")})
     public Response deleteCloudRegion(
-            @ApiParam(value = "cloud-region-id", required = true) @PathParam("cloud-region-id") String cloudRegionId,
-            @ApiParam(value = "cloud-owner", required = true) @PathParam("cloud-owner") String cloudOwner) {
+            @Parameter(name = "cloud-region-id", required = true) @PathParam("cloud-region-id") String cloudRegionId,
+            @Parameter(name = "cloud-owner", required = true) @PathParam("cloud-owner") String cloudOwner) {
         cloudRestImpl.deleteCloudRegion(cloudRegionId);
         return Response.status(HttpStatus.SC_NO_CONTENT).build();
     }
@@ -87,13 +89,13 @@ public class CloudRegionRestV1 {
     @Path("{cloud-region-id}/{cloud-owner}")
     @Consumes({MediaType.APPLICATION_JSON})
     @Produces({MediaType.APPLICATION_JSON})
-    @ApiOperation(value = "CreateCloudRegion", response = Response.class, notes = "Update an existing Cloud Region")
-    @ApiResponses({@ApiResponse(code = 200, message = "Cloud Region has been updated"),
-            @ApiResponse(code = 500, message = "Update Cloud Region has failed examine entity object for details")})
+    @Operation(description = "CreateCloudRegion", summary = "Update an existing Cloud Region")
+    @ApiResponses({@ApiResponse(responseCode = "200", description = "Cloud Region has been updated"), @ApiResponse(
+            responseCode = "500", description = "Update Cloud Region has failed examine entity object for details")})
     public Response updateCloudRegion(
-            @ApiParam(value = "cloud-region-id", required = true) @PathParam("cloud-region-id") String cloudRegionId,
-            @ApiParam(value = "cloud-owner", required = true) @PathParam("cloud-owner") String cloudOwner,
-            @ApiParam(value = "CloudSite", required = true) final CloudSite cloudSite) {
+            @Parameter(name = "cloud-region-id", required = true) @PathParam("cloud-region-id") String cloudRegionId,
+            @Parameter(name = "cloud-owner", required = true) @PathParam("cloud-owner") String cloudOwner,
+            @Parameter(name = "CloudSite", required = true) final CloudSite cloudSite) {
         cloudRestImpl.updateCloudRegion(cloudSite);
         return Response.status(HttpStatus.SC_OK).build();
     }
index 1446047..942da29 100644 (file)
 package org.onap.so.adapters.openstack;
 
 import java.util.Arrays;
+import java.util.HashSet;
 import javax.xml.ws.Endpoint;
 import org.apache.cxf.Bus;
 import org.apache.cxf.bus.spring.SpringBus;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.feature.LoggingFeature;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
-import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
+import org.apache.cxf.jaxrs.openapi.OpenApiFeature;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.transport.servlet.CXFServlet;
 import org.onap.so.adapters.cloudregion.CloudRegionRestV1;
@@ -101,18 +102,17 @@ public class CXFConfiguration {
         return endpoint.create();
     }
 
-
     @Bean
-    public Swagger2Feature createSwaggerFeature() {
-        Swagger2Feature swagger2Feature = new Swagger2Feature();
-        swagger2Feature.setPrettyPrint(true);
-        swagger2Feature.setTitle("SO Orchestration Application");
-        swagger2Feature.setContact("The ONAP SO team");
-        swagger2Feature.setDescription("This project is the SO Orchestration Engine");
-        swagger2Feature.setVersion("1.0.0");
-        swagger2Feature.setResourcePackage(
-                "org.onap.so.adapters.network,org.onap.so.adapters.tenant,org.onap.so.adapters.vnf");
-        swagger2Feature.setScan(true);
-        return swagger2Feature;
+    public OpenApiFeature createSwaggerFeature() {
+        OpenApiFeature openApiFeature = new OpenApiFeature();
+        openApiFeature.setPrettyPrint(true);
+        openApiFeature.setTitle("SO Orchestration Application");
+        openApiFeature.setContactName("The ONAP SO team");
+        openApiFeature.setDescription("This project is the SO Orchestration Engine");
+        openApiFeature.setVersion("1.0.0");
+        openApiFeature.setResourcePackages(
+                new HashSet<String>(Arrays.asList("org.onap.so.adapters.network,org.onap.so.adapters.vnf")));
+        openApiFeature.setScan(true);
+        return openApiFeature;
     }
 }
index 09e2cc2..45acf24 100644 (file)
@@ -19,7 +19,7 @@
     </dependency>
     <dependency>
       <groupId>org.apache.cxf</groupId>
-      <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
+      <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
index 06d75be..2325ffa 100644 (file)
 
 package org.onap.so.adapters.requestsdb.application;
 
+import java.util.Arrays;
+import java.util.HashSet;
 import javax.xml.ws.Endpoint;
 import org.apache.cxf.Bus;
 import org.apache.cxf.feature.LoggingFeature;
-import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
+import org.apache.cxf.jaxrs.openapi.OpenApiFeature;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.transport.servlet.CXFServlet;
 import org.onap.so.adapters.requestsdb.MsoRequestsDbAdapter;
@@ -65,16 +67,16 @@ public class CXFConfiguration {
     }
 
     @Bean
-    public Swagger2Feature createSwaggerFeature() {
-        Swagger2Feature swagger2Feature = new Swagger2Feature();
-        swagger2Feature.setPrettyPrint(true);
-        swagger2Feature.setTitle("SO Request Adapter");
-        swagger2Feature.setContact("The ONAP SO team");
-        swagger2Feature.setDescription("This project is the SO Orchestration Engine");
-        swagger2Feature.setVersion("1.0.0");
-        swagger2Feature.setResourcePackage("org.onap.so.adapters.requestdb");
-        swagger2Feature.setScan(true);
-        return swagger2Feature;
+    public OpenApiFeature createSwaggerFeature() {
+        OpenApiFeature openApiFeature = new OpenApiFeature();
+        openApiFeature.setPrettyPrint(true);
+        openApiFeature.setTitle("SO Request Adapter");
+        openApiFeature.setContactName("The ONAP SO team");
+        openApiFeature.setDescription("This project is the SO Orchestration Engine");
+        openApiFeature.setVersion("1.0.0");
+        openApiFeature.setResourcePackages(new HashSet<String>(Arrays.asList("org.onap.so.adapters.requestdb")));
+        openApiFeature.setScan(true);
+        return openApiFeature;
     }
 
 }
index 358b14e..62ba731 100644 (file)
   </dependencyManagement>
   <dependencies>
     <dependency>
-      <groupId>io.swagger</groupId>
-      <artifactId>swagger-jersey2-jaxrs</artifactId>
+      <groupId>io.swagger.core.v3</groupId>
+      <artifactId>swagger-jaxrs2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
     </dependency>
     <dependency>
       <groupId>org.apache.cxf</groupId>
-      <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
+      <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
index dd1da98..65eb39d 100644 (file)
 package org.onap.so.adapters.sdnc;
 
 import java.util.Arrays;
+import java.util.HashSet;
 import javax.xml.ws.Endpoint;
 import org.apache.cxf.Bus;
 import org.apache.cxf.endpoint.Server;
 import org.apache.cxf.feature.LoggingFeature;
 import org.apache.cxf.jaxrs.JAXRSServerFactoryBean;
-import org.apache.cxf.jaxrs.swagger.Swagger2Feature;
+import org.apache.cxf.jaxrs.openapi.OpenApiFeature;
 import org.apache.cxf.jaxws.EndpointImpl;
 import org.apache.cxf.transport.servlet.CXFServlet;
 import org.onap.so.adapters.sdnc.sdncrest.SNIROResponse;
@@ -91,16 +92,15 @@ public class CXFConfiguration {
 
 
     @Bean
-    public Swagger2Feature createSwaggerFeature() {
-        Swagger2Feature swagger2Feature = new Swagger2Feature();
-        swagger2Feature.setBasePath("/services/rest");
-        swagger2Feature.setPrettyPrint(true);
-        swagger2Feature.setTitle("SO Orchestration Application");
-        swagger2Feature.setContact("The ONAP SO team");
-        swagger2Feature.setDescription("This project is the SO Orchestration Engine");
-        swagger2Feature.setVersion("1.0.0");
-        swagger2Feature.setResourcePackage("org.onap.so.adapters.sdnc");
-        swagger2Feature.setScan(true);
-        return swagger2Feature;
+    public OpenApiFeature createSwaggerFeature() {
+        OpenApiFeature openApiFeature = new OpenApiFeature();
+        openApiFeature.setPrettyPrint(true);
+        openApiFeature.setTitle("SO Orchestration Application");
+        openApiFeature.setContactName("The ONAP SO team");
+        openApiFeature.setDescription("This project is the SO Orchestration Engine");
+        openApiFeature.setVersion("1.0.0");
+        openApiFeature.setResourcePackages(new HashSet<String>(Arrays.asList("org.onap.so.adapters.sdnc")));
+        openApiFeature.setScan(true);
+        return openApiFeature;
     }
 }
index 4d17f55..0eef01d 100644 (file)
   </build>
   <dependencies>
     <dependency>
-      <groupId>io.swagger</groupId>
-      <artifactId>swagger-jersey2-jaxrs</artifactId>
+      <groupId>io.swagger.core.v3</groupId>
+      <artifactId>swagger-jaxrs2</artifactId>
     </dependency>
     <dependency>
       <groupId>org.springframework.boot</groupId>
index 22265a0..9929262 100644 (file)
 
 package org.onap.so.asdc;
 
+import java.util.stream.Collectors;
+import java.util.stream.Stream;
 import javax.annotation.PostConstruct;
 import javax.ws.rs.ApplicationPath;
 import org.glassfish.jersey.server.ResourceConfig;
 import org.onap.so.asdc.client.test.rest.ASDCRestInterface;
-import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.context.annotation.Configuration;
-import org.springframework.core.env.Environment;
-import io.swagger.jaxrs.config.BeanConfig;
-import io.swagger.jaxrs.listing.ApiListingResource;
-import io.swagger.jaxrs.listing.SwaggerSerializers;
+import io.swagger.v3.jaxrs2.SwaggerSerializers;
+import io.swagger.v3.jaxrs2.integration.JaxrsOpenApiContextBuilder;
+import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;
+import io.swagger.v3.oas.integration.OpenApiConfigurationException;
+import io.swagger.v3.oas.integration.SwaggerConfiguration;
+import io.swagger.v3.oas.models.OpenAPI;
+import io.swagger.v3.oas.models.info.Info;
 
 @Configuration
 @ApplicationPath("/test")
 public class JerseyConfiguration extends ResourceConfig {
 
-    private Environment environment;
-
-    @Autowired
-    public JerseyConfiguration(final Environment environment) {
-        this.environment = environment;
-    }
+    private static final Logger logger = LoggerFactory.getLogger(JerseyConfiguration.class);
 
     @PostConstruct
     public void setUp() {
         register(ASDCRestInterface.class);
-        register(ApiListingResource.class);
+        register(OpenApiResource.class);
         register(SwaggerSerializers.class);
 
-        final BeanConfig beanConfig = new BeanConfig();
-        beanConfig.setVersion("1.0.2");
-        beanConfig.setSchemes(new String[] {"http"});
-        beanConfig.setHost("localhost:" + environment.getProperty("server.port"));
-        beanConfig.setBasePath("/mso");
-        beanConfig.setResourcePackage("org.onap.so.apihandlerinfra");
-        beanConfig.setPrettyPrint(true);
-        beanConfig.setScan(true);
+        final OpenAPI openApi = new OpenAPI();
+        Info info = new Info();
+        info.setVersion("1.0.2");
+        info.setTitle("Swagger asdc-controller code");
+        openApi.setInfo(info);
+
+        SwaggerConfiguration swaggerConfig = new SwaggerConfiguration().openAPI(openApi).prettyPrint(true)
+                .resourcePackages(Stream.of("org.onap.so.asdc").collect(Collectors.toSet()));
+
+        try {
+            JaxrsOpenApiContextBuilder jaxrsConfig = new JaxrsOpenApiContextBuilder();
+            jaxrsConfig.application(this).openApiConfiguration(swaggerConfig).buildContext(true);
+        } catch (OpenApiConfigurationException e) {
+            logger.error("Error during jersey configuration", e);
+            throw new RuntimeException(e.getMessage(), e);
+        }
+
     }
 }
index 9f78182..d094424 100644 (file)
     <dependency>
       <groupId>org.apache.cxf</groupId>
       <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
-      <version>3.4.2</version>
     </dependency>
     <dependency>
       <groupId>com.h2database</groupId>
index 786ee1e..f93492b 100644 (file)
@@ -116,6 +116,8 @@ public class CreateVcpeResCustServiceSimplifiedTest extends BaseBPMNTest {
         mockAai();
         mockDmaapForPnf();
 
+        grpcNettyServer.resetList();
+
         final String msoRequestId = UUID.randomUUID().toString();
         executionVariables.put("mso-request-id", msoRequestId);
 
index 1c00f36..35853a3 100644 (file)
@@ -107,6 +107,8 @@ public class GenericPnfSoftwareUpgradeTest extends BaseBPMNTest {
         mockRequestDb();
         mockAai();
 
+        grpcNettyServer.resetList();
+
         final String msoRequestId = UUID.randomUUID().toString();
         executionVariables.put(ExecutionVariableNames.MSO_REQUEST_ID, msoRequestId);
 
@@ -146,7 +148,6 @@ public class GenericPnfSoftwareUpgradeTest extends BaseBPMNTest {
             fail("GenericPnfSoftwareUpgrade request exception", e);
         }
         assertTrue(count == actionNames.length);
-        grpcNettyServer.resetList();
     }
 
     private boolean isProcessInstanceEnded() {
index 881cb30..9f7d095 100644 (file)
               <pluginExecutions>
                 <pluginExecution>
                   <pluginExecutionFilter>
-                    <groupId>io.swagger</groupId>
+                    <groupId>io.swagger.codegen.v3</groupId>
                     <artifactId>swagger-codegen-maven-plugin</artifactId>
                     <goals>
                       <goal>generate</goal>
index 6b3fd0f..bcc04ef 100644 (file)
@@ -68,9 +68,9 @@
       <version>2.2.1</version>
     </dependency>
     <dependency>
-      <groupId>io.swagger</groupId>
+      <groupId>io.swagger.parser.v3</groupId>
       <artifactId>swagger-parser</artifactId>
-      <version>1.0.50</version>
+      <version>2.0.24</version>
     </dependency>
     <dependency>
       <groupId>com.squareup</groupId>
diff --git a/pom.xml b/pom.xml
index 407d692..198ffbb 100644 (file)
--- a/pom.xml
+++ b/pom.xml
           </exclusion>
         </exclusions>
       </dependency>
-      <dependency>
-        <groupId>org.apache.cxf</groupId>
-        <artifactId>cxf-rt-rs-service-description-swagger</artifactId>
-        <version>${cxf.version}</version>
-        <exclusions>
-          <exclusion>
-            <groupId>org.jboss.spec.javax.rmi</groupId>
-            <artifactId>jboss-rmi-api_1.0_spec</artifactId>
-          </exclusion>
-        </exclusions>
-      </dependency>
       <dependency>
         <groupId>org.apache.cxf</groupId>
         <artifactId>cxf-rt-rs-service-description-openapi-v3</artifactId>
         <artifactId>aaf-misc-rosetta</artifactId>
         <version>${aaf.version}</version>
         <scope>runtime</scope>
-      </dependency>
-         <dependency>
-       <groupId>io.swagger</groupId>
-       <artifactId>swagger-jersey2-jaxrs</artifactId>
-       <version>1.6.2</version>
       </dependency>
       <dependency>
        <groupId>ch.vorburger.mariaDB4j</groupId>