PagedFilesSpliterator.java

1
package com.fwmotion.threescale.cms.support;
2
3
import com.fasterxml.jackson.databind.ObjectMapper;
4
import com.fwmotion.threescale.cms.mappers.CmsFileMapper;
5
import com.fwmotion.threescale.cms.model.CmsFile;
6
import com.redhat.threescale.rest.cms.ApiException;
7
import com.redhat.threescale.rest.cms.api.FilesApi;
8
import com.redhat.threescale.rest.cms.model.FileList;
9
import jakarta.annotation.Nonnull;
10
import jakarta.annotation.Nullable;
11
import jakarta.validation.constraints.Positive;
12
import jakarta.validation.constraints.PositiveOrZero;
13
import org.apache.commons.collections4.ListUtils;
14
import org.mapstruct.factory.Mappers;
15
16
import java.util.*;
17
import java.util.stream.Collectors;
18
19
public class PagedFilesSpliterator extends AbstractPagedRestApiSpliterator<CmsFile> {
20
21
    private static final CmsFileMapper FILE_MAPPER = Mappers.getMapper(CmsFileMapper.class);
22
23
    private final FilesApi filesApi;
24
25
    public PagedFilesSpliterator(@Nonnull FilesApi filesApi,
26
                                 @Nonnull ObjectMapper objectMapper) {
27
        super(Collections.emptySet(), objectMapper, 0);
28
        this.filesApi = filesApi;
29
    }
30
31
    public PagedFilesSpliterator(@Nonnull FilesApi filesApi,
32
                                 @Nonnull ObjectMapper objectMapper,
33
                                 @Positive int requestedPageSize) {
34
        super(requestedPageSize, objectMapper, Collections.emptySet(), 0);
35
        this.filesApi = filesApi;
36
    }
37
38
    private PagedFilesSpliterator(@Nonnull FilesApi filesApi,
39
                                  @Nonnull ObjectMapper objectMapper,
40
                                  @Positive int requestedPageSize,
41
                                  @Nonnull Collection<CmsFile> currentPage,
42
                                  @PositiveOrZero int currentPageNumber) {
43
        super(requestedPageSize, objectMapper, currentPage, currentPageNumber);
44
        this.filesApi = filesApi;
45
    }
46
47
    @Nullable
48
    @Override
49
    protected Collection<CmsFile> getPage(@PositiveOrZero int pageNumber,
50
                                          @Positive int pageSize) {
51
52
        try {
53
            FileList fileList = filesApi.listFiles(pageNumber, pageSize, null);
54
55
            List<CmsFile> resultPage = ListUtils.emptyIfNull(fileList.getCollection())
56
                .stream()
57
                .map(FILE_MAPPER::fromRest)
58
                .collect(Collectors.toList());
59
60 1 1. getPage : removed call to com/fwmotion/threescale/cms/support/PagedFilesSpliterator::validateResultPageSize → SURVIVED
            validateResultPageSize(
61
                "file",
62
                pageNumber,
63
                pageSize,
64
                resultPage,
65
                fileList.getMetadata());
66
67 1 1. getPage : replaced return value with Collections.emptyList for com/fwmotion/threescale/cms/support/PagedFilesSpliterator::getPage → KILLED
            return resultPage;
68
        } catch (ApiException e) {
69
            throw handleApiException(e, "file", pageNumber, pageSize);
70
        }
71
    }
72
73
    @Nonnull
74
    @Override
75
    protected AbstractPagedRestApiSpliterator<CmsFile> doSplit(
76
        @Positive int requestedPageSize,
77
        @Nonnull Collection<CmsFile> currentPage,
78
        @PositiveOrZero int currentPageNumber) {
79 1 1. doSplit : replaced return value with null for com/fwmotion/threescale/cms/support/PagedFilesSpliterator::doSplit → KILLED
        return new PagedFilesSpliterator(filesApi, getObjectMapper(), requestedPageSize, currentPage, currentPageNumber);
80
    }
81
82
    @Override
83
    public int characteristics() {
84 1 1. characteristics : replaced int return with 0 for com/fwmotion/threescale/cms/support/PagedFilesSpliterator::characteristics → SURVIVED
        return Spliterator.DISTINCT |
85
            Spliterator.SORTED |
86
            Spliterator.ORDERED |
87
            Spliterator.NONNULL |
88
            Spliterator.IMMUTABLE;
89
    }
90
91
    @Nonnull
92
    @Override
93
    public Comparator<? super CmsFile> getComparator() {
94 1 1. getComparator : replaced return value with null for com/fwmotion/threescale/cms/support/PagedFilesSpliterator::getComparator → SURVIVED
        return Comparator.comparing(CmsFile::getId);
95
    }
96
}

Mutations

60

1.1
Location : getPage
Killed by : none
removed call to com/fwmotion/threescale/cms/support/PagedFilesSpliterator::validateResultPageSize → SURVIVED

67

1.1
Location : getPage
Killed by : com.fwmotion.threescale.cms.ThreescaleCmsClientImplUnitTest.[engine:junit-jupiter]/[class:com.fwmotion.threescale.cms.ThreescaleCmsClientImplUnitTest]/[method:streamFiles()]
replaced return value with Collections.emptyList for com/fwmotion/threescale/cms/support/PagedFilesSpliterator::getPage → KILLED

79

1.1
Location : doSplit
Killed by : com.fwmotion.threescale.cms.ThreescaleCmsClientImplUnitTest.[engine:junit-jupiter]/[class:com.fwmotion.threescale.cms.ThreescaleCmsClientImplUnitTest]/[method:streamFiles()]
replaced return value with null for com/fwmotion/threescale/cms/support/PagedFilesSpliterator::doSplit → KILLED

84

1.1
Location : characteristics
Killed by : none
replaced int return with 0 for com/fwmotion/threescale/cms/support/PagedFilesSpliterator::characteristics → SURVIVED

94

1.1
Location : getComparator
Killed by : none
replaced return value with null for com/fwmotion/threescale/cms/support/PagedFilesSpliterator::getComparator → SURVIVED

Active mutators

Tests examined


Report generated by PIT 1.15.3