DM: Enable Swagger
authorRishi Chail <rishi.chail@est.tech>
Fri, 2 Oct 2020 08:33:35 +0000 (09:33 +0100)
committerRishi Chail <rishi.chail@est.tech>
Mon, 5 Oct 2020 08:27:00 +0000 (09:27 +0100)
Issue-ID: CCSDK-2754

https: //jira.onap.org/browse/CCSDK-2754

Change-Id: I20f8ab029082bb0012d5933f47d15a2f482ee378
Signed-off-by: Rishi Chail <rishi.chail@est.tech>
cps/cps-rest/pom.xml
cps/cps-rest/src/main/java/org/onap/cps/rest/config/JerseyConfig.java
cps/cps-rest/src/main/resources/openapi-configuration.json [new file with mode: 0644]
cps/cps-service/pom.xml
cps/pom.xml

index bd9be8d..2b4cbb8 100644 (file)
             <artifactId>spring-boot-starter-jetty</artifactId>\r
         </dependency>\r
 \r
+        <dependency>\r
+            <groupId>io.swagger.core.v3</groupId>\r
+            <artifactId>swagger-annotations</artifactId>\r
+            <version>${swagger.version}</version>\r
+        </dependency>\r
+\r
+        <dependency>\r
+            <groupId>io.swagger.core.v3</groupId>\r
+            <artifactId>swagger-jaxrs2</artifactId>\r
+            <version>${swagger.version}</version>\r
+        </dependency>\r
 \r
         <dependency>\r
             <groupId>org.springframework.boot</groupId>\r
index 44487fe..ea27398 100644 (file)
 \r
 package org.onap.cps.rest.config;\r
 \r
+import io.swagger.v3.jaxrs2.integration.JaxrsOpenApiContextBuilder;\r
+import io.swagger.v3.jaxrs2.integration.resources.AcceptHeaderOpenApiResource;\r
+import io.swagger.v3.jaxrs2.integration.resources.OpenApiResource;\r
+import io.swagger.v3.oas.integration.OpenApiConfigurationException;\r
 import javax.annotation.PostConstruct;\r
 import javax.ws.rs.ApplicationPath;\r
 import org.glassfish.jersey.media.multipart.MultiPartFeature;\r
 import org.glassfish.jersey.server.ResourceConfig;\r
-import org.onap.cps.rest.controller.RestController;\r
 import org.springframework.context.annotation.Configuration;\r
 \r
 @Configuration\r
 @ApplicationPath("/api/v1")\r
 public class JerseyConfig extends ResourceConfig {\r
 \r
+    /**\r
+     * This method is used to setup Jersey related configuration.\r
+     */\r
     @PostConstruct\r
     public void init() {\r
-        register(RestController.class);\r
         register(MultiPartFeature.class);\r
+        register(OpenApiResource.class);\r
+        register(AcceptHeaderOpenApiResource.class);\r
+\r
+        packages("org.onap.cps.rest.controller");\r
+        configureSwagger();\r
+    }\r
+\r
+    private void configureSwagger() {\r
+        try {\r
+            new JaxrsOpenApiContextBuilder<>().buildContext(true).read();\r
+        } catch (final OpenApiConfigurationException e) {\r
+            throw new RuntimeException(e.getMessage(), e);\r
+        }\r
     }\r
-}
\ No newline at end of file
+}\r
diff --git a/cps/cps-rest/src/main/resources/openapi-configuration.json b/cps/cps-rest/src/main/resources/openapi-configuration.json
new file mode 100644 (file)
index 0000000..ad5998f
--- /dev/null
@@ -0,0 +1,28 @@
+{\r
+    "resourcePackages": [\r
+        "org.onap.cps.rest.controller"\r
+    ],\r
+    "prettyPrint": true,\r
+    "cacheTTL": 0,\r
+    "openAPI": {\r
+        "info": {\r
+            "title": "ONAP Open API v3 CPS Spec",\r
+            "description": "The API Description may be multiline, and GitHub Flavored Markdown, GFM syntax, can be used for rich text representation.",\r
+            "x-logo": {\r
+                "url": "logo.png"\r
+            },\r
+            "contact": {\r
+                "name": "ONAP",\r
+                "url": "https://onap.readthedocs.io",\r
+                "email": "onap-discuss@lists.onap.org"\r
+            },\r
+            "license": {\r
+                "name": "Apache 2.0",\r
+                "url": "http://www.apache.org/licenses/LICENSE-2.0"\r
+            },\r
+            "version": "1.2.34",\r
+            "x-planned-retirement-date": "202207",\r
+            "x-component": "Modeling"\r
+        }\r
+    }\r
+}\r
index a59376c..7318734 100644 (file)
     <dependency>\r
       <groupId>org.opendaylight.yangtools</groupId>\r
       <artifactId>yang-parser-api</artifactId>\r
-      <version>${org.opendaylight.yangtools.version}</version>\r
+      <version>${yangtools.version}</version>\r
     </dependency>\r
 \r
     <dependency>\r
       <groupId>org.opendaylight.yangtools</groupId>\r
       <artifactId>yang-parser-impl</artifactId>\r
-      <version>${org.opendaylight.yangtools.version}</version>\r
+      <version>${yangtools.version}</version>\r
     </dependency>\r
 \r
     <dependency>\r
       <groupId>org.opendaylight.yangtools</groupId>\r
       <artifactId>yang-model-util</artifactId>\r
-      <version>${org.opendaylight.yangtools.version}</version>\r
+      <version>${yangtools.version}</version>\r
     </dependency>\r
 \r
     <dependency>\r
       <!-- required for processing yang data in json format -->\r
       <groupId>org.opendaylight.yangtools</groupId>\r
       <artifactId>yang-data-codec-gson</artifactId>\r
-      <version>${org.opendaylight.yangtools.version}</version>\r
+      <version>${yangtools.version}</version>\r
     </dependency>\r
 \r
     <dependency>\r
     <dependency>\r
       <groupId>org.codehaus.groovy</groupId>\r
       <artifactId>groovy</artifactId>\r
-      <version>${version.groovy}</version>\r
+      <version>${groovy.version}</version>\r
       <scope>test</scope>\r
     </dependency>\r
     <dependency>\r
       <groupId>org.spockframework</groupId>\r
       <artifactId>spock-core</artifactId>\r
-      <version>${version.spock-core}</version>\r
+      <version>${spock-core.version}</version>\r
       <scope>test</scope>\r
     </dependency>\r
     <dependency>\r
index 5435c4a..d81ee9e 100644 (file)
   </organization>\r
 \r
   <properties>\r
-    <version.java.compiler>11</version.java.compiler>\r
+    <java.version>11</java.version>\r
     <springboot.version>2.3.3.RELEASE</springboot.version>\r
     <oparent.version>3.1.0</oparent.version>\r
-    <org.opendaylight.yangtools.version>5.0.5</org.opendaylight.yangtools.version>\r
-    <version.groovy>3.0.6</version.groovy>\r
-    <version.spock-core>2.0-M2-groovy-3.0</version.spock-core>\r
+    <yangtools.version>5.0.6</yangtools.version>\r
+    <swagger.version>2.1.4</swagger.version>\r
+    <groovy.version>3.0.6</groovy.version>\r
+    <spock-core.version>2.0-M2-groovy-3.0</spock-core.version>\r
   </properties>\r
 \r
   <dependencyManagement>\r
@@ -67,8 +68,8 @@
         <groupId>org.apache.maven.plugins</groupId>\r
         <artifactId>maven-compiler-plugin</artifactId>\r
         <configuration>\r
-          <source>${version.java.compiler}</source>\r
-          <target>${version.java.compiler}</target>\r
+          <source>${java.version}</source>\r
+          <target>${java.version}</target>\r
         </configuration>\r
       </plugin>\r
 \r