Migrate pap startup & controllers to spring boot
[policy/pap.git] / main / src / main / java / org / onap / policy / pap / main / rest / PolicyStatusControllerV1.java
index 7333432..4322747 100644 (file)
@@ -33,12 +33,7 @@ import io.swagger.annotations.ExtensionProperty;
 import io.swagger.annotations.ResponseHeader;
 import java.util.Collection;
 import java.util.UUID;
-import javax.ws.rs.GET;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.Path;
-import javax.ws.rs.PathParam;
-import javax.ws.rs.QueryParam;
-import javax.ws.rs.core.Response;
+import lombok.RequiredArgsConstructor;
 import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.base.PfModelRuntimeException;
 import org.onap.policy.models.pap.concepts.PolicyStatus;
@@ -46,11 +41,22 @@ import org.onap.policy.models.pdp.concepts.PdpPolicyStatus;
 import org.onap.policy.models.tosca.authorative.concepts.ToscaConceptIdentifierOptVersion;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PathVariable;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * Class to provide REST end points for PAP component to retrieve the status of deployed
  * policies.
  */
+@RestController
+@RequestMapping(path = "/policy/pap/v1")
+@RequiredArgsConstructor
 public class PolicyStatusControllerV1 extends PapRestControllerV1 {
     private static final String EMPTY_REGEX_ERROR_MESSAGE = "An empty string passed as a regex is not allowed";
     private static final String EMPTY_REGEX_WARNING = ". Empty string passed as Regex.";
@@ -58,7 +64,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
 
     private static final Logger logger = LoggerFactory.getLogger(PolicyStatusControllerV1.class);
 
-    private final PolicyStatusProvider provider = new PolicyStatusProvider();
+    private final PolicyStatusProvider provider;
 
     /**
      * Queries status of all deployed policies. If regex is not null or empty, the function will only return
@@ -69,8 +75,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
      * @return a response
      */
     // @formatter:off
-    @GET
-    @Path("policies/deployed")
+    @GetMapping("policies/deployed")
     @ApiOperation(value = "Queries status of all deployed policies",
         notes = "Queries status of all deployed policies, returning success and failure counts of the PDPs",
         responseContainer = "List", response = PolicyStatus.class,
@@ -99,9 +104,11 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
     })
     // @formatter:on
 
-    public Response queryAllDeployedPolicies(
-        @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId,
-        @ApiParam(value = "Regex for a policy name") @QueryParam("regex") String regex) {
+    public ResponseEntity<Object> queryAllDeployedPolicies(
+        @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) @RequestHeader(
+            required = false,
+            value = REQUEST_ID_NAME) final UUID requestId,
+        @ApiParam(value = "Regex for a policy name") @RequestParam(required = false, value = "regex") String regex) {
         try {
             final Collection<PolicyStatus> result;
             if (regex == null) {
@@ -115,16 +122,16 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
 
         } catch (PfModelException | PfModelRuntimeException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                requestId).entity(e.getErrorResponse().getErrorMessage()).build();
+            return addLoggingHeaders(
+                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
+                requestId).body(e.getErrorResponse().getErrorMessage());
         } catch (PatternSyntaxException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.BAD_REQUEST)), requestId)
-                .entity(e.getMessage()).build();
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(HttpStatus.BAD_REQUEST)), requestId)
+                .body(e.getMessage());
         }
     }
 
-
     /**
      * Queries status of specific deployed policies.
      *
@@ -132,8 +139,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
      * @return a response
      */
     // @formatter:off
-    @GET
-    @Path("policies/deployed/{name}")
+    @GetMapping("policies/deployed/{name}")
     @ApiOperation(value = "Queries status of specific deployed policies",
         notes = "Queries status of specific deployed policies, returning success and failure counts of the PDPs",
         responseContainer = "List", response = PolicyStatus.class,
@@ -162,9 +168,11 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
     })
     // @formatter:on
 
-    public Response queryDeployedPolicies(
-                    @ApiParam(value = "Policy Id", required = true) @PathParam("name") String name,
-                    @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId) {
+    public ResponseEntity<Object> queryDeployedPolicies(
+                    @ApiParam(value = "Policy Id") @PathVariable("name") String name,
+                    @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) @RequestHeader(
+                        required = false,
+                        value = REQUEST_ID_NAME) final UUID requestId) {
 
         try {
             Collection<PolicyStatus> result = provider.getStatus(new ToscaConceptIdentifierOptVersion(name, null));
@@ -172,14 +180,14 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
                 return makeNotFoundResponse(requestId);
 
             } else {
-                return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                                .entity(result).build();
+                return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId).body(result);
             }
 
         } catch (PfModelException | PfModelRuntimeException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                requestId).entity(e.getErrorResponse().getErrorMessage()).build();
+            return addLoggingHeaders(
+                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
+                requestId).body(e.getErrorResponse().getErrorMessage());
         }
     }
 
@@ -191,8 +199,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
      * @return a response
      */
     // @formatter:off
-    @GET
-    @Path("policies/deployed/{name}/{version}")
+    @GetMapping("policies/deployed/{name}/{version}")
     @ApiOperation(value = "Queries status of a specific deployed policy",
         notes = "Queries status of a specific deployed policy, returning success and failure counts of the PDPs",
         response = PolicyStatus.class,
@@ -221,9 +228,11 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
     })
     // @formatter:on
 
-    public Response queryDeployedPolicy(@ApiParam(value = "Policy Id", required = true) @PathParam("name") String name,
-                    @ApiParam(value = "Policy Version", required = true) @PathParam("version") String version,
-                    @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId) {
+    public ResponseEntity<Object> queryDeployedPolicy(@ApiParam(value = "Policy Id") @PathVariable("name") String name,
+                    @ApiParam(value = "Policy Version") @PathVariable("version") String version,
+                    @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) @RequestHeader(
+                        required = false,
+                        value = REQUEST_ID_NAME) final UUID requestId) {
 
         try {
             Collection<PolicyStatus> result = provider.getStatus(new ToscaConceptIdentifierOptVersion(name, version));
@@ -231,14 +240,15 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
                 return makeNotFoundResponse(requestId);
 
             } else {
-                return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                                .entity(result.iterator().next()).build();
+                return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
+                    .body(result.iterator().next());
             }
 
         } catch (PfModelException | PfModelRuntimeException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                requestId).entity(e.getErrorResponse().getErrorMessage()).build();
+            return addLoggingHeaders(
+                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
+                requestId).body(e.getErrorResponse().getErrorMessage());
         }
     }
 
@@ -250,8 +260,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
      * @return a response
      */
     // @formatter:off
-    @GET
-    @Path("policies/status")
+    @GetMapping("policies/status")
     @ApiOperation(value = "Queries status of policies in all PdpGroups",
         notes = "Queries status of policies in all PdpGroups, "
             + "returning status of policies in all the PDPs belonging to all PdpGroups",
@@ -281,17 +290,20 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
     })
     // @formatter:on
 
-    public Response getStatusOfAllPolicies(
-                    @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId) {
+    public ResponseEntity<Object> getStatusOfAllPolicies(
+        @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) @RequestHeader(
+            required = false,
+            value = REQUEST_ID_NAME) final UUID requestId) {
 
         try {
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                            .entity(provider.getPolicyStatus()).build();
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
+                .body(provider.getPolicyStatus());
 
         } catch (PfModelException | PfModelRuntimeException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                requestId).entity(e.getErrorResponse().getErrorMessage()).build();
+            return addLoggingHeaders(
+                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
+                requestId).body(e.getErrorResponse().getErrorMessage());
         }
     }
 
@@ -305,8 +317,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
      * @return a response
      */
     // @formatter:off
-    @GET
-    @Path("policies/status/{pdpGroupName}")
+    @GetMapping("policies/status/{pdpGroupName}")
     @ApiOperation(value = "Queries status of policies in a specific PdpGroup",
         notes = "Queries status of policies in a specific PdpGroup, "
             + "returning status of policies in all the PDPs belonging to the PdpGroup",
@@ -336,10 +347,12 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
     })
     // @formatter:on
 
-    public Response getStatusOfPoliciesByGroup(
-        @ApiParam(value = "PDP Group Name", required = true) @PathParam("pdpGroupName") String pdpGroupName,
-        @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId,
-        @ApiParam(value = "Regex for a policy name") @QueryParam("regex") String regex) {
+    public ResponseEntity<Object> getStatusOfPoliciesByGroup(
+        @ApiParam(value = "PDP Group Name") @PathVariable("pdpGroupName") String pdpGroupName,
+        @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) @RequestHeader(
+            required = false,
+            value = REQUEST_ID_NAME) final UUID requestId,
+        @ApiParam(value = "Regex for a policy name") @RequestParam(required = false, value = "regex") String regex) {
 
         try {
             final Collection<PdpPolicyStatus> result;
@@ -354,12 +367,13 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
 
         } catch (PfModelException | PfModelRuntimeException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                requestId).entity(e.getErrorResponse().getErrorMessage()).build();
+            return addLoggingHeaders(
+                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
+                requestId).body(e.getErrorResponse().getErrorMessage());
         } catch (PatternSyntaxException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.BAD_REQUEST)), requestId)
-                .entity(e.getMessage()).build();
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(HttpStatus.BAD_REQUEST)), requestId)
+                .body(e.getMessage());
         }
     }
 
@@ -372,8 +386,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
      * @return a response
      */
     // @formatter:off
-    @GET
-    @Path("policies/status/{pdpGroupName}/{policyName}")
+    @GetMapping("policies/status/{pdpGroupName}/{policyName}")
     @ApiOperation(value = "Queries status of all versions of a specific policy in a specific PdpGroup",
         notes = "Queries status of all versions of a specific policy in a specific PdpGroup,"
             + " returning status of all versions of the policy in the PDPs belonging to the PdpGroup",
@@ -403,10 +416,12 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
     })
     // @formatter:on
 
-    public Response getStatusOfPolicies(
-        @ApiParam(value = "PDP Group Name", required = true) @PathParam("pdpGroupName") String pdpGroupName,
-        @ApiParam(value = "Policy Id", required = true) @PathParam("policyName") String policyName,
-        @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId) {
+    public ResponseEntity<Object> getStatusOfPolicies(
+        @ApiParam(value = "PDP Group Name") @PathVariable("pdpGroupName") String pdpGroupName,
+        @ApiParam(value = "Policy Id") @PathVariable("policyName") String policyName,
+        @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) @RequestHeader(
+            required = false,
+            value = REQUEST_ID_NAME) final UUID requestId) {
 
         try {
             Collection<PdpPolicyStatus> result =
@@ -415,14 +430,15 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
                 return makeNotFoundResponse(requestId);
 
             } else {
-                return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                                .entity(result).build();
+                return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
+                    .body(result);
             }
 
         } catch (PfModelException | PfModelRuntimeException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                requestId).entity(e.getErrorResponse().getErrorMessage()).build();
+            return addLoggingHeaders(
+                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
+                requestId).body(e.getErrorResponse().getErrorMessage());
         }
     }
 
@@ -437,8 +453,7 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
      * @return a response
      */
     // @formatter:off
-    @GET
-    @Path("policies/status/{pdpGroupName}/{policyName}/{policyVersion}")
+    @GetMapping("policies/status/{pdpGroupName}/{policyName}/{policyVersion}")
     @ApiOperation(value = "Queries status of a specific version of a specific policy in a specific PdpGroup",
         notes = "Queries status of a specific version of a specific policy in a specific PdpGroup,"
             + " returning status of the policy in the PDPs belonging to the PdpGroup",
@@ -468,11 +483,13 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
     })
     // @formatter:on
 
-    public Response getStatusOfPolicy(
-        @ApiParam(value = "PDP Group Name", required = true) @PathParam("pdpGroupName") String pdpGroupName,
-        @ApiParam(value = "Policy Id", required = true) @PathParam("policyName") String policyName,
-        @ApiParam(value = "Policy Version", required = true) @PathParam("policyVersion") String policyVersion,
-        @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) final UUID requestId) {
+    public ResponseEntity<Object> getStatusOfPolicy(
+        @ApiParam(value = "PDP Group Name") @PathVariable("pdpGroupName") String pdpGroupName,
+        @ApiParam(value = "Policy Id") @PathVariable("policyName") String policyName,
+        @ApiParam(value = "Policy Version") @PathVariable("policyVersion") String policyVersion,
+        @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) @RequestHeader(
+            required = false,
+            value = REQUEST_ID_NAME) final UUID requestId) {
 
         try {
             Collection<PdpPolicyStatus> result = provider.getPolicyStatus(pdpGroupName,
@@ -481,14 +498,15 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
                 return makeNotFoundResponse(requestId);
 
             } else {
-                return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                                .entity(result.iterator().next()).build();
+                return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
+                    .body(result.iterator().next());
             }
 
         } catch (PfModelException | PfModelRuntimeException e) {
             logger.warn(GET_DEPLOYMENTS_FAILED, e);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                requestId).entity(e.getErrorResponse().getErrorMessage()).build();
+            return addLoggingHeaders(
+                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
+                requestId).body(e.getErrorResponse().getErrorMessage());
         }
     }
 
@@ -498,23 +516,22 @@ public class PolicyStatusControllerV1 extends PapRestControllerV1 {
      * @param requestId request ID
      * @return a "not found" response
      */
-    private Response makeNotFoundResponse(final UUID requestId) {
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.NOT_FOUND)), requestId)
+    private ResponseEntity<Object> makeNotFoundResponse(final UUID requestId) {
+        return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(HttpStatus.NOT_FOUND)), requestId)
                         .build();
     }
 
-    private Response makeRegexNotFoundResponse(UUID requestId) {
+    private ResponseEntity<Object> makeRegexNotFoundResponse(UUID requestId) {
         logger.warn(GET_DEPLOYMENTS_FAILED + EMPTY_REGEX_WARNING);
-        return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.BAD_REQUEST)),
-            requestId).entity(EMPTY_REGEX_ERROR_MESSAGE).build();
+        return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.status(HttpStatus.BAD_REQUEST)),
+            requestId).body(EMPTY_REGEX_ERROR_MESSAGE);
     }
 
-    private Response makeListOrNotFoundResponse(UUID requestId, Collection<?> result) {
+    private ResponseEntity<Object> makeListOrNotFoundResponse(UUID requestId, Collection<?> result) {
         if (result.isEmpty()) {
             return makeNotFoundResponse(requestId);
         } else {
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId)
-                .entity(result).build();
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId).body(result);
         }
     }
 }