Partage
  • Partager sur Facebook
  • Partager sur Twitter

Mapstruct mapping de plusieurs list de même type

UnsupportedOperation

Sujet résolu
    2 juillet 2020 à 12:00:18

    Bonjour,

    j'essaye de mapper des list de String en utulisant mapstruct et lorsque je n'ai qu'une liste il y'a pas d'erreur mais dès lors que j'ai plus d'une liste de même type, l'erreur 

     UnsupportedOperation

    est générée. voici ma class mapper 

    @Mapper(
        collectionMappingStrategy = CollectionMappingStrategy.ADDER_PREFERRED,
        nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS,
        uses = ProtoWrappersMapper.class)
    public interface MemberImportResultMapper {
      MemberImportResultMapper INSTANCE = Mappers.getMapper(MemberImportResultMapper.class);
    
      @Mapping(source = "rejected", target = "rejectedList")
      @Mapping(source = "accepted", target = "acceptedList")
      MemberImportResultDto fromMemberImportResult(MemberImportResult memberImportResult);
    }

    mon test 

    public class MemberImportResultMapperTest {
    
      private MemberImportResultMapper mapper = Mappers.getMapper(MemberImportResultMapper.class);
    
      @Test
      public void whenFromMemberImportResult_givenMemberImportResult_thenMemberImportResultDto() {
    
        MemberImportResult memberImportResult =
            MemberImportResult.builder()
                .nbProcessedLines(3)
                .rejected(Collections.singletonList("yvan@gmail.com"))
                .accepted(Arrays.asList("paul@gmail.com", "pierre@yahoo.fr"))
                .build();
    
        MemberImportResultDto memberImportResultDto = mapper.fromMemberImportResult(memberImportResult);
    
        assertEquals(
            memberImportResultDto.getNbProcessedLines().getValue(),
            memberImportResult.getNbProcessedLines());
        assertEquals(
            memberImportResultDto.getRejectedList().size(),
            memberImportResult.getRejected().size());
    
        assertEquals(
            memberImportResultDto.getAcceptedList().size(),
            memberImportResult.getAccepted().size());
      }
    }

    mes classes objet que j'ai bien évidement simplifié pour illustré le problème

    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    @FieldDefaults(level = AccessLevel.PRIVATE)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class MemberImportResult {
      private long nbProcessedLines;
    
      @Builder.Default private List<String> rejected= new ArrayList<>();
    
      @Builder.Default private List<String> accepted = new ArrayList<>();
    }
    @Data
    @Builder
    @AllArgsConstructor
    @NoArgsConstructor
    @FieldDefaults(level = AccessLevel.PRIVATE)
    @JsonInclude(JsonInclude.Include.NON_NULL)
    public class MemberImportResultDto {
      private long nbProcessedLines;
    
      @Builder.Default private List<String> rejected= new ArrayList<>();
    
      @Builder.Default private List<String> accepted = new ArrayList<>();
    }

    Merci 

    • Partager sur Facebook
    • Partager sur Twitter

    Mapstruct mapping de plusieurs list de même type

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown