mapstruct / mapstruct/mapstruct-idea

Unexpected warning: ''.'' should not be used as a source

Abierto
#257 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Lenguaje dominante
Java
Estrellas
168
Forks
41
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

I often have a use-case when `"."` is a valid and correct source of my mapping. It is officially supported mapping source, so why the plugin reports it as "should not be used"? Is there any particular reason or maybe it is just a historical burden from the times when MapStruct actually didn't support `"."` as a source?

Example:

```java
record Failure(String code, String detail) {}

class Foo {
Failure failure;
}

class FooDto {
String failureCode;
String failureDetail;
}

public abstract class FooMapper {

@Mapping(target = "failure", source = ".")
public abstract Foo fromDto(FooDto fooDto);

protected Failure mapFailure(FooDto fooDto) {
return new Failure(fooDto.getFailureCode(), fooDto.getFailureDetail());
}

}
```

Of course, in this particular case we can just use:

```java
@Mapping(target = "failure.code", source = "failureCode")
@Mapping(target = "failure.detail", source = "failureDetail")
```

But there are more complex cases when the target object should be created manually, by a custom code, and the only possible source is the whole source object.

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Empieza reproduciendo la advertencia con el ejemplo de FooMapper e inspecciona cómo el MapStruct IntelliJ plugin gestiona los valores de @Mapping cuyo source es ".". Compara ese comportamiento con el soporte documentado de MapStruct para esta forma de source; se considera terminado cuando la asignación válida ya no genere una advertencia incorrecta o se haya establecido claramente el motivo de la advertencia.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
tooling
Tipo de issue
Error
Dificultad
3/5
Tiempo estimado
1-2 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
45/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.