aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Mokry <michael.mokry@att.com>2019-02-20 10:13:53 -0600
committerMichael Mokry <michael.mokry@att.com>2019-02-26 14:55:57 -0600
commit64ee4aa0f333947317bcb97a96e08e7bdc60f162 (patch)
treeef07d799d088002967cf283bcc1415c24eba59ac
parentab1824d122b50d29e000bb58521d8dace9cba2b6 (diff)
Stubbed endpoints for Decision API and swagger
Includes: 1) Decision API endpoint with Swagger annotations 2) Provider class for Decision added to new provider package 3) Moved other provider classes to provider package 4) Decision model class added to new model package Note: This is just a draft and still needs a lot of work, please do not merge. Thanks in advance for the review comments. Issue-ID: POLICY-1516 Change-Id: Id7414b6cb3eee1b877a0c11521babbef4938a68f Signed-off-by: Michael Mokry <michael.mokry@att.com>
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/rest/XacmlPdpRestController.java54
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/rest/model/Decision.java27
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/rest/model/StatisticsReport.java (renamed from main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsReport.java)2
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/rest/provider/DecisionProvider.java38
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/rest/provider/HealthCheckProvider.java (renamed from main/src/main/java/org/onap/policy/pdpx/main/rest/HealthCheckProvider.java)2
-rw-r--r--main/src/main/java/org/onap/policy/pdpx/main/rest/provider/StatisticsProvider.java (renamed from main/src/main/java/org/onap/policy/pdpx/main/rest/StatisticsProvider.java)3
-rw-r--r--main/src/test/java/org/onap/policy/pdpx/main/rest/TestStatisticsReport.java4
-rw-r--r--main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpRestServer.java2
-rw-r--r--main/src/test/java/org/onap/policy/pdpx/main/rest/TestXacmlPdpStatistics.java3
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);