From f4668df71072c8ecd4b9d05423006265b36a6ef7 Mon Sep 17 00:00:00 2001 From: vasraz Date: Fri, 22 Sep 2023 14:51:31 +0100 Subject: Fix 'Substitution Node not updated during import'-bug Signed-off-by: Vasyl Razinkov Change-Id: I3b99e4c60a5971916ed593b8d4161da58ddab6d6 Issue-ID: SDC-4633 --- .../sdc/be/components/csar/ServiceCsarInfo.java | 20 +++++++++++--------- .../components/csar/YamlTemplateParsingHandler.java | 9 +++------ .../openecomp/sdc/be/tosca/CommonCsarGenerator.java | 12 ++++++------ 3 files changed, 20 insertions(+), 21 deletions(-) (limited to 'catalog-be/src/main') diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/ServiceCsarInfo.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/ServiceCsarInfo.java index 7837588178..8352a8d628 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/ServiceCsarInfo.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/ServiceCsarInfo.java @@ -22,6 +22,7 @@ package org.openecomp.sdc.be.components.csar; import static org.openecomp.sdc.be.components.impl.ImportUtils.Constants.DEFAULT_ICON; +import static org.openecomp.sdc.be.components.impl.ImportUtils.findFirstToscaStringElement; import static org.openecomp.sdc.be.components.impl.ImportUtils.findToscaElement; import fj.data.Either; @@ -282,16 +283,18 @@ public class ServiceCsarInfo extends CsarInfo { } @SuppressWarnings("unchecked") - private Set getNodeTypesUsedInToscaTemplate(Map mappedToscaTemplate) { - final Either nodeTemplatesEither = findToscaElement(mappedToscaTemplate, - TypeUtils.ToscaTagNamesEnum.NODE_TEMPLATES, ToscaElementTypeEnum.MAP); - final Set nodeTypesUsedInNodeTemplates = new HashSet<>(); + private Set getNodeTypesUsedInToscaTemplate(final Map mappedToscaTemplate) { + final var nodeTemplatesEither = findToscaElement(mappedToscaTemplate, TypeUtils.ToscaTagNamesEnum.NODE_TEMPLATES, ToscaElementTypeEnum.MAP); + final Set nodeTypesUsedInToscaTemplate = new HashSet<>(); if (nodeTemplatesEither.isLeft()) { - final Map> nodeTemplates = - (Map>) nodeTemplatesEither.left().value(); - nodeTypesUsedInNodeTemplates.addAll(findNodeTypesUsedInNodeTemplates(nodeTemplates)); + final var nodeTemplates = (Map>) nodeTemplatesEither.left().value(); + nodeTypesUsedInToscaTemplate.addAll(findNodeTypesUsedInNodeTemplates(nodeTemplates)); } - return nodeTypesUsedInNodeTemplates; + final var substitutionMappingsNodeType = findFirstToscaStringElement(mappedToscaTemplate, ToscaTagNamesEnum.NODE_TYPE); + if (substitutionMappingsNodeType.isLeft()){ + nodeTypesUsedInToscaTemplate.add(substitutionMappingsNodeType.left().value()); + } + return nodeTypesUsedInToscaTemplate; } private NodeTypeMetadata getMetaDataFromTemplate(Map mappedResourceTemplate, String nodeTemplateType) { @@ -320,7 +323,6 @@ public class ServiceCsarInfo extends CsarInfo { category.setName((String) metadata.get("category")); category.setNormalizedName(((String) metadata.get("category")).toLowerCase()); category.setIcons(List.of(DEFAULT_ICON)); - category.setNormalizedName(((String) metadata.get("category")).toLowerCase()); category.addSubCategory(subCategory); List categories = new ArrayList<>(); categories.add(category); diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java index 3b0d19f03c..2d29f80017 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/components/csar/YamlTemplateParsingHandler.java @@ -109,7 +109,6 @@ import org.openecomp.sdc.be.datatypes.elements.SubPropertyToscaFunction; import org.openecomp.sdc.be.datatypes.elements.SubstitutionFilterPropertyDataDefinition; import org.openecomp.sdc.be.datatypes.elements.ToscaFunction; import org.openecomp.sdc.be.datatypes.elements.ToscaGetFunctionDataDefinition; -import org.openecomp.sdc.be.datatypes.enums.ConstraintType; import org.openecomp.sdc.be.datatypes.elements.ToscaFunctionType; import org.openecomp.sdc.be.datatypes.enums.ConstraintType; import org.openecomp.sdc.be.datatypes.enums.FilterValueType; @@ -201,14 +200,12 @@ public class YamlTemplateParsingHandler { if (substitutionMappings != null) { if (component.isService()) { if (interfaceTemplateYaml.isEmpty()) { - Resource resource = serviceBusinessLogic.fetchDerivedFromGenericType(component, null); - List properties = resource.getProperties(); + List properties = serviceBusinessLogic.fetchDerivedFromGenericType(component, null).getProperties(); parsedToscaYamlInfo.setProperties(properties.stream().collect(Collectors.toMap(PropertyDefinition::getName, prop -> prop))); - parsedToscaYamlInfo.setSubstitutionFilterProperties(getSubstitutionFilterProperties(mappedToscaTemplate)); } else { parsedToscaYamlInfo.setProperties(getProperties(loadYamlAsStrictMap(interfaceTemplateYaml))); - parsedToscaYamlInfo.setSubstitutionFilterProperties(getSubstitutionFilterProperties(mappedToscaTemplate)); } + parsedToscaYamlInfo.setSubstitutionFilterProperties(getSubstitutionFilterProperties(mappedToscaTemplate)); } if (substitutionMappings.get("properties") != null) { parsedToscaYamlInfo.setSubstitutionMappingProperties((Map>) substitutionMappings.get("properties")); @@ -1442,7 +1439,7 @@ public class YamlTemplateParsingHandler { for (Object objValue : propValueList) { if (objValue instanceof Map) { Map objMap = (Map) objValue; - Map propValueMap = new HashMap(); + Map propValueMap = new HashMap<>(); propValueMap.put(String.valueOf(index), objValue); final Collection subPropertyToscaFunctions = buildSubPropertyToscaFunctions(propValueMap, new ArrayList<>()); diff --git a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CommonCsarGenerator.java b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CommonCsarGenerator.java index 633dd6e483..3fa8745f01 100644 --- a/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CommonCsarGenerator.java +++ b/catalog-be/src/main/java/org/openecomp/sdc/be/tosca/CommonCsarGenerator.java @@ -643,7 +643,7 @@ public class CommonCsarGenerator { final List modelDefaultImportList = modelOperation.findAllModelImports(modelName, true); final Set writtenEntryPathList = new HashSet<>(); final var defsPath = Path.of(definitionsPath); - Map contentToMerge = new HashMap(); + Map contentToMerge = new HashMap<>(); for (final ToscaImportByModel toscaImportByModel : modelDefaultImportList) { var importPath = Path.of(toscaImportByModel.getFullPath()); if (!isSingleImportsFile) { @@ -675,15 +675,15 @@ public class CommonCsarGenerator { } if (!isSingleImportsFile) { byte[] mergingContent = new byte[0]; - for (Map.Entry entry : contentToMerge.entrySet()) { + for (Map.Entry entry : contentToMerge.entrySet()) { if (ADDITIONAL_TYPE_DEFINITIONS.equals(Paths.get(String.valueOf(entry.getKey())).normalize().toString())) { - mergingContent = (byte[]) entry.getValue(); + mergingContent = Bytes.concat(mergingContent, entry.getValue()); } else { final var zipEntry = new ZipEntry(entry.getKey().toString()); zipOutputStream.putNextEntry(zipEntry); - writtenEntryPathList.add((Path) entry.getKey()); - zipOutputStream.write(Bytes.concat(mergingContent, (byte[]) entry.getValue()), 0, - ((byte[]) entry.getValue()).length); + writtenEntryPathList.add(entry.getKey()); + final var concat = Bytes.concat(mergingContent, entry.getValue()); + zipOutputStream.write(concat, 0, concat.length); zipOutputStream.closeEntry(); } } -- cgit 1.2.3-korg