From ed11e882d9128616156a2be08744e5a9bdb01111 Mon Sep 17 00:00:00 2001 From: liamfallon Date: Tue, 2 Mar 2021 10:55:31 +0000 Subject: Refactor models for common type handling Currently we have handling for "type" and "type_version" on TOSCA Policy class. However, the concept of a "type" and "type_version" also exists on the ToscaCapabilityAssignment, the ToscaNodeTemplate, and the ToscaRequriement classes. This review makes the type handling on Policy generic, thus extending it to the other three types. Issue-ID: POLICY-2983 Change-Id: Ia20e3a8c485f4841257075df08e0784eac415770 Signed-off-by: liamfallon --- .../concepts/ToscaWithObjectPropertiesTest.java | 45 --------------------- .../ToscaWithTypeAndObjectPropertiesTest.java | 46 ++++++++++++++++++++++ .../concepts/JpaToscaCapabilityAssignmentTest.java | 28 +++++++++---- .../tosca/simple/concepts/JpaToscaPolicyTest.java | 5 +-- .../concepts/JpaToscaWithStringPropertiesTest.java | 28 +++++++++---- .../simple/provider/SimpleToscaProviderTest.java | 16 ++++---- 6 files changed, 97 insertions(+), 71 deletions(-) delete mode 100644 models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithObjectPropertiesTest.java create mode 100644 models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithTypeAndObjectPropertiesTest.java (limited to 'models-tosca/src/test/java') diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithObjectPropertiesTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithObjectPropertiesTest.java deleted file mode 100644 index 7186a3ff0..000000000 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithObjectPropertiesTest.java +++ /dev/null @@ -1,45 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * ONAP - * ================================================================================ - * Copyright (C) 2021 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. - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.models.tosca.authorative.concepts; - -import static org.assertj.core.api.Assertions.assertThatThrownBy; -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotEquals; - -import java.util.Map; -import org.junit.Test; - -public class ToscaWithObjectPropertiesTest { - - @Test - public void testCopyConstructor() { - ToscaWithObjectProperties tosca = new ToscaWithObjectProperties(); - assertEquals(tosca, new ToscaWithObjectProperties(tosca)); - - tosca.setProperties(Map.of("abc", 10, "def", "world")); - assertEquals(tosca, new ToscaWithObjectProperties(tosca)); - - assertNotEquals(tosca, new ToscaWithObjectProperties()); - - assertThatThrownBy(() -> new ToscaWithObjectProperties(null)).hasMessageContaining("copyObject") - .hasMessageContaining("is null"); - } -} diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithTypeAndObjectPropertiesTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithTypeAndObjectPropertiesTest.java new file mode 100644 index 000000000..79fb26540 --- /dev/null +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/authorative/concepts/ToscaWithTypeAndObjectPropertiesTest.java @@ -0,0 +1,46 @@ +/*- + * ============LICENSE_START======================================================= + * ONAP + * ================================================================================ + * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2021 Nordix Foundation. + * ================================================================================ + * 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. + * ============LICENSE_END========================================================= + */ + +package org.onap.policy.models.tosca.authorative.concepts; + +import static org.assertj.core.api.Assertions.assertThatThrownBy; +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; + +import java.util.Map; +import org.junit.Test; + +public class ToscaWithTypeAndObjectPropertiesTest { + + @Test + public void testCopyConstructor() { + ToscaWithTypeAndObjectProperties tosca = new ToscaWithTypeAndObjectProperties(); + assertEquals(tosca, new ToscaWithTypeAndObjectProperties(tosca)); + + tosca.setProperties(Map.of("abc", 10, "def", "world")); + assertEquals(tosca, new ToscaWithTypeAndObjectProperties(tosca)); + + assertNotEquals(tosca, new ToscaWithTypeAndObjectProperties()); + + assertThatThrownBy(() -> new ToscaWithTypeAndObjectProperties(null)).hasMessageContaining("copyObject") + .hasMessageContaining("is null"); + } +} diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaCapabilityAssignmentTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaCapabilityAssignmentTest.java index 9637d4252..4fcdd8c0d 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaCapabilityAssignmentTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaCapabilityAssignmentTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2020 Nordix Foundation. + * Copyright (C) 2020-2021 Nordix Foundation. * Modifications Copyright (C) 2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -44,10 +44,16 @@ public class JpaToscaCapabilityAssignmentTest { @Test public void testPropertyPojo() { + ToscaCapabilityAssignment tca = new ToscaCapabilityAssignment(); + tca.setName("world"); + tca.setVersion("1.2.3"); + tca.setType("planet"); + tca.setTypeVersion("4.5.6"); + assertNotNull(new JpaToscaCapabilityAssignment()); assertNotNull(new JpaToscaCapabilityAssignment(new PfConceptKey())); assertNotNull(new JpaToscaCapabilityAssignment(new JpaToscaCapabilityAssignment())); - assertNotNull(new JpaToscaCapabilityAssignment(new ToscaCapabilityAssignment())); + assertNotNull(new JpaToscaCapabilityAssignment(tca)); assertThatThrownBy(() -> new JpaToscaCapabilityAssignment((PfConceptKey) null)).hasMessageMatching(KEY_IS_NULL); assertThatThrownBy(() -> new JpaToscaCapabilityAssignment((JpaToscaCapabilityAssignment) null)) @@ -149,11 +155,19 @@ public class JpaToscaCapabilityAssignmentTest { @Test public void testAuthorative() { - ToscaCapabilityAssignment tca = - new JpaToscaCapabilityAssignment(new ToscaCapabilityAssignment()).toAuthorative(); + ToscaCapabilityAssignment tca = new ToscaCapabilityAssignment(); + tca.setName("world"); + tca.setVersion("1.2.3"); + tca.setType("planet"); + tca.setTypeVersion("4.5.6"); + + ToscaCapabilityAssignment tcaConsTo = + new JpaToscaCapabilityAssignment(tca).toAuthorative(); + + assertEquals(tca, tcaConsTo); - JpaToscaCapabilityAssignment jtca = new JpaToscaCapabilityAssignment(tca); - ToscaCapabilityAssignment tca2 = jtca.toAuthorative(); - assertEquals(tca, tca2); + JpaToscaCapabilityAssignment jtca = new JpaToscaCapabilityAssignment(tcaConsTo); + ToscaCapabilityAssignment tcaFromTo = jtca.toAuthorative(); + assertEquals(tca, tcaFromTo); } } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTest.java index 48bcb0bee..b9adce195 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaPolicyTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019-2020 Nordix Foundation. + * Copyright (C) 2019-2021 Nordix Foundation. * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -61,8 +61,7 @@ public class JpaToscaPolicyTest { assertThatThrownBy(() -> { new JpaToscaPolicy(pol); }).hasMessage( - "PolicyType version not specified, the version of the PolicyType for this policy must be specified in" - + " the type_version field"); + "Version not specified, the version of this TOSCA entity must be specified in the type_version field"); assertThatThrownBy(() -> { new JpaToscaPolicy((PfConceptKey) null); diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithStringPropertiesTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithStringPropertiesTest.java index 7cd6facf0..f232fcb7b 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithStringPropertiesTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/concepts/JpaToscaWithStringPropertiesTest.java @@ -3,6 +3,7 @@ * ONAP * ================================================================================ * Copyright (C) 2021 AT&T Intellectual Property. All rights reserved. + * Modifications Copyright (C) 2021 Nordix Foundation. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -32,7 +33,7 @@ import org.junit.Before; import org.junit.Test; import org.onap.policy.common.parameters.annotations.NotNull; import org.onap.policy.models.base.PfConceptKey; -import org.onap.policy.models.tosca.authorative.concepts.ToscaWithObjectProperties; +import org.onap.policy.models.tosca.authorative.concepts.ToscaWithTypeAndObjectProperties; public class JpaToscaWithStringPropertiesTest { private static final String SOME_DESCRIPTION = "some description"; @@ -53,13 +54,14 @@ public class JpaToscaWithStringPropertiesTest { @Test public void testGetKeys() { PfConceptKey key = new PfConceptKey("bye", "9.8.7"); + PfConceptKey typeKey = new PfConceptKey("type", "6.5.4"); - jpa = new MyJpa(key); + jpa = new MyJpa(key, typeKey); jpa.setDescription(SOME_DESCRIPTION); jpa.setProperties(Map.of(KEY1, STRING1, KEY2, STRING2)); // properties should be ignored - assertThat(jpa.getKeys()).isEqualTo(List.of(key)); + assertThat(jpa.getKeys()).isEqualTo(List.of(key, typeKey)); } @Test @@ -85,6 +87,8 @@ public class JpaToscaWithStringPropertiesTest { @Test public void testFromAuthorative() { MyTosca tosca = new MyTosca(); + tosca.setType("type"); + tosca.setTypeVersion("1.2.3"); tosca.setDescription(SOME_DESCRIPTION); jpa.fromAuthorative(tosca); @@ -144,6 +148,8 @@ public class JpaToscaWithStringPropertiesTest { MyTosca tosca = new MyTosca(); tosca.setName("world"); tosca.setVersion("3.2.1"); + tosca.setType("planet"); + tosca.setTypeVersion("6.5.4"); tosca.setDescription(SOME_DESCRIPTION); tosca.setProperties(Map.of(KEY1, INT1, KEY2, INT2)); @@ -151,6 +157,7 @@ public class JpaToscaWithStringPropertiesTest { assertEquals(SOME_DESCRIPTION, jpa.getDescription()); assertThat(jpa.getProperties()).isEqualTo(Map.of(KEY1, STRING1, KEY2, STRING2)); assertEquals(new PfConceptKey("world", "3.2.1"), jpa.getKey()); + assertEquals(new PfConceptKey("planet", "6.5.4"), jpa.getType()); } @Test @@ -159,8 +166,12 @@ public class JpaToscaWithStringPropertiesTest { jpa.setText("some text"); assertThat(jpa.validateWithKey("fieldA").isValid()).isFalse(); - // valid + // not valid, type is not set jpa.setKey(new PfConceptKey("xyz", "2.3.4")); + assertThat(jpa.validateWithKey("fieldB").isValid()).isFalse(); + + // valid, type is set + jpa.setType(new PfConceptKey("uvw", "5.6.7")); assertThat(jpa.validateWithKey("fieldB").isValid()).isTrue(); // null text - bean validator should fail @@ -168,12 +179,11 @@ public class JpaToscaWithStringPropertiesTest { assertThat(jpa.validateWithKey("fieldA").isValid()).isFalse(); } - private static class MyTosca extends ToscaWithObjectProperties { - + private static class MyTosca extends ToscaWithTypeAndObjectProperties { } @NoArgsConstructor - protected static class MyJpa extends JpaToscaWithStringProperties { + protected static class MyJpa extends JpaToscaWithTypeAndStringProperties { private static final long serialVersionUID = 1L; @NotNull @@ -189,6 +199,10 @@ public class JpaToscaWithStringPropertiesTest { super(key); } + public MyJpa(PfConceptKey key, PfConceptKey type) { + super(key, type); + } + public MyJpa(MyTosca tosca) { super(tosca); } diff --git a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java index a926ca149..07624aeee 100644 --- a/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java +++ b/models-tosca/src/test/java/org/onap/policy/models/tosca/simple/provider/SimpleToscaProviderTest.java @@ -1,6 +1,6 @@ /*- * ============LICENSE_START======================================================= - * Copyright (C) 2019-2020 Nordix Foundation. + * Copyright (C) 2019-2021 Nordix Foundation. * Modifications Copyright (C) 2019-2020 AT&T Intellectual Property. All rights reserved. * ================================================================================ * Licensed under the Apache License, Version 2.0 (the "License"); @@ -400,13 +400,12 @@ public class SimpleToscaProviderTest { assertThatThrownBy(() -> { originalServiceTemplate.fromAuthorative(toscaServiceTemplate); - }).hasMessage("PolicyType type not specified, the type of the PolicyType for this policy must be " - + "specified in the type field"); + }).hasMessage("Type not specified, the type of this TOSCA entity must be specified in the type field"); toscaPolicy.setType("IDontExist"); assertThatThrownBy(() -> { originalServiceTemplate.fromAuthorative(toscaServiceTemplate); - }).hasMessage("PolicyType version not specified, the version of the PolicyType for this policy must be " + }).hasMessage("Version not specified, the version of this TOSCA entity must be " + "specified in the type_version field"); toscaPolicy.setTypeVersion("hello"); @@ -420,7 +419,7 @@ public class SimpleToscaProviderTest { assertThatThrownBy(() -> { new SimpleToscaProvider().createPolicies(pfDao, originalServiceTemplate); }).hasMessageContaining("policy type").hasMessageContaining("IDontExist:99.100.101") - .hasMessageContaining(Validated.NOT_FOUND); + .hasMessageContaining(Validated.NOT_FOUND); toscaPolicy.setType("IDontExist"); originalServiceTemplate.fromAuthorative(toscaServiceTemplate); @@ -429,8 +428,7 @@ public class SimpleToscaProviderTest { assertThatThrownBy(() -> { originalServiceTemplate.fromAuthorative(toscaServiceTemplate); - }).hasMessage("PolicyType type not specified, the type of the PolicyType for this policy must be " - + "specified in the type field"); + }).hasMessage("Type not specified, the type of this TOSCA entity must be specified in the type field"); toscaPolicy.setType(originalPolicyType); toscaPolicy.setTypeVersion(originalPolicyTypeVersion); @@ -525,8 +523,8 @@ public class SimpleToscaProviderTest { serviceTemplateFragment.getPolicyTypes().getConceptMap().put(badPt.getKey(), badPt); assertThatThrownBy(() -> new SimpleToscaProvider().appendToServiceTemplate(pfDao, serviceTemplateFragment)) - .hasMessageContaining("key on concept entry").hasMessageContaining("NULL:0.0.0") - .hasMessageContaining(Validated.IS_A_NULL_KEY); + .hasMessageContaining("key on concept entry").hasMessageContaining("NULL:0.0.0") + .hasMessageContaining(Validated.IS_A_NULL_KEY); } @Test -- cgit 1.2.3-korg