Swagger documentation 71/2071/2
authorLathish <lathishbabu.ganesan@est.tech>
Wed, 18 Dec 2019 14:18:01 +0000 (14:18 +0000)
committerLathish <lathishbabu.ganesan@est.tech>
Thu, 19 Dec 2019 16:01:07 +0000 (16:01 +0000)
Issue-ID: NONRTRIC-85
Change-Id: I2a8747256ab1a315e4a11c2b4ade6c8fb6da51cb
Signed-off-by: Lathish <lathishbabu.ganesan@est.tech>
policy-agent/pom.xml
policy-agent/src/main/java/org/oransc/policyagent/SwaggerConfig.java [new file with mode: 0644]
policy-agent/src/main/java/org/oransc/policyagent/controllers/PolicyController.java
policy-agent/src/main/java/org/oransc/policyagent/controllers/RicRepositoryController.java

index a438870..a2bb4bc 100644 (file)
             <artifactId>swagger-jaxrs2-servlet-initializer</artifactId>
             <version>2.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>io.springfox</groupId>
+            <artifactId>springfox-swagger-ui</artifactId>
+            <version>2.9.2</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.xml.bind</groupId>
+            <artifactId>jaxb-api</artifactId>
+        </dependency>
         <dependency>
             <groupId>org.immutables</groupId>
             <artifactId>value</artifactId>
diff --git a/policy-agent/src/main/java/org/oransc/policyagent/SwaggerConfig.java b/policy-agent/src/main/java/org/oransc/policyagent/SwaggerConfig.java
new file mode 100644 (file)
index 0000000..cfb9a50
--- /dev/null
@@ -0,0 +1,46 @@
+/*-
+ * ========================LICENSE_START=================================
+ * O-RAN-SC
+ * %%
+ * Copyright (C) 2019 Nordix Foundation
+ * %%
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ========================LICENSE_END===================================
+ */
+
+package org.oransc.policyagent;
+
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import springfox.documentation.builders.PathSelectors;
+import springfox.documentation.builders.RequestHandlerSelectors;
+import springfox.documentation.spi.DocumentationType;
+import springfox.documentation.spring.web.plugins.Docket;
+import springfox.documentation.swagger2.annotations.EnableSwagger2;
+
+/**
+ * Swagger configuration class that uses swagger2 documentation type and scans all the controllers
+ * under org.oransc.policyagent.controllers package. To access the swagger gui go to
+ * http://ip:port/swagger-ui.html
+ *
+ */
+@Configuration
+@EnableSwagger2
+public class SwaggerConfig {
+  @Bean
+  public Docket api() {
+    return new Docket(DocumentationType.SWAGGER_2).select()
+        .apis(RequestHandlerSelectors.basePackage("org.oransc.policyagent.controllers"))
+        .paths(PathSelectors.any()).build();
+  }
+}
index c0932a4..890b2a4 100644 (file)
@@ -21,7 +21,10 @@ package org.oransc.policyagent.controllers;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiResponse;
+import io.swagger.annotations.ApiResponses;
 import java.util.Collection;
 import java.util.Vector;
 
@@ -46,6 +49,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
+@Api(value = "Policy Management API")
 public class PolicyController {
 
     private final ApplicationConfig appConfig;
@@ -67,6 +71,11 @@ public class PolicyController {
     }
 
     @GetMapping("/policy_types")
+    @ApiOperation(value = "Returns all the policy types")
+    @ApiResponses(
+        value = {
+            @ApiResponse(code = 200, message = "Policy Types found")
+        })
     public ResponseEntity<String> getPolicyTypes() {
 
         Collection<PolicyType> types = this.policyTypes.getAll();
@@ -74,6 +83,12 @@ public class PolicyController {
     }
 
     @GetMapping("/policy")
+    @ApiOperation(value = "Returns the policy")
+    @ApiResponses(
+        value = {
+            @ApiResponse(code = 200, message = "Policy found"),
+            @ApiResponse(code = 204, message = "Policy is not found")
+        })
     public ResponseEntity<String> getPolicy( //
         @RequestParam(name = "instance", required = true) String instance) {
         try {
@@ -85,14 +100,24 @@ public class PolicyController {
     }
 
     @DeleteMapping("/policy")
-    public ResponseEntity<String> deletePolicy( //
+    @ApiOperation(value = "Deletes the policy")
+    @ApiResponses(
+        value = {
+            @ApiResponse(code = 204, message = "Policy deleted")
+        })
+    public ResponseEntity<Void> deletePolicy( //
         @RequestParam(name = "instance", required = true) String instance) {
 
         Policy p = policies.removeId(instance);
-        return new ResponseEntity<String>("OK", HttpStatus.OK);
+        return new ResponseEntity<>(HttpStatus.NO_CONTENT);
     }
 
     @GetMapping("/policies")
+    @ApiOperation(value = "Returns the policies")
+    @ApiResponses(
+        value = {
+            @ApiResponse(code = 200, message = "Polcies found")
+        })
     public ResponseEntity<String> getPolicies( //
         @RequestParam(name = "type", required = false) String type, //
         @RequestParam(name = "ric", required = false) String ric, //
@@ -167,6 +192,11 @@ public class PolicyController {
     }
 
     @PutMapping(path = "/policy")
+    @ApiOperation(value = "Create the policy")
+    @ApiResponses(
+        value = {
+            @ApiResponse(code = 201, message = "Policy created")
+        })
     public ResponseEntity<String> putPolicy( //
         @RequestParam(name = "type", required = true) String type, //
         @RequestParam(name = "instance", required = true) String instanceId, //
@@ -186,7 +216,7 @@ public class PolicyController {
                 .lastModified(getTimeStampUTC()) //
                 .build();
             policies.put(policy);
-            return new ResponseEntity<String>(HttpStatus.OK);
+            return new ResponseEntity<String>(HttpStatus.CREATED);
         } catch (ServiceException e) {
             return new ResponseEntity<String>(e.getMessage(), HttpStatus.NOT_FOUND);
         }
index 960532a..cae588a 100644 (file)
@@ -22,7 +22,7 @@ package org.oransc.policyagent.controllers;
 
 import com.google.gson.Gson;
 import com.google.gson.GsonBuilder;
-
+import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiResponse;
 import io.swagger.annotations.ApiResponses;
@@ -42,6 +42,7 @@ import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.RestController;
 
 @RestController
+@Api(value = "RIC Management API")
 public class RicRepositoryController {
 
     private final ApplicationConfig appConfig;