package alien4cloud.topology;
import java.util.List;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;
import org.apache.commons.collections4.CollectionUtils;
import alien4cloud.json.deserializer.TaskDeserializer;
import alien4cloud.topology.task.AbstractTask;
import alien4cloud.utils.jackson.ConditionalAttributes;
import alien4cloud.utils.jackson.ConditionalOnAttribute;
import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
import com.google.common.collect.Lists;
/**
* Validation result that contains a boolean determining if a topology is valid for deployment.
* If not, contains also a list of tasks of components to implement .
*
* @author igor ngouagna
*/
@Getter
@Setter
@NoArgsConstructor
@AllArgsConstructor(suppressConstructorProperties = true)
public class TopologyValidationResult {
private boolean isValid;
@ConditionalOnAttribute(ConditionalAttributes.REST)
@JsonDeserialize(contentUsing = TaskDeserializer.class)
private List<AbstractTask> taskList;
@ConditionalOnAttribute(ConditionalAttributes.REST)
@JsonDeserialize(contentUsing = TaskDeserializer.class)
private List<AbstractTask> warningList;
public <T extends AbstractTask> void addTasks(List<T> tasks) {
if (CollectionUtils.isEmpty(tasks)) {
return;
}
if (taskList == null) {
taskList = Lists.newArrayList();
}
taskList.addAll(tasks);
}
public <T extends AbstractTask> void addTask(T task) {
if (task == null) {
return;
}
if (taskList == null) {
taskList = Lists.newArrayList();
}
taskList.add(task);
}
public <T extends AbstractTask> void addWarnings(List<T> warnings) {
if (CollectionUtils.isEmpty(warnings)) {
return;
}
if (warningList == null) {
warningList = Lists.newArrayList();
}
warningList.addAll(warnings);
}
public <T extends AbstractTask> void addWarning(T warning) {
if (warning == null) {
return;
}
if (warningList == null) {
warningList = Lists.newArrayList();
}
warningList.add(warning);
}
}