diff options
9 files changed, 120 insertions, 15 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 b061c96d..dc091f03 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 @@ -22,44 +22,80 @@ package org.onap.policy.pdpx.main.rest; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; +import io.swagger.annotations.ApiResponse; +import io.swagger.annotations.ApiResponses; +import io.swagger.annotations.Authorization; +import io.swagger.annotations.BasicAuthDefinition; import io.swagger.annotations.Info; +import io.swagger.annotations.SecurityDefinition; import io.swagger.annotations.SwaggerDefinition; import io.swagger.annotations.Tag; +import javax.ws.rs.Consumes; import javax.ws.rs.GET; +import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.onap.policy.common.endpoints.report.HealthCheckReport; - - +import org.onap.policy.pdpx.main.rest.model.Decision; +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; /** * Class to provide xacml pdp REST services. * */ -@Path("/") +@Path("/policy/pdpx/v1") @Api @Produces(MediaType.APPLICATION_JSON) +@Consumes(MediaType.APPLICATION_JSON) @SwaggerDefinition(info = @Info(description = "Policy Xacml PDP Service", version = "v1.0", title = "Policy Xacml PDP"), consumes = {MediaType.APPLICATION_JSON}, produces = {MediaType.APPLICATION_JSON}, - schemes = {SwaggerDefinition.Scheme.HTTP}, - tags = {@Tag(name = "policy-pdpx", description = "Policy Xacml PDP Service Operations")}) + schemes = {SwaggerDefinition.Scheme.HTTP, SwaggerDefinition.Scheme.HTTPS}, + tags = {@Tag(name = "policy-pdpx", description = "Policy Xacml PDP Service Operations")}, + securityDefinition = @SecurityDefinition(basicAuthDefinitions = {@BasicAuthDefinition(key = "basicAuth")})) public class XacmlPdpRestController { @GET - @Path("healthcheck") + @Path("/healthcheck") @ApiOperation(value = "Perform a system healthcheck", - notes = "Provides healthy status of the Policy Xacml PDP component", response = HealthCheckReport.class) + notes = "Provides healthy status of the Policy Xacml PDP component", response = HealthCheckReport.class, + authorizations = @Authorization(value = "basicAuth")) + @ApiResponses(value = { + @ApiResponse(code = 401, message = "Authentication Error"), + @ApiResponse(code = 403, message = "Authorization Error"), + @ApiResponse(code = 500, message = "Internal Server Error")}) public Response healthcheck() { return Response.status(Response.Status.OK).entity(new HealthCheckProvider().performHealthCheck()).build(); } @GET - @Path("statistics") + @Path("/statistics") @ApiOperation(value = "Fetch current statistics", - notes = "Provides current statistics of the Policy Xacml PDP component", response = StatisticsReport.class) + notes = "Provides current statistics of the Policy Xacml PDP component", response = StatisticsReport.class, + authorizations = @Authorization(value = "basicAuth")) + @ApiResponses(value = { + @ApiResponse(code = 401, message = "Authentication Error"), + @ApiResponse(code = 403, message = "Authorization Error"), + @ApiResponse(code = 500, message = "Internal Server Error")}) public Response statistics() { return Response.status(Response.Status.OK).entity(new StatisticsProvider().fetchCurrentStatistics()).build(); } + + @POST + @Path("/decision") + @ApiOperation(value = "Fetch the decision using specified decision parameters", + notes = "Returns the policy decision from Policy Xacml PDP", response = Decision.class, + authorizations = @Authorization(value = "basicAuth"), + tags = {"Decision",}) + @ApiResponses(value = {@ApiResponse(code = 400, message = "Bad Request"), + @ApiResponse(code = 401, message = "Authentication Error"), + @ApiResponse(code = 403, message = "Authorization Error"), + @ApiResponse(code = 500, message = "Internal Server Error")}) + public Response decision(Decision body) { + return Response.status(Response.Status.OK).entity(new DecisionProvider().fetchDecision()).build(); + } } diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/model/Decision.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/model/Decision.java new file mode 100644 index 00000000..d09dac9c --- /dev/null +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/model/Decision.java @@ -0,0 +1,27 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 AT&T Intellectual Property. 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdpx.main.rest.model; + +public class Decision { + + //TODO + +} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsReport.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/model/StatisticsReport.java index f37b1d36..36177034 100644 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsReport.java +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/model/StatisticsReport.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.policy.pdpx.main.rest; +package org.onap.policy.pdpx.main.rest.model; /** * Class to represent statistics report of xacmlPdp service. diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java new file mode 100644 index 00000000..62190043 --- /dev/null +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java @@ -0,0 +1,38 @@ +/*- + * ============LICENSE_START======================================================= + * Copyright (C) 2019 AT&T Intellectual Property. 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. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + * + * SPDX-License-Identifier: Apache-2.0 + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.pdpx.main.rest.provider; + +import org.onap.policy.pdpx.main.rest.model.Decision; + + +public class DecisionProvider { + + /** + * Retrieves the policy decision for the specified parameters. + * + * @return the Decision object + */ + public Decision fetchDecision() { + // placeholder + return new Decision(); + } + +} diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/HealthCheckProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/HealthCheckProvider.java index e57ba180..1c77d552 100644 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/HealthCheckProvider.java +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/HealthCheckProvider.java @@ -18,7 +18,7 @@ * ============LICENSE_END========================================================= */ -package org.onap.policy.pdpx.main.rest; +package org.onap.policy.pdpx.main.rest.provider; import org.onap.policy.common.endpoints.report.HealthCheckReport; import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator; diff --git a/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsProvider.java b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/StatisticsProvider.java index f3580531..7b883280 100644 --- a/main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsProvider.java +++ b/main/src/main/java/org/onap/policy/pdpx/main/rest/provider/StatisticsProvider.java @@ -18,9 +18,10 @@ * ============LICENSE_END========================================================= */ -package org.onap.policy.pdpx.main.rest; +package org.onap.policy.pdpx.main.rest.provider; import org.onap.policy.pdpx.main.rest.XacmlPdpStatisticsManager; +import org.onap.policy.pdpx.main.rest.model.StatisticsReport; import org.onap.policy.pdpx.main.startstop.XacmlPdpActivator; /** diff --git a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java index a116a154..eca28d0b 100644 --- a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java +++ b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java @@ -23,12 +23,14 @@ package org.onap.policy.pdpx.main.rest; import com.openpojo.reflection.filters.FilterClassName; import com.openpojo.validation.Validator; import com.openpojo.validation.ValidatorBuilder; +import com.openpojo.validation.rule.impl.GetterMustExistRule; import com.openpojo.validation.rule.impl.SetterMustExistRule; import com.openpojo.validation.test.impl.GetterTester; import com.openpojo.validation.test.impl.SetterTester; import org.junit.Test; import org.onap.policy.common.utils.validation.ToStringTester; +import org.onap.policy.pdpx.main.rest.model.StatisticsReport; /** * Class to perform unit testing of {@link StatisticsReport}. @@ -39,7 +41,7 @@ public class TestStatisticsReport { @Test public void testStatisticsReport() { final Validator validator = ValidatorBuilder.create().with(new ToStringTester()).with(new SetterMustExistRule()) - .with(new SetterTester()).with(new GetterTester()).build(); + .with(new GetterMustExistRule()).with(new SetterTester()).with(new GetterTester()).build(); validator.validate(StatisticsReport.class.getPackage().getName(), new FilterClassName(StatisticsReport.class.getName())); } diff --git a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java index d9a0e9b0..2170c8a3 100644 --- a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java +++ b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java @@ -109,7 +109,7 @@ public class TestXacmlPdpRestServer { clientConfig.register(feature); final Client client = ClientBuilder.newClient(clientConfig); - final WebTarget webTarget = client.target("http://localhost:6969/healthcheck"); + final WebTarget webTarget = client.target("http://localhost:6969/policy/pdpx/v1/healthcheck"); final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON); diff --git a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java index b38e92d2..ee05ff06 100644 --- a/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java +++ b/main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java @@ -38,6 +38,7 @@ import org.onap.policy.pdpx.main.PolicyXacmlPdpException; import org.onap.policy.pdpx.main.parameters.CommonTestData; import org.onap.policy.pdpx.main.parameters.RestServerParameters; import org.onap.policy.pdpx.main.rest.XacmlPdpStatisticsManager; +import org.onap.policy.pdpx.main.rest.model.StatisticsReport; import org.onap.policy.pdpx.main.startstop.Main; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,7 +104,7 @@ public class TestXacmlPdpStatistics { clientConfig.register(feature); final Client client = ClientBuilder.newClient(clientConfig); - final WebTarget webTarget = client.target("http://localhost:6969/statistics"); + final WebTarget webTarget = client.target("http://localhost:6969/policy/pdpx/v1/statistics"); final Invocation.Builder invocationBuilder = webTarget.request(MediaType.APPLICATION_JSON); |