From 39faa708e1f4e34930171dfcbd23876fe5c274e1 Mon Sep 17 00:00:00 2001 From: liamfallon Date: Fri, 10 Jan 2020 13:57:29 +0000 Subject: Fix policy-models to support data type properties Data type properties are not being stored correctly into the database when MariaDB is used (it worked fine in unit tests in H2). Issue-ID: POLICY-2315 Change-Id: Ia901a070292b338154f3766f5fc7b91d656038df Signed-off-by: liamfallon --- .../tosca/simple/concepts/JpaToscaDataType.java | 7 ++++++- .../tosca/simple/provider/SimpleToscaProvider.java | 2 +- .../onap/policy/models/tosca/utils/ToscaUtils.java | 21 +++++++++------------ .../policy/models/tosca/utils/ToscaUtilsTest.java | 20 ++++++++++---------- 4 files changed, 26 insertions(+), 24 deletions(-) (limited to 'models-tosca') diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java index e9590072e..86d67e4d8 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaDataType.java @@ -28,14 +28,18 @@ import java.util.LinkedHashMap; import java.util.List; import java.util.Map; import java.util.Map.Entry; + import javax.persistence.ElementCollection; import javax.persistence.Entity; import javax.persistence.Inheritance; import javax.persistence.InheritanceType; +import javax.persistence.Lob; import javax.persistence.Table; + import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NonNull; + import org.onap.policy.models.base.PfAuthorative; import org.onap.policy.models.base.PfConcept; import org.onap.policy.models.base.PfConceptKey; @@ -67,6 +71,7 @@ public class JpaToscaDataType extends JpaToscaEntityType implemen private List constraints; @ElementCollection + @Lob private Map properties; /** @@ -142,7 +147,7 @@ public class JpaToscaDataType extends JpaToscaEntityType implemen if (toscaDataType.getConstraints() != null) { constraints = new ArrayList<>(); - for (ToscaConstraint toscaConstraint: toscaDataType.getConstraints()) { + for (ToscaConstraint toscaConstraint : toscaDataType.getConstraints()) { constraints.add(JpaToscaConstraint.newInstance(toscaConstraint)); } } diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java index 0a7983c47..508b47060 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProvider.java @@ -189,7 +189,7 @@ public class SimpleToscaProvider { serviceTemplate.getPolicyTypes().getConceptMap().putAll(asConceptMap(jpaPolicyTypeList)); // Return all data types - // TODO: In the next review, return just the data types used by the policy types on the policy type list + // TODO: In an upcoming review, return just the data types used by the policy types on the policy type list List jpaDataTypeList = dao.getFiltered(JpaToscaDataType.class, null, null); if (!CollectionUtils.isEmpty(jpaDataTypeList)) { serviceTemplate.setDataTypes(new JpaToscaDataTypes()); diff --git a/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java b/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java index 5ba42fef5..0e1d8e96b 100644 --- a/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java +++ b/models-tosca/src/main/java/org/onap/policy/models/tosca/utils/ToscaUtils.java @@ -20,6 +20,8 @@ package org.onap.policy.models.tosca.utils; +import java.util.function.Function; + import javax.ws.rs.core.Response; import org.onap.policy.models.base.PfModelRuntimeException; @@ -102,8 +104,8 @@ public final class ToscaUtils { * @param serviceTemplate the service template containing policy types to be checked */ public static void assertExist(final JpaToscaServiceTemplate serviceTemplate, - final ToscaChecker checkerFunction) { - String message = checkerFunction.check(serviceTemplate); + final Function checkerFunction) { + String message = checkerFunction.apply(serviceTemplate); if (message != null) { LOGGER.warn(message); throw new PfModelRuntimeException(Response.Status.BAD_REQUEST, message); @@ -116,14 +118,14 @@ public final class ToscaUtils { * @param serviceTemplate the service template containing policy types to be checked */ public static boolean doExist(final JpaToscaServiceTemplate serviceTemplate, - final ToscaChecker checkerFunction) { - return checkerFunction.check(serviceTemplate) == null; + final Function checkerFunction) { + return checkerFunction.apply(serviceTemplate) == null; } /** * Check if data types have been specified correctly. */ - public static ToscaChecker checkDataTypesExist() { + public static Function checkDataTypesExist() { return serviceTemplate -> { if (serviceTemplate.getDataTypes() == null) { return "no data types specified on service template"; @@ -140,7 +142,7 @@ public final class ToscaUtils { /** * Check if policy types have been specified correctly. */ - public static ToscaChecker checkPolicyTypesExist() { + public static Function checkPolicyTypesExist() { return serviceTemplate -> { if (serviceTemplate.getPolicyTypes() == null) { return "no policy types specified on service template"; @@ -157,7 +159,7 @@ public final class ToscaUtils { /** * Check if policies have been specified correctly. */ - public static ToscaChecker checkPoliciesExist() { + public static Function checkPoliciesExist() { return serviceTemplate -> { if (serviceTemplate.getTopologyTemplate() == null) { return "topology template not specified on service template"; @@ -174,9 +176,4 @@ public final class ToscaUtils { return null; }; } - - @FunctionalInterface - interface ToscaChecker { - String check(final T serviceTemplate); - } } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/utils/ToscaUtilsTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/utils/ToscaUtilsTest.java index ebe01a65c..9b8eff13e 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/utils/ToscaUtilsTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/utils/ToscaUtilsTest.java @@ -47,7 +47,7 @@ public class ToscaUtilsTest { assertFalse(ToscaUtils.doDataTypesExist(jpaToscaServiceTemplate)); assertEquals("no data types specified on service template", - ToscaUtils.checkDataTypesExist().check(jpaToscaServiceTemplate)); + ToscaUtils.checkDataTypesExist().apply(jpaToscaServiceTemplate)); assertThatThrownBy(() -> { ToscaUtils.assertDataTypesExist(jpaToscaServiceTemplate); }).hasMessage("no data types specified on service template"); @@ -56,7 +56,7 @@ public class ToscaUtilsTest { assertFalse(ToscaUtils.doDataTypesExist(jpaToscaServiceTemplate)); assertEquals("list of data types specified on service template is empty", - ToscaUtils.checkDataTypesExist().check(jpaToscaServiceTemplate)); + ToscaUtils.checkDataTypesExist().apply(jpaToscaServiceTemplate)); assertThatThrownBy(() -> { ToscaUtils.assertDataTypesExist(jpaToscaServiceTemplate); }).hasMessage("list of data types specified on service template is empty"); @@ -64,7 +64,7 @@ public class ToscaUtilsTest { jpaToscaServiceTemplate.getDataTypes().getConceptMap().put(new PfConceptKey(), null); assertTrue(ToscaUtils.doDataTypesExist(jpaToscaServiceTemplate)); - assertEquals(null, ToscaUtils.checkDataTypesExist().check(jpaToscaServiceTemplate)); + assertEquals(null, ToscaUtils.checkDataTypesExist().apply(jpaToscaServiceTemplate)); assertThatCode(() -> { ToscaUtils.assertDataTypesExist(jpaToscaServiceTemplate); }).doesNotThrowAnyException(); @@ -77,7 +77,7 @@ public class ToscaUtilsTest { assertFalse(ToscaUtils.doPolicyTypesExist(jpaToscaServiceTemplate)); assertEquals("no policy types specified on service template", - ToscaUtils.checkPolicyTypesExist().check(jpaToscaServiceTemplate)); + ToscaUtils.checkPolicyTypesExist().apply(jpaToscaServiceTemplate)); assertThatThrownBy(() -> { ToscaUtils.assertPolicyTypesExist(jpaToscaServiceTemplate); }).hasMessage("no policy types specified on service template"); @@ -86,7 +86,7 @@ public class ToscaUtilsTest { assertFalse(ToscaUtils.doPolicyTypesExist(jpaToscaServiceTemplate)); assertEquals("list of policy types specified on service template is empty", - ToscaUtils.checkPolicyTypesExist().check(jpaToscaServiceTemplate)); + ToscaUtils.checkPolicyTypesExist().apply(jpaToscaServiceTemplate)); assertThatThrownBy(() -> { ToscaUtils.assertPolicyTypesExist(jpaToscaServiceTemplate); }).hasMessage("list of policy types specified on service template is empty"); @@ -94,7 +94,7 @@ public class ToscaUtilsTest { jpaToscaServiceTemplate.getPolicyTypes().getConceptMap().put(new PfConceptKey(), null); assertTrue(ToscaUtils.doPolicyTypesExist(jpaToscaServiceTemplate)); - assertEquals(null, ToscaUtils.checkPolicyTypesExist().check(jpaToscaServiceTemplate)); + assertEquals(null, ToscaUtils.checkPolicyTypesExist().apply(jpaToscaServiceTemplate)); assertThatCode(() -> { ToscaUtils.assertPolicyTypesExist(jpaToscaServiceTemplate); }).doesNotThrowAnyException(); @@ -106,7 +106,7 @@ public class ToscaUtilsTest { assertFalse(ToscaUtils.doPoliciesExist(jpaToscaServiceTemplate)); assertEquals("topology template not specified on service template", - ToscaUtils.checkPoliciesExist().check(jpaToscaServiceTemplate)); + ToscaUtils.checkPoliciesExist().apply(jpaToscaServiceTemplate)); assertThatThrownBy(() -> { ToscaUtils.assertPoliciesExist(jpaToscaServiceTemplate); }).hasMessage("topology template not specified on service template"); @@ -115,7 +115,7 @@ public class ToscaUtilsTest { assertFalse(ToscaUtils.doPoliciesExist(jpaToscaServiceTemplate)); assertEquals("no policies specified on topology template of service template", - ToscaUtils.checkPoliciesExist().check(jpaToscaServiceTemplate)); + ToscaUtils.checkPoliciesExist().apply(jpaToscaServiceTemplate)); assertThatThrownBy(() -> { ToscaUtils.assertPoliciesExist(jpaToscaServiceTemplate); }).hasMessage("no policies specified on topology template of service template"); @@ -124,7 +124,7 @@ public class ToscaUtilsTest { assertFalse(ToscaUtils.doPoliciesExist(jpaToscaServiceTemplate)); assertEquals("list of policies specified on topology template of service template is empty", - ToscaUtils.checkPoliciesExist().check(jpaToscaServiceTemplate)); + ToscaUtils.checkPoliciesExist().apply(jpaToscaServiceTemplate)); assertThatThrownBy(() -> { ToscaUtils.assertPoliciesExist(jpaToscaServiceTemplate); }).hasMessage("list of policies specified on topology template of service template is empty"); @@ -132,7 +132,7 @@ public class ToscaUtilsTest { jpaToscaServiceTemplate.getTopologyTemplate().getPolicies().getConceptMap().put(new PfConceptKey(), null); assertTrue(ToscaUtils.doPoliciesExist(jpaToscaServiceTemplate)); - assertEquals(null, ToscaUtils.checkPoliciesExist().check(jpaToscaServiceTemplate)); + assertEquals(null, ToscaUtils.checkPoliciesExist().apply(jpaToscaServiceTemplate)); assertThatCode(() -> { ToscaUtils.assertPoliciesExist(jpaToscaServiceTemplate); }).doesNotThrowAnyException(); -- cgit 1.2.3-korg