From: Henrik Andersson Date: Fri, 20 Dec 2019 09:47:40 +0000 (+0000) Subject: Merge "Swagger documentation" X-Git-Tag: 1.0.1~60 X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=commitdiff_plain;h=bbc4aa48f60dc70154ff07c2143918053f1c9154;hp=805681f9c4f555fd905af4ecd4f0beea8d657327;p=nonrtric.git Merge "Swagger documentation" --- diff --git a/policy-agent/pom.xml b/policy-agent/pom.xml index ef5dc139..18158c37 100644 --- a/policy-agent/pom.xml +++ b/policy-agent/pom.xml @@ -90,6 +90,15 @@ swagger-jaxrs2-servlet-initializer ${swagger.version} + + 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 bee56b0a..8c6964e8 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 @@ -22,7 +22,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; @@ -47,6 +50,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; @@ -68,6 +72,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(); @@ -75,6 +84,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 { @@ -86,14 +101,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 4c032189..175d5eb9 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;