MapStruct — сопоставление отношения RealmList

Хорошо, я не очень уверен, как спросить это, но я собираюсь попробовать. Я использую MapStruct для сопоставления входящих сетевых объектов с объектами базы данных. Я использую Realm.io в качестве локального хранилища данных. Некоторые из моих объектов имеют RealmList<Obj>, в которых хранятся их отношения, например:

public class Client extends RealmObject {
    @PrimaryKey
    private String id = UUID.randomUUID().toString();
    private Date createdAt = new Date();
    private Date updatedAt = new Date();
    private RealmList<Contact> contacts; // <-- this guy
    // constructors and getters/setters
}

Я использую moshi-jsonapi в качестве десериализатора. Эквивалентные поля dto:

private String createdAt = new Date();
private String updatedAt = new Date();
private HasMany<Contact> contacts;

Проблема: заставить MapStruct правильно преобразовать HasMany в RealmList. Одна из проблем, с которыми я сталкиваюсь, заключается в правильном анализе полей даты ISO8601 в отношениях. Я могу сделать это с атрибутами объекта, а не с его отношениями. Вот работающий Mapper в качестве примера:

@Mapper(unmappedTargetPolicy = ReportingPolicy.IGNORE)
public interface ClientMapper {
    ClientMapper INSTANCE = Mappers.getMapper(ClientMapper.class);

    @Mappings({
            @Mapping(target = "createdAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"),
            @Mapping(target = "updatedAt", dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS'Z'")
    })
    Client resourceToRealm(biz.kusasa.saleboat.jsonapi.resources.Client client);

    List<Client> resourcesToRealms(List<biz.kusasa.saleboat.jsonapi.resources.Client> clients);
}

Однако эти правила синтаксического анализа даты, по-видимому, не применяются при сопоставлении отношений. Есть тут специалисты по mapstruct?


person barnacle.m    schedule 10.10.2017    source источник
comment
Я не уверен, что следую. Что у вас есть до сих пор? Вы сможете применить форматирование к отношениям, если определите преобразователь для Contact (он должен работать так же, как и для ClientMapper. Я также предполагаю, что вам нужно определить некоторые пользовательские сопоставления для HasMany в RealmList, поскольку они неизвестны MapStruct. У вас уже есть что-то подобное?   -  person Filip    schedule 29.10.2017
comment
Я считаю, что мне придется создавать пользовательские сопоставления для этих отношений.   -  person barnacle.m    schedule 31.10.2017
comment
Вы можете использовать декоратор на своем картографе и вручную анализировать эти даты: mapstruct.org/documentation/stable/reference/html/   -  person Maelig    schedule 02.08.2018
comment
@Maelig Я сделал именно это :)   -  person barnacle.m    schedule 02.08.2018
comment
Вы должны опубликовать свое решение и принять его как правильный ответ, чтобы помочь людям с такой же проблемой;)   -  person Maelig    schedule 03.08.2018
comment
Проблема в том, что ответ на самом деле не соответствует вопросу, то есть он на самом деле не имеет ничего общего с Realm io.   -  person barnacle.m    schedule 23.08.2018