ModelMapper: как обрабатывать нулевые значения для перечислений

Я пытаюсь сопоставить один тип объекта с другим, используя ModelMapper. Я определил следующее сопоставление в своей реализации PropertyMap:

map().getExtended().setIncludeMaskType(MaskType.fromValue(source.getExtendedPollingType().getMaskSettings().getIncludeMask().getMaskType()));

Проблема в том, что вызов метода исходного типа source.getExtendedPollingType().getMaskSettings().getIncludeMask().getMaskType() возвращает строку, в то время как целевой тип принимает перечисление MaskType.

Поэтому я использую MaskType.fromValue() для преобразования строки в перечисление. Проблема в том, что значение терпит неудачу с Caused by: java.lang.IllegalArgumentException, так как это исходный вызов метода в основном возвращает ноль во время настройки.

Итак, как мне справиться с этим вариантом использования?


person mdzh    schedule 08.12.2017    source источник


Ответы (1)


Хорошо, кажется, что правильный способ сделать это с помощью конвертера:

using((MappingContext<String, MaskType> context) -> {
    return MaskType.fromValue(context.getSource());
}).
map(source.getExtendedPollingType().getMaskSettings().getIncludeMask().getMaskType()).getExtended().setIncludeMaskType(null);

Более подробно это объясняется здесь: https://github.com/modelmapper/modelmapper/issues/ 20

person mdzh    schedule 08.12.2017