es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Java Vavr mapa retorno de función declaración if.

Tengo el código.

private static Validation<ConstraintViolation, List<Person>> validatePersonDetail(
List<PersonDetailRequest> personRequest) {

for (PersonRequest request:personRequest) {

    if (isNull(request.getName())) {
        return invalid(new ConstraintViolation(&quot;name&quot;, &quot;name no puede estar vacío&quot;));
    }
    ..
    // más validaciones

    // construir objeto
    Person.builder().name(request.getName()).build();
}
return valid([PERSON_LIST]);

}

Quiero devolver una lista de Personas, pero no estoy seguro de cómo hacerlo con Vavr. No puedo usar Validation combine ya que contiene validaciones anidadas para objetos anidados.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para devolver una lista de personas usando Vavr, puedes usar la clase Try. Aquí tienes un ejemplo de código:

    private static Validation<constraintviolation,></constraintviolation,><person>> validatePersonDetail(List<persondetailrequest> personRequest) {
        List<><person>> personTries = personRequest.stream()
                .map(request -> Try.of(() ->
                        Person.builder()
                                .name(request.getName())
                                .build()))
                .collect(Collectors.toList());
    
        List<person> persons = personTries.stream()
                .filter(Try::isSuccess)
                .flatMap(Try::toJavaStream)
                .collect(Collectors.toList());
    
        if (persons.size() < personRequest.size()) {
            return invalid(new ConstraintViolation("personRequest", "detalles de persona inválidos"));
        }
    
        return valid(persons);
    }
    

    En este código, usamos Try para construir cada objeto Person a partir de PersonRequest. Si todos los objetos Try tienen éxito, recopilamos los objetos Person en una lista y la devolvemos como resultado válido.

    Si algún objeto Try falla durante el procesamiento del flujo, el objeto Try contendrá la excepción que ocurrió. Aquí no capturamos la excepción porque queremos devolver Validation.invalid si algún objeto Try falla.

Comments are closed.