From 218b9d1686e76c4ded2d39e21f6667375f3b72d7 Mon Sep 17 00:00:00 2001 From: Lathish Date: Wed, 18 Dec 2019 14:18:01 +0000 Subject: [PATCH] Swagger documentation Issue-ID: NONRTRIC-85 Change-Id: I2a8747256ab1a315e4a11c2b4ade6c8fb6da51cb Signed-off-by: Lathish --- policy-agent/pom.xml | 9 +++++ .../java/org/oransc/policyagent/SwaggerConfig.java | 46 ++++++++++++++++++++++ .../policyagent/controllers/PolicyController.java | 38 ++++++++++++++++-- .../controllers/RicRepositoryController.java | 3 +- 4 files changed, 91 insertions(+), 5 deletions(-) create mode 100644 policy-agent/src/main/java/org/oransc/policyagent/SwaggerConfig.java diff --git a/policy-agent/pom.xml b/policy-agent/pom.xml index a4388706..a2bb4bc6 100644 --- a/policy-agent/pom.xml +++ b/policy-agent/pom.xml @@ -77,6 +77,15 @@ swagger-jaxrs2-servlet-initializer 2.0.0 + + io.springfox + springfox-swagger-ui + 2.9.2 + + + javax.xml.bind + jaxb-api + org.immutables value 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 index 00000000..cfb9a506 --- /dev/null +++ b/policy-agent/src/main/java/org/oransc/policyagent/SwaggerConfig.java @@ -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(); + } +} diff --git a/policy-agent/src/main/java/org/oransc/policyagent/controllers/PolicyController.java b/policy-agent/src/main/java/org/oransc/policyagent/controllers/PolicyController.java index c0932a4c..890b2a47 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/controllers/PolicyController.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/controllers/PolicyController.java @@ -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 getPolicyTypes() { Collection 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 getPolicy( // @RequestParam(name = "instance", required = true) String instance) { try { @@ -85,14 +100,24 @@ public class PolicyController { } @DeleteMapping("/policy") - public ResponseEntity deletePolicy( // + @ApiOperation(value = "Deletes the policy") + @ApiResponses( + value = { + @ApiResponse(code = 204, message = "Policy deleted") + }) + public ResponseEntity deletePolicy( // @RequestParam(name = "instance", required = true) String instance) { Policy p = policies.removeId(instance); - return new ResponseEntity("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 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 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(HttpStatus.OK); + return new ResponseEntity(HttpStatus.CREATED); } catch (ServiceException e) { return new ResponseEntity(e.getMessage(), HttpStatus.NOT_FOUND); } diff --git a/policy-agent/src/main/java/org/oransc/policyagent/controllers/RicRepositoryController.java b/policy-agent/src/main/java/org/oransc/policyagent/controllers/RicRepositoryController.java index 960532a0..cae588a8 100644 --- a/policy-agent/src/main/java/org/oransc/policyagent/controllers/RicRepositoryController.java +++ b/policy-agent/src/main/java/org/oransc/policyagent/controllers/RicRepositoryController.java @@ -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; -- 2.16.6