mapstruct / mapstruct/mapstruct-idea
Array and Map paramter ignored as source-parameter if used as only source
还没有人认领这个 Issue。
- 主要语言
- 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.
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.
贡献指南
这个仓库没有索引到贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
调研方向
使用报告中的 Java MultiSourceMapper 示例重现该问题,检查 array 和 Map 源参数,并对比所述的 Iterable 行为。跟踪插件对源参数的处理以及 completion 行为;当 array 和 Map 参数被识别为唯一源、不再出现映射 target 的警告,并且 completion 将它们列出时,修复就完成了。
由索引模型根据 Issue 内容生成。
评估
- 技术栈
- java
- 领域
- tooling
- Issue 类型
- 缺陷
- 难度
- 3/5
- 预计耗时
- 1-2 天
- 活跃度
- 停滞
- 描述清晰度
- 基本清楚
- 新手友好度
- 45/100