Merge "Added STD sim 2.0.0 tests"
[nonrtric.git] / policy-agent / src / main / java / org / oransc / policyagent / controllers / ServiceController.java
index bf78742..8481830 100644 (file)
@@ -25,9 +25,12 @@ import com.google.gson.GsonBuilder;
 
 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 java.net.MalformedURLException;
+import java.net.URL;
 import java.time.Duration;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -42,7 +45,6 @@ import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.DeleteMapping;
 import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.PutMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestParam;
@@ -71,8 +73,8 @@ public class ServiceController {
             @ApiResponse(code = 200, message = "OK", response = ServiceStatus.class, responseContainer = "List"), //
             @ApiResponse(code = 404, message = "Service is not found", response = String.class)})
     public ResponseEntity<String> getServices(//
+        @ApiParam(name = "name", required = false, value = "The name of the service") //
         @RequestParam(name = "name", required = false) String name) {
-
         if (name != null && this.services.get(name) == null) {
             return new ResponseEntity<>("Service not found", HttpStatus.NOT_FOUND);
         }
@@ -93,13 +95,17 @@ public class ServiceController {
             s.getCallbackUrl());
     }
 
-    private void validateRegistrationInfo(ServiceRegistrationInfo registrationInfo) throws ServiceException {
+    private void validateRegistrationInfo(ServiceRegistrationInfo registrationInfo)
+        throws ServiceException, MalformedURLException {
         if (registrationInfo.serviceName.isEmpty()) {
             throw new ServiceException("Missing mandatory parameter 'serviceName'");
         }
         if (registrationInfo.keepAliveIntervalSeconds < 0) {
             throw new ServiceException("Keepalive interval shoul be greater or equal to 0");
         }
+        if (!registrationInfo.callbackUrl.isEmpty()) {
+            new URL(registrationInfo.callbackUrl);
+        }
     }
 
     @ApiOperation(value = "Register a service")
@@ -128,6 +134,7 @@ public class ServiceController {
             @ApiResponse(code = 404, message = "Service not found", response = String.class)})
     @DeleteMapping("/services")
     public ResponseEntity<String> deleteService(//
+        @ApiParam(name = "name", required = true, value = "The name of the service") //
         @RequestParam(name = "name", required = true) String serviceName) {
         try {
             Service service = removeService(serviceName);
@@ -145,8 +152,9 @@ public class ServiceController {
         value = { //
             @ApiResponse(code = 200, message = "Service supervision timer refreshed, OK"),
             @ApiResponse(code = 404, message = "The service is not found, needs re-registration")})
-    @PostMapping("/services/keepalive")
+    @PutMapping("/services/keepalive")
     public ResponseEntity<String> keepAliveService(//
+        @ApiParam(name = "name", required = true, value = "The name of the service") //
         @RequestParam(name = "name", required = true) String serviceName) {
         try {
             services.getService(serviceName).keepAlive();