MapStruct Protobuf Список в Pojo Mapping - PullRequest
0 голосов
/ 23 марта 2020

Как часть GRP C api Я пытаюсь сопоставить прото-сгенерированные классы с pojo. Это .proto файл

message AccountModelProto
{
 repeated VerificationModelProto verification = 1;
}
message VerificationModelProto
{
    string status = 1;
    string comment = 2;
    string verificationType = 3;
    repeated VerificationAttributeModelProto verificationAttributes = 4;
}
message VerificationAttributeModelProto
{
    string type = 1;
    string label = 2;
    bool attributeStatus = 3;
}

Маппер для приведенного выше кода. Я ссылался на примеры, предоставляемые mapstruct в соответствии с ним. Мне не нужно предоставлять явное отображение VerificationModelProto в List, но я получаю ошибку компилятора

error: Невозможно отобразить свойство "Проверка коллекции" в "VerificationModelProto проверочный список". Попробуйте объявить / реализовать метод сопоставления: «VerificationModelProto map (Collection value)».

@Mapping(source = "verification", target = "verificationList", qualifiedByName = "verificationModelToVerificationProtoMapping")
    AccountModelProto map(AccountModel accountModel);

@Named("verificationModelToVerificationProtoMapping")
default VerificationModelProto map (VerificationModel verificationModel)
{
    VerificationModelProto.Builder builder = VerificationModelProto.newBuilder()
                .setComment(verificationModel.getComment())
                .setStatus(verificationModel.getStatus().toString())
                .setVerificationType(verificationModel.getVerificationType());

    for(VerificationAttributeModel verificationAttributeModel: verificationModel.getVerificationAttributes())
    {
            builder.addVerificationAttributes(getVerificationAttributeBuilder(verificationAttributeModel));
    }
    return builder.build();
}

default VerificationAttributeModelProto getVerificationAttributeBuilder(VerificationAttributeModel verificationAttributeModel)
{
     VerificationAttributeModelProto.Builder builder = VerificationAttributeModelProto.newBuilder()
                .setAttributeStatus(verificationAttributeModel.getAttributeStatus())
                .setType(verificationAttributeModel.getType())
                .setLabel(verificationAttributeModel.getLabel());

   return builder.build();
}

Как пройти через это. Я добавил CollectionMappingStrategy как CollectionMappingStrategy.ADDER_PREFERRED.

...