diff options
3 files changed, 42 insertions, 40 deletions
diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/PapRestControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/PapRestControllerV1.java index ccdebc33..c4b7b4a4 100644 --- a/main/src/main/java/org/onap/policy/pap/main/rest/PapRestControllerV1.java +++ b/main/src/main/java/org/onap/policy/pap/main/rest/PapRestControllerV1.java @@ -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; + } } diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeleteControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeleteControllerV1.java index ad8b5081..47b77bdc 100644 --- a/main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeleteControllerV1.java +++ b/main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeleteControllerV1.java @@ -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())), diff --git a/main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeployControllerV1.java b/main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeployControllerV1.java index d3e6c006..a9e3d5c7 100644 --- a/main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeployControllerV1.java +++ b/main/src/main/java/org/onap/policy/pap/main/rest/depundep/PdpGroupDeployControllerV1.java @@ -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())), |