Skip to content

Commit

Permalink
fix: simplify Page usage
Browse files Browse the repository at this point in the history
Use map() where it's possible to simplify the code
  • Loading branch information
michel-barret committed Jul 25, 2024
1 parent dfe57be commit b579ba1
Show file tree
Hide file tree
Showing 27 changed files with 147 additions and 303 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -117,13 +117,7 @@ public void deleteAll(String alertId) {
public Page<AlertEvent> search(AlertEventCriteria criteria, Pageable pageable) {
Page<AlertEventMongo> alertEventsMongo = internalAlertEventRepo.search(criteria, pageable);

List<AlertEvent> content = mapper.mapAlertEvents(alertEventsMongo.getContent());
return new Page<>(
content,
alertEventsMongo.getPageNumber(),
(int) alertEventsMongo.getPageElements(),
alertEventsMongo.getTotalElements()
);
return alertEventsMongo.map(mapper::map);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -90,9 +90,7 @@ public void delete(String apiId) throws TechnicalException {

@Override
public Page<Api> search(ApiCriteria apiCriteria, Sortable sortable, Pageable pageable, ApiFieldFilter apiFieldFilter) {
final Page<ApiMongo> apisMongo = internalApiRepo.search(apiCriteria, sortable, pageable, apiFieldFilter);
final List<Api> content = mapper.mapApis(apisMongo.getContent());
return new Page<>(content, apisMongo.getPageNumber(), (int) apisMongo.getPageElements(), apisMongo.getTotalElements());
return internalApiRepo.search(apiCriteria, sortable, pageable, apiFieldFilter).map(mapper::map);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,14 +129,7 @@ public Set<Application> findByNameAndStatuses(String partialName, ApplicationSta

@Override
public Page<Application> search(ApplicationCriteria applicationCriteria, Pageable pageable, Sortable sortable) {
final Page<ApplicationMongo> applicationsMongo = internalApplicationRepo.search(applicationCriteria, pageable, sortable);
final List<Application> applications = new ArrayList<>(mapApplications(applicationsMongo.getContent()));
return new Page<>(
applications,
applicationsMongo.getPageNumber(),
(int) applicationsMongo.getPageElements(),
applicationsMongo.getTotalElements()
);
return internalApplicationRepo.search(applicationCriteria, pageable, sortable).map(this::mapApplication);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import io.gravitee.repository.mongodb.management.internal.audit.AuditMongoRepository;
import io.gravitee.repository.mongodb.management.internal.model.AuditMongo;
import io.gravitee.repository.mongodb.management.mapper.GraviteeMapper;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import org.slf4j.Logger;
Expand All @@ -49,10 +48,7 @@ public class MongoAuditRepository implements AuditRepository {

@Override
public Page<Audit> search(AuditCriteria filter, Pageable pageable) {
Page<AuditMongo> auditsMongo = internalAuditRepo.search(filter, pageable);

List<Audit> content = mapper.mapAudits(auditsMongo.getContent());
return new Page<>(content, auditsMongo.getPageNumber(), (int) auditsMongo.getPageElements(), auditsMongo.getTotalElements());
return internalAuditRepo.search(filter, pageable).map(mapper::map);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -135,10 +135,7 @@ public long deleteApiEvents(String apiId) throws TechnicalException {

@Override
public Page<Event> search(EventCriteria filter, Pageable pageable) {
Page<EventMongo> eventsMongo = internalEventRepo.search(filter, pageable);

List<Event> content = mapper.mapEvents(eventsMongo.getContent());
return new Page<>(content, eventsMongo.getPageNumber(), (int) eventsMongo.getPageElements(), eventsMongo.getTotalElements());
return internalEventRepo.search(filter, pageable).map(mapper::map);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import lombok.extern.slf4j.Slf4j;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -38,6 +39,7 @@
* @author Eric LELEU (eric.leleu at graviteesource.com)
* @author GraviteeSource Team
*/
@Slf4j
@Component
public class MongoPageRevisionRepository implements PageRevisionRepository {

Expand All @@ -51,15 +53,9 @@ public class MongoPageRevisionRepository implements PageRevisionRepository {

@Override
public Page<PageRevision> findAll(Pageable pageable) throws TechnicalException {
org.springframework.data.domain.Page<PageRevisionMongo> revisions = internalPageRevisionRepo.findAll(
PageRequest.of(pageable.pageNumber(), pageable.pageSize())
);
return new Page<>(
revisions.getContent().stream().map(page -> mapper.map(page)).collect(Collectors.toList()),
pageable.pageNumber(),
revisions.getNumberOfElements(),
revisions.getTotalElements()
);
var revisions = internalPageRevisionRepo.findAll(PageRequest.of(pageable.pageNumber(), pageable.pageSize()));
return new Page<>(revisions.getContent(), pageable.pageNumber(), revisions.getNumberOfElements(), revisions.getTotalElements())
.map(page -> mapper.map(page));
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import io.gravitee.repository.mongodb.management.internal.model.PromotionMongo;
import io.gravitee.repository.mongodb.management.internal.promotion.PromotionMongoRepository;
import io.gravitee.repository.mongodb.management.mapper.GraviteeMapper;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -100,11 +99,10 @@ private Promotion map(PromotionMongo promotion) {
public Page<Promotion> search(PromotionCriteria criteria, Sortable sortable, Pageable pageable) {
logger.debug("Searching promotions");

Page<PromotionMongo> promotions = internalRepository.search(criteria, sortable, pageable);
List<Promotion> content = mapper.mapPromotions(promotions.getContent());
var promotions = internalRepository.search(criteria, sortable, pageable).map(mapper::map);

logger.debug("Searching promotions - Done");
return new Page<>(content, promotions.getPageNumber(), (int) promotions.getPageElements(), promotions.getTotalElements());
return promotions;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,15 +50,7 @@ public class MongoSubscriptionRepository implements SubscriptionRepository {

@Override
public Page<Subscription> search(SubscriptionCriteria criteria, Sortable sortable, Pageable pageable) throws TechnicalException {
Page<SubscriptionMongo> subscriptionsMongo = internalSubscriptionRepository.search(criteria, sortable, pageable);

List<Subscription> content = mapper.mapSubscriptions(subscriptionsMongo.getContent());
return new Page<>(
content,
subscriptionsMongo.getPageNumber(),
(int) subscriptionsMongo.getPageElements(),
subscriptionsMongo.getTotalElements()
);
return internalSubscriptionRepository.search(criteria, sortable, pageable).map(mapper::map);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -133,8 +133,6 @@ public Set<Theme> findByReferenceIdAndReferenceTypeAndType(String referenceId, S

@Override
public Page<Theme> search(ThemeCriteria criteria, Pageable pageable) {
final Page<ThemeMongo> page = internalThemeRepo.search(criteria, pageable);
final List<Theme> content = page.getContent().stream().map(themeMongo -> mapper.map(themeMongo)).toList();
return new Page<>(content, page.getPageNumber(), (int) page.getPageElements(), page.getTotalElements());
return internalThemeRepo.search(criteria, pageable).map(themeMongo -> mapper.map(themeMongo));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import io.gravitee.repository.mongodb.management.internal.model.TicketMongo;
import io.gravitee.repository.mongodb.management.internal.ticket.TicketMongoRepository;
import io.gravitee.repository.mongodb.management.mapper.GraviteeMapper;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
Expand Down Expand Up @@ -67,12 +66,11 @@ public Ticket create(Ticket ticket) throws TechnicalException {
public Page<Ticket> search(TicketCriteria criteria, Sortable sortable, Pageable pageable) throws TechnicalException {
LOGGER.debug("Search tickets");

Page<TicketMongo> tickets = internalTicketRepo.search(criteria, sortable, pageable);
List<Ticket> content = mapper.mapTickets(tickets.getContent());
var tickets = internalTicketRepo.search(criteria, sortable, pageable).map(mapper::map);

LOGGER.debug("Search tickets - Done");

return new Page<>(content, tickets.getPageNumber(), (int) tickets.getPageElements(), tickets.getTotalElements());
return tickets;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,6 @@
import io.gravitee.repository.mongodb.management.internal.user.UserMongoRepository;
import io.gravitee.repository.mongodb.management.mapper.GraviteeMapper;
import java.util.Collection;
import java.util.List;
import java.util.Optional;
import java.util.Set;
import java.util.regex.Pattern;
Expand Down Expand Up @@ -88,11 +87,10 @@ public Set<User> findByIds(Collection<String> ids) {
public Page<User> search(UserCriteria criteria, Pageable pageable) throws TechnicalException {
logger.debug("search users");

Page<UserMongo> users = internalUserRepo.search(criteria, pageable);
List<User> content = mapper.mapUserList(users.getContent());
var users = internalUserRepo.search(criteria, pageable).map(mapper::map);

logger.debug("search users - Done");
return new Page<>(content, users.getPageNumber(), (int) users.getPageElements(), users.getTotalElements());
return users;
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,17 @@
*/
package io.gravitee.repository.management;

import static io.gravitee.repository.utils.DateUtils.compareDate;
import static org.junit.Assert.*;
import static org.assertj.core.api.Assertions.assertThat;

import io.gravitee.common.data.domain.Page;
import io.gravitee.repository.exceptions.TechnicalException;
import io.gravitee.repository.management.api.search.builder.PageableBuilder;
import io.gravitee.repository.management.model.PageRevision;
import java.util.*;
import java.time.Instant;
import java.util.Date;
import java.util.List;
import java.util.Optional;
import org.assertj.core.api.AutoCloseableSoftAssertions;
import org.junit.Test;

/**
Expand All @@ -40,47 +43,47 @@ protected String getTestCasesPath() {
public void shouldFindApiPageRevisionById() throws Exception {
final Optional<PageRevision> pageRevision = pageRevisionRepository.findById("FindApiPage", 1);

assertNotNull(pageRevision);
assertTrue(pageRevision.isPresent());
assertThat(pageRevision).isPresent();
assertFindPageRevision(pageRevision.get());
}

private void assertFindPageRevision(PageRevision pageRevision) {
assertEquals("page id", "FindApiPage", pageRevision.getPageId());
assertEquals("hash algo", "hexstring", pageRevision.getHash());
assertEquals("revision", 1, pageRevision.getRevision());
assertEquals("name", "Find apiPage by apiId or Id", pageRevision.getName());
assertEquals("content", "Content of the page", pageRevision.getContent());
assertThat(pageRevision.getPageId()).isEqualTo("FindApiPage");
assertThat(pageRevision.getHash()).isEqualTo("hexstring");
assertThat(pageRevision.getRevision()).isEqualTo(1);
assertThat(pageRevision.getName()).isEqualTo("Find apiPage by apiId or Id");
assertThat(pageRevision.getContent()).isEqualTo("Content of the page");

assertTrue("created at", compareDate(new Date(1486771200000L), pageRevision.getCreatedAt()));
assertThat(pageRevision.getCreatedAt()).isEqualTo(Instant.ofEpochMilli(1486771200000L));
}

@Test
public void shouldFindAll_MaxInteger() throws TechnicalException {
Page<PageRevision> revisions = pageRevisionRepository.findAll(
new PageableBuilder().pageNumber(0).pageSize(Integer.MAX_VALUE).build()
);
assertNotNull(revisions);
assertNotNull(revisions.getContent());
assertEquals(revisions.getPageNumber(), 0);
assertEquals(revisions.getPageElements(), 6);
assertEquals(revisions.getTotalElements(), 6);
assertEquals(revisions.getContent().size(), 6);
try (AutoCloseableSoftAssertions softly = new AutoCloseableSoftAssertions()) {
softly.assertThat(revisions).isNotNull();
softly.assertThat(revisions.getPageNumber()).isEqualTo(0);
softly.assertThat(revisions.getPageElements()).isEqualTo(6);
softly.assertThat(revisions.getTotalElements()).isEqualTo(6);
softly.assertThat(revisions.getContent()).hasSize(6);
}
}

@Test
public void shouldFindAll_PageSize3() throws TechnicalException {
int pageNumber = 0;
Set<String> accumulator = new HashSet<>();
do {
Page<PageRevision> revisions = pageRevisionRepository.findAll(new PageableBuilder().pageNumber(pageNumber).pageSize(3).build());
assertNotNull(revisions);
assertNotNull(revisions.getContent());
assertEquals(revisions.getPageNumber(), pageNumber);
assertEquals(revisions.getPageElements(), 3);
assertEquals(revisions.getTotalElements(), 6);
assertEquals(revisions.getContent().size(), 3);
revisions.getContent().stream().forEach(rev -> accumulator.add(rev.getPageId() + "-" + rev.getRevision()));

try (AutoCloseableSoftAssertions softly = new AutoCloseableSoftAssertions()) {
softly.assertThat(revisions).isNotNull();
softly.assertThat(revisions.getContent()).hasSize(3);
softly.assertThat(revisions.getPageNumber()).isEqualTo(pageNumber);
softly.assertThat(revisions.getPageElements()).isEqualTo(3);
softly.assertThat(revisions.getTotalElements()).isEqualTo(6);
}
} while (++pageNumber < 2);
}

Expand All @@ -97,54 +100,51 @@ public void shouldCreateApiPageRevision() throws Exception {
Optional<PageRevision> optionalBefore = pageRevisionRepository.findById("new-page", 5);
pageRevisionRepository.create(pageRevision);
Optional<PageRevision> optionalAfter = pageRevisionRepository.findById("new-page", 5);
assertFalse("Page not found before", optionalBefore.isPresent());
assertTrue("Page saved not found", optionalAfter.isPresent());
assertThat(optionalBefore).isEmpty();
assertThat(optionalAfter).isPresent();

final PageRevision pageSaved = optionalAfter.get();
assertEquals("Invalid saved pageRevision name.", pageRevision.getName(), pageSaved.getName());
assertEquals("Invalid pageRevision content.", pageRevision.getContent(), pageSaved.getContent());
assertEquals("Invalid pageRevision pageId.", pageRevision.getPageId(), pageSaved.getPageId());
assertEquals("Invalid pageRevision hash.", pageRevision.getHash(), pageSaved.getHash());
assertEquals("Invalid pageRevision revision.", pageRevision.getRevision(), pageSaved.getRevision());
try (AutoCloseableSoftAssertions softly = new AutoCloseableSoftAssertions()) {
softly.assertThat(pageSaved.getName()).isEqualTo(pageRevision.getName());
softly.assertThat(pageSaved.getContent()).isEqualTo(pageRevision.getContent());
softly.assertThat(pageSaved.getPageId()).isEqualTo(pageRevision.getPageId());
softly.assertThat(pageSaved.getHash()).isEqualTo(pageRevision.getHash());
softly.assertThat(pageSaved.getRevision()).isEqualTo(pageRevision.getRevision());
}
}

@Test
public void shouldFindAllByPageId() throws Exception {
List<PageRevision> pageShouldExists = pageRevisionRepository.findAllByPageId("findByPageId");

assertNotNull(pageShouldExists);
assertEquals(3, pageShouldExists.size());
for (PageRevision rev : pageShouldExists) {
assertEquals("findByPageId", rev.getPageId());
}
assertThat(pageShouldExists).hasSize(3).extracting(PageRevision::getPageId).containsOnly("findByPageId");
}

@Test
public void shouldNotFindAllByPageId() throws Exception {
List<PageRevision> pageShouldExists = pageRevisionRepository.findAllByPageId("findByPageId_unknown");

assertNotNull(pageShouldExists);
assertEquals(0, pageShouldExists.size());
assertThat(pageShouldExists).isNotNull().isEmpty();
}

@Test
public void shouldFindLastByPageId() throws Exception {
Optional<PageRevision> pageShouldExists = pageRevisionRepository.findLastByPageId("findByPageId");

assertNotNull(pageShouldExists);
assertTrue(pageShouldExists.isPresent());
assertEquals("findByPageId", pageShouldExists.get().getPageId());
assertEquals(3, pageShouldExists.get().getRevision());
assertEquals("lorem ipsum", pageShouldExists.get().getContent());
assertEquals("revision 3", pageShouldExists.get().getName());
assertEquals("findByPageId", pageShouldExists.get().getPageId());
assertThat(pageShouldExists).isNotNull().isPresent();
try (AutoCloseableSoftAssertions softly = new AutoCloseableSoftAssertions()) {
softly.assertThat(pageShouldExists.get().getPageId()).isEqualTo("findByPageId");
softly.assertThat(pageShouldExists.get().getRevision()).isEqualTo(3);
softly.assertThat(pageShouldExists.get().getContent()).isEqualTo("lorem ipsum");
softly.assertThat(pageShouldExists.get().getName()).isEqualTo("revision 3");
softly.assertThat(pageShouldExists.get().getPageId()).isEqualTo("findByPageId");
}
}

@Test
public void shouldNotFindLastByPageId() throws Exception {
Optional<PageRevision> pageShouldExists = pageRevisionRepository.findLastByPageId("findByPageId_unknown");

assertNotNull(pageShouldExists);
assertFalse(pageShouldExists.isPresent());
assertThat(pageShouldExists).isNotNull().isNotPresent();
}
}
Loading

0 comments on commit b579ba1

Please sign in to comment.