diff options
Diffstat (limited to 'main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java')
-rw-r--r-- | main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java | 178 |
1 files changed, 21 insertions, 157 deletions
diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java index 7844b1a5..05f40cc5 100644 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java @@ -1,7 +1,7 @@ /*- * ============LICENSE_START======================================================= * Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. - * Modifications Copyright (C) 2021 Nordix Foundation. + * Modifications Copyright (C) 2021-2023 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -22,19 +22,6 @@ package org.onap.policy.pdpx.main.rest; import com.att.research.xacml.api.Request; -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 io.swagger.annotations.Authorization; -import io.swagger.annotations.BasicAuthDefinition; -import io.swagger.annotations.Extension; -import io.swagger.annotations.ExtensionProperty; -import io.swagger.annotations.Info; -import io.swagger.annotations.ResponseHeader; -import io.swagger.annotations.SecurityDefinition; -import io.swagger.annotations.SwaggerDefinition; import java.util.UUID; import javax.servlet.http.HttpServletRequest; import javax.ws.rs.Consumes; @@ -47,12 +34,8 @@ import javax.ws.rs.core.Context; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import javax.ws.rs.core.Response.ResponseBuilder; -import org.onap.policy.common.endpoints.report.HealthCheckReport; import org.onap.policy.models.decisions.concepts.DecisionException; import org.onap.policy.models.decisions.concepts.DecisionRequest; -import org.onap.policy.models.decisions.concepts.DecisionResponse; -import org.onap.policy.models.errors.concepts.ErrorResponse; -import org.onap.policy.pdpx.main.rest.model.StatisticsReport; import org.onap.policy.pdpx.main.rest.provider.DecisionProvider; import org.onap.policy.pdpx.main.rest.provider.HealthCheckProvider; import org.onap.policy.pdpx.main.rest.provider.StatisticsProvider; @@ -64,99 +47,40 @@ import org.slf4j.LoggerFactory; * */ @Path("/policy/pdpx/v1") -@Api @Produces({MediaType.APPLICATION_JSON, XacmlPdpRestController.APPLICATION_YAML}) @Consumes({MediaType.APPLICATION_JSON, XacmlPdpRestController.APPLICATION_YAML}) -@SwaggerDefinition(info = @Info(description = "Policy Xacml PDP Service", version = "1.0.0", title = "Policy Xacml PDP", - extensions = { - @Extension( - properties = { - @ExtensionProperty(name = "planned-retirement-date", value = "tbd"), - @ExtensionProperty(name = "component", value = "Policy Framework") - }) - }), - schemes = {SwaggerDefinition.Scheme.HTTP, SwaggerDefinition.Scheme.HTTPS}, - securityDefinition = @SecurityDefinition(basicAuthDefinitions = {@BasicAuthDefinition(key = "basicAuth")})) -public class XacmlPdpRestController { +public class XacmlPdpRestController implements HealthcheckApi, StatisticsApi, DecisionApi, XacmlApi { private static final Logger LOGGER = LoggerFactory.getLogger(XacmlPdpRestController.class); public static final String APPLICATION_YAML = "application/yaml"; public static final String APPLICATION_XACML_JSON = "application/xacml+json"; public static final String APPLICATION_XACML_XML = "application/xacml+xml"; + @Context private HttpServletRequest request; @GET @Path("/healthcheck") - @ApiOperation(value = "Perform a system healthcheck", - notes = "Provides healthy status of the Policy Xacml PDP component", response = HealthCheckReport.class, - responseHeaders = { - @ResponseHeader(name = "X-MinorVersion", - description = "Used to request or communicate a MINOR version back from the client" - + " to the server, and from the server back to the client", - response = String.class), - @ResponseHeader(name = "X-PatchVersion", - description = "Used only to communicate a PATCH version in a response for" - + " troubleshooting purposes only, and will not be provided by" - + " the client on request", - response = String.class), - @ResponseHeader(name = "X-LatestVersion", - description = "Used only to communicate an API's latest version", response = String.class), - @ResponseHeader(name = "X-ONAP-RequestID", - description = "Used to track REST transactions for logging purpose", - response = UUID.class)}, - authorizations = @Authorization(value = "basicAuth"), tags = {"HealthCheck", }, - extensions = { - @Extension(name = "interface info", - properties = { - @ExtensionProperty(name = "pdpx-version", value = "1.0.0"), - @ExtensionProperty(name = "last-mod-release", value = "Dublin") - }) - }) - @ApiResponses(value = { - @ApiResponse(code = 401, message = "Authentication Error"), - @ApiResponse(code = 403, message = "Authorization Error"), - @ApiResponse(code = 500, message = "Internal Server Error")}) + @Override public Response healthcheck( - @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) { + @HeaderParam("X-ONAP-RequestID") UUID requestId) { return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId) .entity(new HealthCheckProvider().performHealthCheck()).build(); } @GET @Path("/statistics") - @ApiOperation(value = "Fetch current statistics", - notes = "Provides current statistics of the Policy Xacml PDP component", response = StatisticsReport.class, - responseHeaders = { - @ResponseHeader(name = "X-MinorVersion", - description = "Used to request or communicate a MINOR version back from the client" - + " to the server, and from the server back to the client", - response = String.class), - @ResponseHeader(name = "X-PatchVersion", - description = "Used only to communicate a PATCH version in a response for" - + " troubleshooting purposes only, and will not be provided by" - + " the client on request", - response = String.class), - @ResponseHeader(name = "X-LatestVersion", - description = "Used only to communicate an API's latest version", response = String.class), - @ResponseHeader(name = "X-ONAP-RequestID", - description = "Used to track REST transactions for logging purpose", - response = UUID.class)}, - authorizations = @Authorization(value = "basicAuth"), tags = {"Statistics", }, - extensions = { - @Extension(name = "interface info", - properties = { - @ExtensionProperty(name = "pdpx-version", value = "1.0.0"), - @ExtensionProperty(name = "last-mod-release", value = "Dublin") - }) - }) - @ApiResponses(value = { - @ApiResponse(code = 401, message = "Authentication Error"), - @ApiResponse(code = 403, message = "Authorization Error"), - @ApiResponse(code = 500, message = "Internal Server Error")}) + @Override public Response statistics( - @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) { + @HeaderParam("X-ONAP-RequestID") UUID requestId) { return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId) .entity(new StatisticsProvider().fetchCurrentStatistics()).build(); } + @POST + @Path("/decision") + @Override + public Response decision(DecisionRequest body, @HeaderParam("X-ONAP-RequestID") UUID requestId) { + return decision(body, requestId, request); + } + /** * Our decision entry point. * @@ -164,40 +88,8 @@ public class XacmlPdpRestController { * @param requestId Unique request id * @return DecisionResponse or ErrorResponse object */ - @POST - @Path("/decision") - @ApiOperation(value = "Fetch the decision using specified decision parameters", - notes = "Returns the policy decision from Policy Xacml PDP", response = DecisionResponse.class, - responseHeaders = { - @ResponseHeader(name = "X-MinorVersion", - description = "Used to request or communicate a MINOR version back from the client" - + " to the server, and from the server back to the client", - response = String.class), - @ResponseHeader(name = "X-PatchVersion", - description = "Used only to communicate a PATCH version in a response for" - + " troubleshooting purposes only, and will not be provided by" - + " the client on request", - response = String.class), - @ResponseHeader(name = "X-LatestVersion", - description = "Used only to communicate an API's latest version", response = String.class), - @ResponseHeader(name = "X-ONAP-RequestID", - description = "Used to track REST transactions for logging purpose", - response = UUID.class)}, - authorizations = @Authorization(value = "basicAuth"), tags = {"Decision", }, - extensions = { - @Extension(name = "interface info", - properties = { - @ExtensionProperty(name = "pdpx-version", value = "1.0.0"), - @ExtensionProperty(name = "last-mod-release", value = "Dublin") - }) - }) - @ApiResponses(value = { - @ApiResponse(code = 400, message = "Bad Request", response = ErrorResponse.class), - @ApiResponse(code = 401, message = "Authentication Error"), - @ApiResponse(code = 403, message = "Authorization Error"), - @ApiResponse(code = 500, message = "Internal Server Error")}) - public Response decision(DecisionRequest body, - @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId, + private Response decision(DecisionRequest body, + @HeaderParam("X-ONAP-RequestID") UUID requestId, @Context HttpServletRequest request) { try { return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId) @@ -222,39 +114,9 @@ public class XacmlPdpRestController { @Path("/xacml") @Produces({XacmlPdpRestController.APPLICATION_XACML_JSON, XacmlPdpRestController.APPLICATION_XACML_XML}) @Consumes({XacmlPdpRestController.APPLICATION_XACML_JSON, XacmlPdpRestController.APPLICATION_XACML_XML}) - @ApiOperation(value = "Fetch the decision using specified decision parameters", - notes = "Returns the policy decision from Policy Xacml PDP", - response = com.att.research.xacml.api.Response.class, - responseHeaders = { - @ResponseHeader(name = "X-MinorVersion", - description = "Used to request or communicate a MINOR version back from the client" - + " to the server, and from the server back to the client", - response = String.class), - @ResponseHeader(name = "X-PatchVersion", - description = "Used only to communicate a PATCH version in a response for" - + " troubleshooting purposes only, and will not be provided by" - + " the client on request", - response = String.class), - @ResponseHeader(name = "X-LatestVersion", - description = "Used only to communicate an API's latest version", response = String.class), - @ResponseHeader(name = "X-ONAP-RequestID", - description = "Used to track REST transactions for logging purpose", - response = UUID.class)}, - authorizations = @Authorization(value = "basicAuth"), tags = {"Decision", }, - extensions = { - @Extension(name = "interface info", - properties = { - @ExtensionProperty(name = "pdpx-version", value = "1.0.0"), - @ExtensionProperty(name = "last-mod-release", value = "Frankfurt") - }) - }) - @ApiResponses(value = { - @ApiResponse(code = 400, message = "Bad Request", response = ErrorResponse.class), - @ApiResponse(code = 401, message = "Authentication Error"), - @ApiResponse(code = 403, message = "Authorization Error"), - @ApiResponse(code = 500, message = "Internal Server Error")}) + @Override public Response xacml(Request body, - @HeaderParam("X-ONAP-RequestID") @ApiParam("RequestID for http transaction") UUID requestId) { + @HeaderParam("X-ONAP-RequestID") UUID requestId) { try { return addLoggingHeaders(addVersionControlHeaders(Response.status(Response.Status.OK)), requestId) .entity(new DecisionProvider().fetchNativeDecision(body)).build(); @@ -278,4 +140,6 @@ public class XacmlPdpRestController { } return rb.header("X-ONAP-RequestID", requestId); } -} + + +}
\ No newline at end of file |