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.

Ignore la comprobación de valores nulos en la fuente, mientras se mapean los métodos con varios parámetros de origen.

Equipo, tengo un caso de uso relacionado con Map Struct. Por favor, encuentren mi interfaz adjunta:

@Mappings({
@Mapping(source = "source1.name", target = "name"),
@Mapping(source = "source2.address", target = "address"),
@Mapping(source = "source3.company", target = "company")
})
public SomeClass map(Source1 source1, Source2 source2, Source3 source3);

Todo funciona correctamente. Pero mi problema está en el siguiente fragmento (generado por Map Struct según la interfaz definida anteriormente):

public SomeClass map(Source1 source1, Source2 source2, Source3 source3) {
if (source1 == null && source2 == null && source3 == null) {
return null;
}

Mi problema es que no quiero devolver null en caso de que source2 y source3 sean nulos y, en cambio, mapear los detalles disponibles de source1 y continuar. He consultado la documentación de Map Struct, pero lamentablemente no he encontrado ninguna solución posible para esto.
¿Existe alguna solución en Map Struct para el caso de uso anterior o necesitamos escribir una lógica personalizada para manejar el caso anterior?
Cualquier pista aquí es muy apreciada y gracias de antemano.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Según el caso de uso dado, se requiere mapear los detalles disponibles de la fuente1, incluso si la fuente2 y la fuente3 son nulas. El código generado por mapstruct comprueba que todos los parámetros no sean nulos y devuelve null si alguno de los parámetros es nulo.

    Para manejar esta condición, se necesita implementar una lógica personalizada para manejar el caso cuando la fuente2 y la fuente3 son nulas. Por ejemplo, se puede modificar la implementación para verificar si la fuente2 y la fuente3 son nulas y mapear solo los campos disponibles de la fuente1 en ese caso.

    Esto se puede lograr mediante la adición de un método personalizado en la clase mapper y actualizando el código generado para usar este método personalizado. El método personalizado puede tener la lógica necesaria para manejar el caso cuando la fuente2 y la fuente3 son nulas.

    Alternativamente, se puede modificar manualmente el código generado para eliminar la comprobación nula de la fuente2 y la fuente3, y mapear directamente los campos disponibles de la fuente1. Sin embargo, este enfoque puede resultar en NullPointerException si el parámetro fuente1 también es nulo.

    En general, agregar una lógica personalizada para manejar este caso de uso es el enfoque recomendado, ya que proporciona más control sobre el proceso de mapeo y garantiza que se logre el comportamiento esperado.

Comments are closed.