mapstruct / mapstruct/mapstruct-idea

Array and Map paramter ignored as source-parameter if used as only source

未關閉
#173 0 則留言 0 個 reaction 已指派 0 人 在 GitHub 檢視

還沒有人認領這個 Issue。

bug
主要語言
Java
星號
168
分支
41
PR 合併指標
30 天內沒有已合併 PR

描述

I found while investigation #168, that currently the plugin ignores source parameters of type array and Map, if used as the only source parameter.
Here a small example Mapper:

import org.mapstruct.Mapper;

import java.util.Map;

@Mapper
public interface MultiSourceMapper {

    class ArrayTarget {
        private int[] myArray;

        public int[] getMyArray() {
            return myArray;
        }

        public void setMyArray(int[] myArray) {
            this.myArray = myArray;
        }
    }

    ArrayTarget mapToArrayTarget(int[] myArray);

    class MapTarget {
        private Map<Integer, Integer> myMap;

        public Map<Integer, Integer> getMyMap() {
            return myMap;
        }

        public void setMyMap(Map<Integer, Integer> myMap) {
            this.myMap = myMap;
        }
    }

    MapTarget mapToMapTarget(Map<Integer, Integer> myMap);
}

This generates code where all targets are mapped based on their names. The plugin currently ignores the source parameters and give a unmapped target property warning.
grafik
Also the completion doesn't show them as source parameters.

One thing to notice:
For Iterable this behavior is correct as mapstruct itself doesn't support mapping from Iterable to Object.

貢獻指南

這個儲存庫沒有索引到貢獻指南

從這裡開始

  1. 先讀完整個 Issue,再讀專案的貢獻指南。
  2. 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
  3. Fork 儲存庫,在一個分支上完成修改。
  4. 送出 Pull Request,並在描述裡引用這個 Issue 編號。

研究方向

使用報告中的 Java MultiSourceMapper 範例重現該問題,檢查 array 和 Map 來源參數,並比較所述的 Iterable 行為。追蹤 plugin 對來源參數的處理以及 completion 行為;當 array 和 Map 參數被辨識為唯一來源、不再出現映射 target 的警告,且 completion 將它們列出時,修正就完成了。

由索引模型根據 Issue 內容生成。

評估

技術堆疊
java
領域
tooling
Issue 類型
缺陷
難度
3/5
預估耗時
1-2 天
活躍度
停滯
描述清晰度
基本清楚
新手友好度
45/100

把新 issue 寄到你的電子郵件信箱

精選適合新手參與的 GitHub issue 摘要。