diff options
author | talio <tali.orenbach@amdocs.com> | 2017-11-05 11:34:51 +0200 |
---|---|---|
committer | talio <tali.orenbach@amdocs.com> | 2017-11-06 10:17:35 +0200 |
commit | 777a3493a4dc4bfeb854b3b820dc5968124af87e (patch) | |
tree | 29836c3cb2ab846b0b3241727f4b92782afdac1e /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org | |
parent | 7b492b5f191cd5c22e3c4254f5f3ef7476122e9d (diff) |
duplicate ids
throw an exception when a zip with duplicate ids in different files is getting uploaded
Issue - Id : SDC-554
Change-Id: I213233d8833b89788f980db859d9597d2c1cb950
Signed-off-by: talio <tali.orenbach@amdocs.com>
Diffstat (limited to 'openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org')
2 files changed, 33 insertions, 0 deletions
diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java index 7d3ebb9c7c..3686a516b3 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java @@ -20,6 +20,8 @@ package org.openecomp.sdc.translator.datatypes.heattotosca; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.collections.MapUtils; import org.openecomp.config.api.Configuration; import org.openecomp.config.api.ConfigurationManager; import org.openecomp.core.utilities.CommonMethods; @@ -365,6 +367,19 @@ public class TranslationContext { this.usedHeatPseudoParams.get(heatFileName).put(heatPseudoParam, translatedToscaParam); } + public Set<String> getTranslatedResourceIdsFromOtherFiles(String fileNameToIgnore){ + if(MapUtils.isEmpty(this.translatedResources)){ + return new HashSet<>(); + } + + Set<String> translatedResourceIds = new HashSet<>(); + + this.translatedResources.entrySet().stream().filter(entry -> !entry.getKey().equals(fileNameToIgnore)) + .forEach(entry -> translatedResourceIds.addAll(entry.getValue())); + + return translatedResourceIds; + } + /** * Add the unified substitution data info in context. Contains a mapping of original node * template id and the new node template id in the abstract substitute diff --git a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java index cebabc0df1..72739d3f51 100644 --- a/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java +++ b/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java @@ -22,6 +22,7 @@ package org.openecomp.sdc.translator.services.heattotosca.impl.resourcetranslati import org.apache.commons.collections4.CollectionUtils; import org.openecomp.sdc.common.errors.CoreException; +import org.openecomp.sdc.common.errors.ErrorCode; import org.openecomp.sdc.datatypes.error.ErrorLevel; import org.openecomp.sdc.heat.datatypes.model.HeatOrchestrationTemplate; import org.openecomp.sdc.heat.datatypes.model.Resource; @@ -44,6 +45,7 @@ import org.openecomp.sdc.translator.services.heattotosca.ConsolidationDataUtil; import org.openecomp.sdc.translator.services.heattotosca.ConsolidationEntityType; import org.openecomp.sdc.translator.services.heattotosca.HeatToToscaUtil; import org.openecomp.sdc.translator.services.heattotosca.ResourceTranslationFactory; +import org.openecomp.sdc.translator.services.heattotosca.errors.DuplicateResourceIdsInDifferentFilesErrorBuilder; import org.openecomp.sdc.translator.services.heattotosca.errors.ResourceNotFoundInHeatFileErrorBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -55,6 +57,7 @@ import java.util.List; import java.util.Map; import java.util.Objects; import java.util.Optional; +import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -85,6 +88,11 @@ public abstract class ResourceTranslationBase { Optional<String> translatedId = getResourceTranslatedId(heatFileName, heatOrchestrationTemplate, resourceId, context); context.getTranslatedResources().putIfAbsent(heatFileName, new HashSet<>()); + + if(isResourceWithSameIdAppearsInOtherFiles(heatFileName, resourceId, context)){ + throw new CoreException( + new DuplicateResourceIdsInDifferentFilesErrorBuilder(resourceId).build()); + } if (context.getTranslatedResources().get(heatFileName).contains(resourceId)) { return translatedId; } @@ -110,6 +118,16 @@ public abstract class ResourceTranslationBase { return translatedId; } + private boolean isResourceWithSameIdAppearsInOtherFiles(String heatFileName, + String resourceId, + TranslationContext context){ + Set<String> translatedResourceIdsFromOtherFiles = + context.getTranslatedResourceIdsFromOtherFiles(heatFileName); + + return CollectionUtils.isNotEmpty(translatedResourceIdsFromOtherFiles) + && translatedResourceIdsFromOtherFiles.contains(resourceId); + } + /** * Gets resource translated id. * |