mapstruct / mapstruct/mapstruct
Kotlin: Issue when mapping primitive parameters
オープン
まだ誰も着手していません。
- 主要言語
- Java
- スター
- 7.7k
- フォーク
- 1.1k
- PR マージ指標
- 30日以内にマージされた PR はありません
説明
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
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
調査の方向性
まず、プリミティブな Boolean パラメーターを持つ Kotlin mapper のシグネチャーを再現し、issue で説明されている同等の Java ケースと比較します。パラメーターがネストされた Boolean のターゲットに解決されるか、また診断が Boolean myFlag を示すかを確認します。完了とは、動作とエラーメッセージが期待されるプリミティブからラッパーへのマッピングと一致することです。
索引モデルが issue の本文から書いたものです。
評価
- 技術スタック
- java, kotlin
- 領域
- tooling
- issue の種類
- バグ
- 難易度
- 4/5
- 見積もり時間
- 3〜5日
- 活発さ
- 停滞
- 明瞭さ
- 説明が足りない
- 初心者へのやさしさ
- 35/100