Я пытаюсь использовать ModelMapper для сопоставления источника и назначения.
В моем конкретном случае c в исходном классе есть свойство (Список проверок), где я должен суммировать по рейтингу и установить это значение в качестве класса назначения.
Итак Я пробовал с конвертером, но он не работает.
Converter<List<Review>, Double> sumReviewsRating = new AbstractConverter<List<Review>, Double>() {
@Override
protected Double convert(List<Review> reviews) {
if(reviews!=null){
return reviews.stream().mapToDouble(Review::getRating).sum();
//it doesn't work also with return 1.0 for example;
}else{
return 0.0;
}
}
};
modelMapper.typeMap(MySource.class, MyDestination.class).addMappings(mapper ->{
mapper.map(MySource::getCoverImageId, MyDestination::setImageUrl); //this works
mapper.using(sumReviewsRating).map(MySource::getReviews, MyDestination::setRating);
});
Stacktrace:
org.modelmapper.internal.ErrorsException: null
at org.modelmapper.internal.Errors.toException(Errors.java:254) ~[modelmapper-2.3.6.jar:na]
at org.modelmapper.internal.ReferenceMapExpressionImpl.map(ReferenceMapExpressionImpl.java:71) ~[modelmapper-2.3.6.jar:na]
at org.modelmapper.internal.ConfigurableConditionExpressionImpl.map(ConfigurableConditionExpressionImpl.java:65) ~[modelmapper-2.3.6.jar:na]
Если я поставлю точку останова в конвертере, она не войдет.
Где моя загадка?