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;
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);
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())) {