Search in sources :

Example 1 with TaskValidationInterface

use of io.kestra.core.models.tasks.TaskValidationInterface in project kestra by kestra-io.

the class Flow method validate.

public Optional<ConstraintViolationException> validate() {
    Set<ConstraintViolation<?>> violations = new HashSet<>();
    List<Task> allTasks = allTasksWithChilds();
    // unique id
    List<String> ids = allTasks.stream().map(Task::getId).collect(Collectors.toList());
    List<String> duplicates = ids.stream().distinct().filter(entry -> Collections.frequency(ids, entry) > 1).collect(Collectors.toList());
    if (duplicates.size() > 0) {
        violations.add(ManualConstraintViolation.of("Duplicate task id with name [" + String.join(", ", duplicates) + "]", this, Flow.class, "flow.tasks", String.join(", ", duplicates)));
    }
    // validate tasks
    allTasks.forEach(task -> {
        if (task instanceof TaskValidationInterface) {
            violations.addAll(((TaskValidationInterface<?>) task).failedConstraints());
        }
    });
    if (violations.size() > 0) {
        return Optional.of(new ConstraintViolationException(violations));
    } else {
        return Optional.empty();
    }
}
Also used : java.util(java.util) JacksonAnnotationIntrospector(com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector) JacksonMapper(io.kestra.core.serializers.JacksonMapper) AbstractTrigger(io.kestra.core.models.triggers.AbstractTrigger) LoggerFactory(org.slf4j.LoggerFactory) DeletedInterface(io.kestra.core.models.DeletedInterface) Listener(io.kestra.core.models.listeners.Listener) Valid(javax.validation.Valid) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) AnnotatedMember(com.fasterxml.jackson.databind.introspect.AnnotatedMember) ConstraintViolation(javax.validation.ConstraintViolation) Logger(org.slf4j.Logger) TaskValidationInterface(io.kestra.core.models.tasks.TaskValidationInterface) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) SuperBuilder(lombok.experimental.SuperBuilder) JsonProcessingException(com.fasterxml.jackson.core.JsonProcessingException) javax.validation.constraints(javax.validation.constraints) Execution(io.kestra.core.models.executions.Execution) Collectors(java.util.stream.Collectors) InternalException(io.kestra.core.exceptions.InternalException) lombok(lombok) ManualConstraintViolation(io.kestra.core.models.validations.ManualConstraintViolation) Task(io.kestra.core.models.tasks.Task) Introspected(io.micronaut.core.annotation.Introspected) Stream(java.util.stream.Stream) ConstraintViolationException(javax.validation.ConstraintViolationException) FlowableTask(io.kestra.core.models.tasks.FlowableTask) Task(io.kestra.core.models.tasks.Task) FlowableTask(io.kestra.core.models.tasks.FlowableTask) TaskValidationInterface(io.kestra.core.models.tasks.TaskValidationInterface) ConstraintViolation(javax.validation.ConstraintViolation) ManualConstraintViolation(io.kestra.core.models.validations.ManualConstraintViolation) ConstraintViolationException(javax.validation.ConstraintViolationException)

Aggregations

JsonIgnore (com.fasterxml.jackson.annotation.JsonIgnore)1 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)1 ObjectMapper (com.fasterxml.jackson.databind.ObjectMapper)1 AnnotatedMember (com.fasterxml.jackson.databind.introspect.AnnotatedMember)1 JacksonAnnotationIntrospector (com.fasterxml.jackson.databind.introspect.JacksonAnnotationIntrospector)1 InternalException (io.kestra.core.exceptions.InternalException)1 DeletedInterface (io.kestra.core.models.DeletedInterface)1 Execution (io.kestra.core.models.executions.Execution)1 Listener (io.kestra.core.models.listeners.Listener)1 FlowableTask (io.kestra.core.models.tasks.FlowableTask)1 Task (io.kestra.core.models.tasks.Task)1 TaskValidationInterface (io.kestra.core.models.tasks.TaskValidationInterface)1 AbstractTrigger (io.kestra.core.models.triggers.AbstractTrigger)1 ManualConstraintViolation (io.kestra.core.models.validations.ManualConstraintViolation)1 JacksonMapper (io.kestra.core.serializers.JacksonMapper)1 Introspected (io.micronaut.core.annotation.Introspected)1 java.util (java.util)1 Collectors (java.util.stream.Collectors)1 Stream (java.util.stream.Stream)1 ConstraintViolation (javax.validation.ConstraintViolation)1