Sonar fixes for PAP "duplicate code" 63/86563/1
authorJim Hahn <jrh3@att.com>
Mon, 29 Apr 2019 17:02:35 +0000 (13:02 -0400)
committerJim Hahn <jrh3@att.com>
Mon, 29 Apr 2019 19:32:13 +0000 (15:32 -0400)
Extracted common code from "delete" controller.
Extracted common code from "deploy" controller.
Not sure if this will actually fix the sonar issue or not.  If it's
really complaining about the code, then this should fix it.  On
the other hand, if it's complaining about the annotations, then
I don't think there's a way around it.

Change-Id: I7c68393f3fc1b9719987d850582bd8ed335b9663
Issue-ID: POLICY-1711
Signed-off-by: Jim Hahn <jrh3@att.com>
main/src/main/java/org/onap/policy/pap/main/rest/PapRestControllerV1.java
main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeleteControllerV1.java
main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeployControllerV1.java

index ccdebc3..c4b7b4a 100644 (file)
@@ -33,6 +33,7 @@ import javax.ws.rs.Path;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 import javax.ws.rs.core.Response.ResponseBuilder;
+import org.onap.policy.models.base.PfModelException;
 
 /**
  * Version v1 common superclass to provide REST endpoints for PAP component.
@@ -117,4 +118,12 @@ public class PapRestControllerV1 {
 
         return respBuilder.header(REQUEST_ID_NAME, requestId);
     }
+
+    /**
+     * Functions that throw {@link PfModelException}.
+     */
+    @FunctionalInterface
+    public static interface RunnableWithPfEx {
+        public void run() throws PfModelException;
+    }
 }
index ad8b508..47b77bd 100644 (file)
@@ -86,18 +86,7 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
     public Response deleteGroup(@HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
                     @ApiParam(value = "PDP Group Name", required = true) @PathParam("name") String groupName) {
 
-        try {
-            provider.deleteGroup(groupName);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Status.OK)), requestId)
-                            .entity(new PdpGroupDeleteResponse()).build();
-
-        } catch (PfModelException | PfModelRuntimeException e) {
-            logger.warn("delete group failed", e);
-            PdpGroupDeleteResponse resp = new PdpGroupDeleteResponse();
-            resp.setErrorDetails(e.getErrorResponse().getErrorMessage());
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                            requestId).entity(resp).build();
-        }
+        return doOperation(requestId, "delete group failed", () -> provider.deleteGroup(groupName));
     }
 
     /**
@@ -135,18 +124,8 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
     public Response deletePolicy(@HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
                     @ApiParam(value = "PDP Policy Name", required = true) @PathParam("name") String policyName) {
 
-        try {
-            provider.undeploy(new ToscaPolicyIdentifierOptVersion(policyName, null));
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Status.OK)), requestId)
-                            .entity(new PdpGroupDeleteResponse()).build();
-
-        } catch (PfModelException | PfModelRuntimeException e) {
-            logger.warn("undeploy policy failed", e);
-            PdpGroupDeleteResponse resp = new PdpGroupDeleteResponse();
-            resp.setErrorDetails(e.getErrorResponse().getErrorMessage());
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                            requestId).entity(resp).build();
-        }
+        return doOperation(requestId, "undeploy policy failed",
+            () -> provider.undeploy(new ToscaPolicyIdentifierOptVersion(policyName, null)));
     }
 
     /**
@@ -187,13 +166,26 @@ public class PdpGroupDeleteControllerV1 extends PapRestControllerV1 {
                     @ApiParam(value = "PDP Policy Name", required = true) @PathParam("name") String policyName,
                     @ApiParam(value = "PDP Policy Version", required = true) @PathParam("version") String version) {
 
+        return doOperation(requestId, "undeploy policy failed",
+            () -> provider.undeploy(new ToscaPolicyIdentifierOptVersion(policyName, version)));
+    }
+
+    /**
+     * Invokes an operation.
+     *
+     * @param requestId request ID
+     * @param errmsg error message to log if the operation throws an exception
+     * @param runnable operation to invoke
+     * @return a {@link PdpGroupDeleteResponse} response entity
+     */
+    private Response doOperation(UUID requestId, String errmsg, RunnableWithPfEx runnable) {
         try {
-            provider.undeploy(new ToscaPolicyIdentifierOptVersion(policyName, version));
+            runnable.run();
             return addLoggingHeaders(addVersionControlHeaders(Response.status(Status.OK)), requestId)
                             .entity(new PdpGroupDeleteResponse()).build();
 
         } catch (PfModelException | PfModelRuntimeException e) {
-            logger.warn("undeploy policy failed", e);
+            logger.warn(errmsg, e);
             PdpGroupDeleteResponse resp = new PdpGroupDeleteResponse();
             resp.setErrorDetails(e.getErrorResponse().getErrorMessage());
             return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
index d3e6c00..a9e3d5c 100644 (file)
@@ -86,18 +86,7 @@ public class PdpGroupDeployControllerV1 extends PapRestControllerV1 {
     public Response deployGroup(@HeaderParam(REQUEST_ID_NAME) @ApiParam(REQUEST_ID_PARAM_DESCRIPTION) UUID requestId,
                     @ApiParam(value = "List of PDP Group Configuration", required = true) PdpGroups groups) {
 
-        try {
-            provider.createOrUpdateGroups(groups);
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(Status.OK)), requestId)
-                            .entity(new PdpGroupDeployResponse()).build();
-
-        } catch (PfModelException | PfModelRuntimeException e) {
-            logger.warn("create groups failed", e);
-            PdpGroupDeployResponse resp = new PdpGroupDeployResponse();
-            resp.setErrorDetails(e.getErrorResponse().getErrorMessage());
-            return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),
-                            requestId).entity(resp).build();
-        }
+        return doOperation(requestId, "create groups failed", () -> provider.createOrUpdateGroups(groups));
     }
 
     /**
@@ -136,13 +125,25 @@ public class PdpGroupDeployControllerV1 extends PapRestControllerV1 {
                     @ApiParam(value = "PDP Policies; only the name is required",
                                     required = true) PdpDeployPolicies policies) {
 
+        return doOperation(requestId, "deploy policies failed", () -> provider.deployPolicies(policies));
+    }
+
+    /**
+     * Invokes an operation.
+     *
+     * @param requestId request ID
+     * @param errmsg error message to log if the operation throws an exception
+     * @param runnable operation to invoke
+     * @return a {@link PdpGroupDeployResponse} response entity
+     */
+    private Response doOperation(UUID requestId, String errmsg, RunnableWithPfEx runnable) {
         try {
-            provider.deployPolicies(policies);
+            runnable.run();
             return addLoggingHeaders(addVersionControlHeaders(Response.status(Status.OK)), requestId)
                             .entity(new PdpGroupDeployResponse()).build();
 
         } catch (PfModelException | PfModelRuntimeException e) {
-            logger.warn("deploy policies failed", e);
+            logger.warn(errmsg, e);
             PdpGroupDeployResponse resp = new PdpGroupDeployResponse();
             resp.setErrorDetails(e.getErrorResponse().getErrorMessage());
             return addLoggingHeaders(addVersionControlHeaders(Response.status(e.getErrorResponse().getResponseCode())),