Catalog alignment
[sdc.git] / catalog-be / src / main / java / org / openecomp / sdc / be / components / merge / input / InputsMergeCommand.java
index 385a2c5..0f6c89a 100644 (file)
@@ -30,6 +30,7 @@ import org.openecomp.sdc.common.log.wrappers.Logger;
 
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 import static java.util.Collections.emptyList;
 import static org.apache.commons.collections.CollectionUtils.isEmpty;
@@ -59,11 +60,13 @@ public abstract class InputsMergeCommand {
             return ActionStatus.OK;
         }
         List<InputDefinition> mergedInputs = mergeInputsValues(prevComponent, currComponent);
-        List<InputDefinition> previouslyDeclaredInputsToMerge = getPreviouslyDeclaredInputsToMerge(prevComponent, currComponent);
+        List<InputDefinition> previouslyDeclaredInputsToMerge = getUniquePreviouslyDeclaredInputsToMerge(prevComponent, currComponent, mergedInputs);
         mergedInputs.addAll(previouslyDeclaredInputsToMerge);
         return updateInputs(currComponent.getUniqueId(), mergedInputs);
     }
 
+
+
     private List<InputDefinition> mergeInputsValues(Component prevComponent, Component currComponent) {
         log.debug("#mergeInputsValues - merge inputs values from previous component {} to current component {}", prevComponent.getUniqueId(), currComponent.getUniqueId());
         List<InputDefinition> inputsToMerge = getInputsToMerge(currComponent);
@@ -72,6 +75,14 @@ public abstract class InputsMergeCommand {
         return inputsToMerge;
     }
 
+    private List<InputDefinition> getUniquePreviouslyDeclaredInputsToMerge(Component prevComponent, Component currComponent, List<InputDefinition> mergedInputs) {
+        List<InputDefinition> previouslyDeclaredInputsToMerge = getPreviouslyDeclaredInputsToMerge(prevComponent, currComponent);
+        return previouslyDeclaredInputsToMerge.stream()
+                .filter(prev -> mergedInputs.stream()
+                        .noneMatch(merged -> merged.getName().equals(prev.getName()))).collect(Collectors.toList());
+    }
+
+
     private List<InputDefinition> getPreviouslyDeclaredInputsToMerge(Component prevComponent, Component currComponent) {
         log.debug("#getPreviouslyDeclaredInputsToMerge - getting inputs that were previously declared from previous component {} and setting on current component {}", prevComponent.getUniqueId(), currComponent.getUniqueId());
         if (isEmpty(prevComponent.getInputs())) {