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 --- .../sdc/tosca/datatypes/model/NodeTemplate.java | 64 ++++++++++++++++++++++ 1 file changed, 64 insertions(+) (limited to 'common/onap-tosca-datatype/src/main/java/org/onap') 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)) { -- cgit 1.2.3-korg