From 1df1c6aeb21b50ab5c4f7c4a7e6da7bc8abed62e Mon Sep 17 00:00:00 2001 From: Jim Hahn Date: Thu, 12 Sep 2019 16:05:18 -0400 Subject: [PATCH] Add yaml support to xacml-pdp rest server Also modified code to use StandardYamlCoder. Change-Id: I0596c8b054339ac68ef8c4250cd25b9ff88d47e4 Issue-ID: POLICY-2085 Signed-off-by: Jim Hahn --- applications/common/pom.xml | 5 +++++ .../policy/pdp/xacml/application/common/TestUtils.java | 10 +++------- .../application/common/std/StdMatchableTranslator.java | 1 - .../common/std/StdMatchableTranslatorTest.java | 15 ++++----------- .../application/guard/CoordinationGuardTranslator.java | 11 +++++------ .../policy/pdpx/main/rest/XacmlPdpRestController.java | 5 +++-- pom.xml | 16 ++++++++-------- 7 files changed, 28 insertions(+), 35 deletions(-) diff --git a/applications/common/pom.xml b/applications/common/pom.xml index 8613a94d..dea04007 100644 --- a/applications/common/pom.xml +++ b/applications/common/pom.xml @@ -52,6 +52,11 @@ policy-endpoints ${policy.common.version} + + org.onap.policy.common + utils + ${policy.common.version} + org.onap.policy.common utils-test diff --git a/applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/TestUtils.java b/applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/TestUtils.java index f720fec4..3aa23eee 100644 --- a/applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/TestUtils.java +++ b/applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/TestUtils.java @@ -27,18 +27,17 @@ import java.util.List; import java.util.Map; import org.onap.policy.common.utils.coder.CoderException; -import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.coder.StandardYamlCoder; import org.onap.policy.common.utils.resources.ResourceUtils; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; import org.onap.policy.models.tosca.authorative.concepts.ToscaServiceTemplate; import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.yaml.snakeyaml.Yaml; public class TestUtils { private static final Logger LOGGER = LoggerFactory.getLogger(TestUtils.class); - private static final StandardCoder standardCoder = new StandardCoder(); + private static final StandardYamlCoder yamlCoder = new StandardYamlCoder(); private TestUtils() { super(); @@ -62,13 +61,10 @@ public class TestUtils { // Decode it // String policyYaml = ResourceUtils.getResourceAsString(resourceFile); - Yaml yaml = new Yaml(); - Object yamlObject = yaml.load(policyYaml); - String yamlAsJsonString = standardCoder.encode(yamlObject); // // Serialize it into a class // - ToscaServiceTemplate serviceTemplate = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + ToscaServiceTemplate serviceTemplate = yamlCoder.decode(policyYaml, ToscaServiceTemplate.class); // // Make sure all the fields are setup properly // diff --git a/applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/std/StdMatchableTranslator.java b/applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/std/StdMatchableTranslator.java index 1c69c7a6..0575ef1b 100644 --- a/applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/std/StdMatchableTranslator.java +++ b/applications/common/src/main/java/org/onap/policy/pdp/xacml/application/common/std/StdMatchableTranslator.java @@ -32,7 +32,6 @@ import com.att.research.xacml.api.Response; import com.att.research.xacml.api.Result; import com.att.research.xacml.api.XACML3; import com.att.research.xacml.std.IdentifierImpl; -import com.att.research.xacml.std.annotations.RequestParser; import com.att.research.xacml.util.XACMLPolicyWriter; import com.google.gson.Gson; import java.io.ByteArrayOutputStream; diff --git a/applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/std/StdMatchableTranslatorTest.java b/applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/std/StdMatchableTranslatorTest.java index 3e690882..3323040f 100644 --- a/applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/std/StdMatchableTranslatorTest.java +++ b/applications/common/src/test/java/org/onap/policy/pdp/xacml/application/common/std/StdMatchableTranslatorTest.java @@ -49,7 +49,7 @@ import org.onap.policy.common.endpoints.parameters.RestServerParameters; import org.onap.policy.common.endpoints.properties.PolicyEndPointProperties; import org.onap.policy.common.gson.GsonMessageBodyHandler; import org.onap.policy.common.utils.coder.CoderException; -import org.onap.policy.common.utils.coder.StandardCoder; +import org.onap.policy.common.utils.coder.StandardYamlCoder; import org.onap.policy.common.utils.network.NetworkUtil; import org.onap.policy.common.utils.resources.ResourceUtils; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; @@ -59,13 +59,12 @@ import org.onap.policy.models.tosca.simple.concepts.JpaToscaServiceTemplate; import org.onap.policy.pdp.xacml.application.common.ToscaPolicyConversionException; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.yaml.snakeyaml.Yaml; public class StdMatchableTranslatorTest { private static final Logger logger = LoggerFactory.getLogger(StdMatchableTranslatorTest.class); private static final String CLIENT_NAME = "policy-api"; - private static final StandardCoder standardCoder = new StandardCoder(); + private static final StandardYamlCoder yamlCoder = new StandardYamlCoder(); private static int port; private static RestServerParameters clientParams; private static ToscaPolicyType testPolicyType; @@ -116,13 +115,10 @@ public class StdMatchableTranslatorTest { // Load our test policy type // String policyYaml = ResourceUtils.getResourceAsString("matchable/onap.policies.Test-1.0.0.yaml"); - Yaml yaml = new Yaml(); - Object yamlObject = yaml.load(policyYaml); - String yamlAsJsonString = standardCoder.encode(yamlObject); // // Serialize it into a class // - ToscaServiceTemplate serviceTemplate = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + ToscaServiceTemplate serviceTemplate = yamlCoder.decode(policyYaml, ToscaServiceTemplate.class); // // Make sure all the fields are setup properly // @@ -160,13 +156,10 @@ public class StdMatchableTranslatorTest { // String policyYaml = ResourceUtils.getResourceAsString( "src/test/resources/matchable/test.policies.input.tosca.yaml"); - Yaml yaml = new Yaml(); - Object yamlObject = yaml.load(policyYaml); - String yamlAsJsonString = standardCoder.encode(yamlObject); // // Serialize it into a class // - ToscaServiceTemplate serviceTemplate = standardCoder.decode(yamlAsJsonString, ToscaServiceTemplate.class); + ToscaServiceTemplate serviceTemplate = yamlCoder.decode(policyYaml, ToscaServiceTemplate.class); // // Make sure all the fields are setup properly // diff --git a/applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/CoordinationGuardTranslator.java b/applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/CoordinationGuardTranslator.java index a93e2811..92e0301d 100644 --- a/applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/CoordinationGuardTranslator.java +++ b/applications/guard/src/main/java/org/onap/policy/xacml/pdp/application/guard/CoordinationGuardTranslator.java @@ -43,6 +43,8 @@ import java.util.stream.Stream; import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType; import org.apache.commons.io.IOUtils; +import org.onap.policy.common.utils.coder.CoderException; +import org.onap.policy.common.utils.coder.StandardYamlCoder; import org.onap.policy.models.decisions.concepts.DecisionRequest; import org.onap.policy.models.decisions.concepts.DecisionResponse; import org.onap.policy.models.tosca.authorative.concepts.ToscaPolicy; @@ -50,8 +52,6 @@ import org.onap.policy.pdp.xacml.application.common.ToscaPolicyConversionExcepti import org.onap.policy.pdp.xacml.application.common.ToscaPolicyTranslator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.yaml.snakeyaml.Yaml; -import org.yaml.snakeyaml.constructor.Constructor; public class CoordinationGuardTranslator implements ToscaPolicyTranslator { @@ -117,11 +117,10 @@ public class CoordinationGuardTranslator implements ToscaPolicyTranslator { // // Read the yaml into our Java Object // - Yaml yaml = new Yaml(new Constructor(CoordinationDirective.class)); - Object obj = yaml.load(contents); + CoordinationDirective obj = new StandardYamlCoder().decode(contents, CoordinationDirective.class); LOGGER.debug(contents); - return (CoordinationDirective) obj; - } catch (IOException e) { + return obj; + } catch (IOException | CoderException e) { LOGGER.error("Error while loading YAML coordination directive", e); } return null; 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 265dd686..3de830e3 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 @@ -62,14 +62,15 @@ import org.onap.policy.pdpx.main.rest.provider.StatisticsProvider; */ @Path("/policy/pdpx/v1") @Api -@Produces(MediaType.APPLICATION_JSON) -@Consumes(MediaType.APPLICATION_JSON) +@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 static final String APPLICATION_YAML = "application/yaml"; @GET @Path("/healthcheck") diff --git a/pom.xml b/pom.xml index 457c76ec..c52799a7 100644 --- a/pom.xml +++ b/pom.xml @@ -7,9 +7,9 @@ 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. @@ -44,8 +44,8 @@ ${project.basedir}/../target/code-coverage/jacoco-ut.exec ${project.basedir}/../target/code-coverage/jacoco-it.exec reuseReports - - 1.5.2 + + 1.6.0-SNAPSHOT 2.1.3 @@ -55,7 +55,7 @@ packages testsuites - + junit @@ -118,7 +118,7 @@ ${policy.models.version} - + ecomp-site @@ -164,7 +164,7 @@ process-sources - onap-checkstyle/onap-java-style.xml @@ -206,7 +206,7 @@ - pre-unit-test -- 2.16.6