From 30670accb070b20c1c770d1ebbd6d72e24fee2db Mon Sep 17 00:00:00 2001 From: sebdet Date: Tue, 4 Aug 2020 14:16:00 +0200 Subject: Upgrade to java 11 MOve SDC to Java 11, this is one of the PR to move to Jdk 11, jenkins will have to be changed as well Issue-ID: SDC-2725 Change-Id: I85f13f14ba8004f6e9656093a837465a2e4af3e1 Signed-off-by: sebdet Signed-off-by: xuegao Signed-off-by: sebdet --- common/onap-tosca-datatype/pom.xml | 10 +++- .../sdc/tosca/datatypes/model/NodeTemplate.java | 64 ++++++++++++++++++++++ .../tosca/datatypes/model/NodeTemplateTest.java | 6 +- 3 files changed, 76 insertions(+), 4 deletions(-) (limited to 'common') diff --git a/common/onap-tosca-datatype/pom.xml b/common/onap-tosca-datatype/pom.xml index 9a621e02f1..e6c6bc5b28 100644 --- a/common/onap-tosca-datatype/pom.xml +++ b/common/onap-tosca-datatype/pom.xml @@ -33,7 +33,7 @@ org.yaml snakeyaml - 1.17 + ${snakeyaml.version} org.apache.commons @@ -90,4 +90,12 @@ test + + + + src/test/resources + true + + + diff --git a/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/datatypes/model/NodeTemplate.java b/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/datatypes/model/NodeTemplate.java index 82f1581fa9..ae1ca01673 100644 --- a/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/datatypes/model/NodeTemplate.java +++ b/common/onap-tosca-datatype/src/main/java/org/onap/sdc/tosca/datatypes/model/NodeTemplate.java @@ -20,16 +20,23 @@ package org.onap.sdc.tosca.datatypes.model; +import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Set; + import lombok.EqualsAndHashCode; import lombok.Getter; import lombok.Setter; + +import org.apache.commons.collections4.CollectionUtils; import org.apache.commons.collections4.MapUtils; import org.onap.sdc.tosca.error.ToscaRuntimeException; +import org.onap.sdc.tosca.services.ToscaExtensionYamlUtil; import org.onap.sdc.tosca.services.YamlUtil; +import org.yaml.snakeyaml.constructor.ConstructorException; @Getter @@ -37,6 +44,7 @@ import org.onap.sdc.tosca.services.YamlUtil; @EqualsAndHashCode public class NodeTemplate implements Template, Cloneable { + private static final String INVALID_TOSCA_REQUIREMENT_SECTION = "Invalid TOSCA requirement section"; private String type; private String description; private Map metadata; @@ -50,6 +58,62 @@ public class NodeTemplate implements Template, Cloneable { private NodeFilter node_filter; private String copy; + public void setRequirements(List requirementAssignmentObj) { + this.requirements = convertToscaRequirementAssignment(requirementAssignmentObj); + } + + public static List> convertToscaRequirementAssignment(List requirementAssignmentObj) { + + List> convertedRequirements = new ArrayList<>(); + if (CollectionUtils.isEmpty(requirementAssignmentObj)) { + return null; + } + for (Object requirementEntry : requirementAssignmentObj) { + convertToscaRequirementAssignmentEntry(convertedRequirements, requirementEntry); + } + return convertedRequirements; + } + + private static void convertToscaRequirementAssignmentEntry(List> convertedRequirements, Object requirementEntry) { + if (requirementEntry instanceof Map) { + try { + Set> requirementEntries = ((Map)requirementEntry).entrySet(); + for (Map.Entry toscaRequirements : requirementEntries) { + String key = toscaRequirements.getKey(); + Object requirementValue = toscaRequirements.getValue(); + if (requirementValue instanceof Map) { + RequirementAssignment requirementObject; + try { + YamlUtil yamlUtil = new YamlUtil(); + requirementObject = yamlUtil + .yamlToObject(yamlUtil.objectToYaml(requirementValue), RequirementAssignment.class); + } catch (ConstructorException ex) { + // The requirement might contains extended attribute, so try to parse it into RequirementAssignmentExt as well + ToscaExtensionYamlUtil toscaExtensionYamlUtil = new ToscaExtensionYamlUtil(); + requirementObject = toscaExtensionYamlUtil + .yamlToObject(toscaExtensionYamlUtil.objectToYaml(requirementValue), RequirementAssignment.class); + } + Map convertedToscaRequirement = new HashMap<>(); + convertedToscaRequirement.put(key, requirementObject); + convertedRequirements.add(convertedToscaRequirement); + } else if (requirementValue instanceof RequirementAssignment) { + Map convertedToscaRequirement = new HashMap<>(); + convertedToscaRequirement.put(key, (RequirementAssignment)requirementValue); + convertedRequirements.add(convertedToscaRequirement); + } + } + } catch (Exception ex) { + throw new ToscaRuntimeException(INVALID_TOSCA_REQUIREMENT_SECTION, ex); + } + } + } + + public void addRequirements(Map newRequirement) { + if (CollectionUtils.isEmpty(this.requirements)) { + this.requirements = new ArrayList>(); + } + this.requirements.add(newRequirement); + } public Map getNormalizeInterfaces() { if (MapUtils.isEmpty(interfaces)) { diff --git a/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/datatypes/model/NodeTemplateTest.java b/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/datatypes/model/NodeTemplateTest.java index b9f2b838c2..e265d4bd8b 100644 --- a/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/datatypes/model/NodeTemplateTest.java +++ b/common/onap-tosca-datatype/src/test/java/org/onap/sdc/tosca/datatypes/model/NodeTemplateTest.java @@ -75,17 +75,17 @@ public class NodeTemplateTest { @Test public void shouldHaveValidGettersAndSetters() { - assertThat(NodeTemplate.class, hasValidGettersAndSettersExcluding("normalizeInterfaces")); + assertThat(NodeTemplate.class, hasValidGettersAndSettersExcluding("requirements", "normalizeInterfaces")); } @Test public void shouldHaveValidEquals() { - assertThat(NodeTemplate.class, hasValidBeanEqualsExcluding("normalizeInterfaces")); + assertThat(NodeTemplate.class, hasValidBeanEqualsExcluding("requirements", "normalizeInterfaces")); } @Test public void shouldHaveValidHashCode() { - assertThat(NodeTemplate.class, hasValidBeanHashCodeExcluding("normalizeInterfaces")); + assertThat(NodeTemplate.class, hasValidBeanHashCodeExcluding("requirements", "normalizeInterfaces")); } private InterfaceDefinitionTemplate createInterfaceDefinitionTemplate() { -- cgit 1.2.3-korg