mapstruct / mapstruct/mapstruct
Kotlin: Issue when mapping primitive parameters
Nessuno ha ancora preso questa issue.
- Lingua principale
- Java
- Stelle
- 7.7k
- Fork
- 1.1k
- Metriche di merge delle PR
- Nessuna PR unita negli ultimi 30g
Descrizione
I didn't have time to create a minimal example and compare Java/Kotlin but if you have a method like this:
Kotlin:
@Mapping(target = "nested.myFlag", source = "someFlag")
fun map(irrelevant: Source, Boolean someFlag): Target
Java:
public class Target {
public Nested nested;
}
public class Nested {
public Boolean myFlag;
}
Mapstruct will fail with:
Can't map parameter "boolean someFlag" to "Nested nested". Consider to declare/implement a mapping method: "Nested map(boolean value)".
- The message isn't exactly correct, it should rather be:
Can't map parameter "boolean someFlag" to "Boolean myFlag". Consider to declare/implement a mapping method: "Boolean map(boolean value)". - I would expect MapStruct to have no problem mapping a primitive
booleanto a wrapperBoolean(might be related to Kotlin vs. Java Boolean) - If I'm not mistaken, this works when both booleans are in the source/target objects but not when the source boolean is a method parameter
This does not work:
fun map(boolean: Boolean): Boolean? = boolean
Workaround (nullable Boolean):
@Mapping(target = "nested.myFlag", source = "someFlag")
fun map(irrelevant: Source, Boolean? someFlag): Target
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia riproducendo la firma del mapper Kotlin con un parametro Boolean primitivo e confrontala con il caso Java equivalente descritto nell’issue. Conferma se il parametro viene risolto nella destinazione Boolean annidata e se la diagnostica indica Boolean myFlag; il lavoro è completato quando il comportamento e il messaggio di errore corrispondono al mapping da primitivo a wrapper previsto.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java, kotlin
- Ambito
- tooling
- Tipo di issue
- Bug
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Stato di attività
- Ferma
- Chiarezza
- Da chiarire
- Idoneità per principianti
- 35/100