Dozer обнуляет возвращаемое значение пользовательского конвертера - PullRequest
0 голосов
/ 16 ноября 2018

Итак, я пытался использовать настраиваемый конвертер с Dozer для поля, который нужно преобразовать из List <A> в List <B>.Я использовал «новый API», как описано здесь и подсказки, чтобы дать Dozer правильное отображение.Итак, в итоге конфигурация XML выглядит следующим образом:

    <field map-id="ResolveObjectId">
        <a>lista</a>
        <b>listb</b>
        <a-hint>org.bson.types.ObjectId</a-hint>
        <b-hint>SomeDTO</b-hint>
    </field>

    <mapping map-id="ResolveObjectId" >
        <class-a>org.bson.types.ObjectId</class-a>
        <class-b>SomeDTO</class-b>
        <field custom-converter-id="myCustomConverter">
            <a>this</a>
            <b>this</b>
        </field>
    </mapping>

Пользовательский конвертер (myCustomConverter) создается контейнером Spring, поскольку он имеет некоторые зависимости от других bean-компонентов.Затем он передается в bean-компонент DozerBeanMapper в свойстве «customConvertersWithId».

Так что все это, кажется, работает правильно, но когда пользовательский конвертер вызывается и возвращает новый экземпляр объекта SomeDTO, Dozer фактически не использует этот объект.Вместо этого Dozer создает пустой экземпляр типа SomeDTO со всеми полями, для которых установлено значение null, вместо использования объекта из конвертера.

При использовании «старого» API с моим конвертером, реализующим интерфейс CustomConverter и принимающим целые списки в качестве объектов, все работает нормально.

Итак, я предполагаю, что это проблема моей конфигурации или проблема с Dozer ??Я использую версию 5.5.1 с поддержкой JDK8 для преобразования LocalDates: Поддержка Dozer JDK8

Некоторые другие вопросы переполнения стека касаются преобразования списка в список и предлагают решение, которое я представил выше.Его можно найти здесь

...