summaryrefslogtreecommitdiffstats
path: root/openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main
diff options
context:
space:
mode:
authortalio <tali.orenbach@amdocs.com>2017-11-05 11:34:51 +0200
committertalio <tali.orenbach@amdocs.com>2017-11-06 10:17:35 +0200
commit777a3493a4dc4bfeb854b3b820dc5968124af87e (patch)
tree29836c3cb2ab846b0b3241727f4b92782afdac1e /openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main
parent7b492b5f191cd5c22e3c4254f5f3ef7476122e9d (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')
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/datatypes/heattotosca/TranslationContext.java15
-rw-r--r--openecomp-be/lib/openecomp-sdc-translator-lib/openecomp-sdc-translator-core/src/main/java/org/openecomp/sdc/translator/services/heattotosca/impl/resourcetranslation/ResourceTranslationBase.java18
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.
*