Migrate pap startup & controllers to spring boot
[policy/pap.git] / main / src / main / java / org / onap / policy / pap / main / rest / PdpGroupCreateOrUpdateControllerV1.java
index 505f7fe..b588d08 100644 (file)
@@ -4,6 +4,7 @@
  * ================================================================================
  * Copyright (C) 2019,2021 Nordix Foundation.
  * Modifications Copyright (C) 2021 AT&T Intellectual Property. All rights reserved.
+ * Modifications Copyright (C) 2021 Bell Canada. All rights reserved.
  * ================================================================================
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -30,25 +31,30 @@ import io.swagger.annotations.Extension;
 import io.swagger.annotations.ExtensionProperty;
 import io.swagger.annotations.ResponseHeader;
 import java.util.UUID;
-import javax.ws.rs.HeaderParam;
-import javax.ws.rs.POST;
-import javax.ws.rs.Path;
-import javax.ws.rs.core.Response;
-import javax.ws.rs.core.Response.Status;
+import lombok.RequiredArgsConstructor;
 import org.onap.policy.models.base.PfModelException;
 import org.onap.policy.models.base.PfModelRuntimeException;
 import org.onap.policy.models.pap.concepts.PdpGroupUpdateResponse;
 import org.onap.policy.models.pdp.concepts.PdpGroups;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.http.ResponseEntity;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestHeader;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
 
 /**
  * Class to provide REST end points for PAP component to create or update PDP groups.
  */
+@RestController
+@RequestMapping(path = "/policy/pap/v1")
+@RequiredArgsConstructor
 public class PdpGroupCreateOrUpdateControllerV1 extends PapRestControllerV1 {
     private static final Logger logger = LoggerFactory.getLogger(PdpGroupCreateOrUpdateControllerV1.class);
 
-    private final PdpGroupCreateOrUpdateProvider provider = new PdpGroupCreateOrUpdateProvider();
+    private final PdpGroupCreateOrUpdateProvider provider;
 
     /**
      * Creates or updates one or more PDP groups.
@@ -58,8 +64,7 @@ public class PdpGroupCreateOrUpdateControllerV1 extends PapRestControllerV1 {
      * @return a response
      */
     // @formatter:off
-    @POST
-    @Path("pdps/groups/batch")
+    @PostMapping("pdps/groups/batch")
     @ApiOperation(value = "Create or update PDP Groups",
         notes = "Create or update one or more PDP Groups, returning optional error details",
         response = PdpGroupUpdateResponse.class,
@@ -88,9 +93,11 @@ public class PdpGroupCreateOrUpdateControllerV1 extends PapRestControllerV1 {
     })
     // @formatter:on
 
-    public Response createOrUpdateGroups(
-        @HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
-        @ApiParam(value = "List of PDP Group Configuration", required = true) PdpGroups groups) {
+    public ResponseEntity<PdpGroupUpdateResponse> createOrUpdateGroups(
+        @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) @RequestHeader(
+            required = false,
+            value = REQUEST_ID_NAME) final UUID requestId,
+        @ApiParam(value = "List of PDP Group Configuration", required = true) @RequestBody PdpGroups groups) {
 
         return doOperation(requestId, "create groups failed", () -> provider.createOrUpdateGroups(groups));
     }
@@ -103,18 +110,19 @@ public class PdpGroupCreateOrUpdateControllerV1 extends PapRestControllerV1 {
      * @param runnable operation to invoke
      * @return a {@link PdpGroupUpdateResponse} response entity
      */
-    private Response doOperation(UUID requestId, String errmsg, RunnableWithPfEx runnable) {
+    private ResponseEntity<PdpGroupUpdateResponse> doOperation(UUID requestId, String errmsg,
+        RunnableWithPfEx runnable) {
         try {
             runnable.run();
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Status.OK)), requestId)
-                .entity(new PdpGroupUpdateResponse()).build();
-
+            return addLoggingHeaders(addVersionControlHeaders(ResponseEntity.ok()), requestId)
+                .body(new PdpGroupUpdateResponse());
         } catch (PfModelException | PfModelRuntimeException e) {
             logger.warn(errmsg, e);
             var resp = new PdpGroupUpdateResponse();
             resp.setErrorDetails(e.getErrorResponse().getErrorMessage());
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                requestId).entity(resp).build();
+            return addLoggingHeaders(
+                addVersionControlHeaders(ResponseEntity.status(e.getErrorResponse().getResponseCode().getStatusCode())),
+                requestId).body(resp);
         }
     }
 }