Skip to content

Commit

Permalink
Merge pull request #881 from amido/4713-Mapstruct-mapper-replacement
Browse files Browse the repository at this point in the history
4713 mapstruct mapper replacement
  • Loading branch information
sdavis-amido authored Jul 8, 2022
2 parents 959cb80 + 0c33ee7 commit d9aa4c8
Show file tree
Hide file tree
Showing 11 changed files with 727 additions and 679 deletions.
1,202 changes: 612 additions & 590 deletions java/pom.xml

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,16 @@
import com.amido.stacks.workloads.menu.domain.Category;
import com.amido.stacks.workloads.menu.domain.Item;
import com.amido.stacks.workloads.menu.domain.Menu;
import com.amido.stacks.workloads.menu.mappers.DomainToDtoMapper;
import com.amido.stacks.workloads.menu.mappers.MenuMapper;
import com.amido.stacks.workloads.menu.mappers.SearchMenuResultItemMapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.UUID;
import java.util.stream.Collectors;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;

Expand All @@ -23,18 +25,13 @@ public class QueryMenuControllerImpl implements QueryMenuController {

Logger logger = LoggerFactory.getLogger(QueryMenuControllerImpl.class);

private DomainToDtoMapper mapper;
@Autowired private MenuMapper menuMapper;

public QueryMenuControllerImpl(DomainToDtoMapper mapper) {
this.mapper = mapper;
}
@Autowired private SearchMenuResultItemMapper searchMenuResultItemMapper;

@Override
public ResponseEntity<SearchMenuResult> searchMenu(
final String searchTerm,
final UUID restaurantId,
final Integer pageSize,
final Integer pageNumber) {
String searchTerm, UUID restaurantId, Integer pageSize, Integer pageNumber) {

List<Menu> menuList = new ArrayList<>();

Expand Down Expand Up @@ -62,12 +59,12 @@ public ResponseEntity<SearchMenuResult> searchMenu(
pageSize,
pageNumber,
menuList.stream()
.map(m -> mapper.toSearchMenuResultItem(m))
.map(m -> searchMenuResultItemMapper.toDto(m))
.collect(Collectors.toList())));
}

@Override
public ResponseEntity<MenuDTO> getMenu(final UUID id, final String correlationId) {
public ResponseEntity<MenuDTO> getMenu(UUID id, String correlationId) {
final String restaurantId = "58a1df85-6bdc-412a-a118-0f0e394c1342";
final String categoryId = "2c43dbda-7d4d-46fb-b246-bec2bd348ca1";
final String itemId = "7e46a698-080b-45e6-a529-2c196d00791c";
Expand All @@ -79,6 +76,6 @@ public ResponseEntity<MenuDTO> getMenu(final UUID id, final String correlationId
new Category(categoryId, "cat name", "cat description", Arrays.asList(item));
menu.addOrUpdateCategory(category);

return ResponseEntity.ok(mapper.toMenuDto(menu));
return ResponseEntity.ok(menuMapper.toDto(menu));
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,20 +3,17 @@
import com.amido.stacks.workloads.menu.api.v1.dto.response.MenuDTO;
import com.amido.stacks.workloads.menu.api.v2.QueryMenuControllerV2;
import com.amido.stacks.workloads.menu.domain.Menu;
import com.amido.stacks.workloads.menu.mappers.DomainToDtoMapper;
import com.amido.stacks.workloads.menu.mappers.MenuMapper;
import java.util.ArrayList;
import java.util.UUID;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class QueryMenuControllerImplV2 implements QueryMenuControllerV2 {

private DomainToDtoMapper mapper;

public QueryMenuControllerImplV2(DomainToDtoMapper mapper) {
this.mapper = mapper;
}
@Autowired private MenuMapper menuMapper;

@Override
public ResponseEntity<MenuDTO> getMenu(UUID id, String correlationId) {
Expand All @@ -26,6 +23,6 @@ public ResponseEntity<MenuDTO> getMenu(UUID id, String correlationId) {
new Menu(
id.toString(), restaurantId, "0 Menu", "0 Menu Description", new ArrayList<>(), true);

return ResponseEntity.ok(mapper.toMenuDto(menu));
return ResponseEntity.ok(menuMapper.toDto(menu));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.amido.stacks.workloads.menu.mappers;

import com.amido.stacks.core.mapping.BaseMapper;
import com.amido.stacks.workloads.menu.api.v1.dto.response.CategoryDTO;
import com.amido.stacks.workloads.menu.domain.Category;
import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;

@Mapper(
componentModel = "spring",
uses = {ItemMapper.class},
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface CategoryMapper extends BaseMapper<CategoryDTO, Category> {}

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
package com.amido.stacks.workloads.menu.mappers;

import com.amido.stacks.core.mapping.BaseMapper;
import com.amido.stacks.workloads.menu.api.v1.dto.response.ItemDTO;
import com.amido.stacks.workloads.menu.domain.Item;
import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;

@Mapper(
componentModel = "spring",
uses = {},
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface ItemMapper extends BaseMapper<ItemDTO, Item> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.amido.stacks.workloads.menu.mappers;

import com.amido.stacks.core.mapping.BaseMapper;
import com.amido.stacks.core.mapping.MapperUtils;
import com.amido.stacks.workloads.menu.api.v1.dto.response.MenuDTO;
import com.amido.stacks.workloads.menu.domain.Menu;
import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;

@Mapper(
componentModel = "spring",
uses = {MapperUtils.class, CategoryMapper.class},
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface MenuMapper extends BaseMapper<MenuDTO, Menu> {}
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
package com.amido.stacks.workloads.menu.mappers;

import com.amido.stacks.core.mapping.BaseMapper;
import com.amido.stacks.core.mapping.MapperUtils;
import com.amido.stacks.workloads.menu.api.v1.dto.response.SearchMenuResultItem;
import com.amido.stacks.workloads.menu.domain.Menu;
import org.mapstruct.Mapper;
import org.mapstruct.NullValueCheckStrategy;

@Mapper(
componentModel = "spring",
uses = {MapperUtils.class, CategoryMapper.class},
nullValueCheckStrategy = NullValueCheckStrategy.ALWAYS)
public interface SearchMenuResultItemMapper extends BaseMapper<SearchMenuResultItem, Menu> {}
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,10 @@
import com.amido.stacks.workloads.menu.domain.Category;
import com.amido.stacks.workloads.menu.domain.Item;
import com.amido.stacks.workloads.menu.domain.Menu;
import com.amido.stacks.workloads.menu.mappers.DomainToDtoMapper;
import com.amido.stacks.workloads.menu.mappers.CategoryMapper;
import com.amido.stacks.workloads.menu.mappers.ItemMapper;
import com.amido.stacks.workloads.menu.mappers.MenuMapper;
import com.amido.stacks.workloads.menu.mappers.SearchMenuResultItemMapper;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
Expand All @@ -39,6 +42,14 @@ public class QueryMenuControllerImplTest {

@Autowired private TestRestTemplate testRestTemplate;

@Autowired private MenuMapper menuMapper;

@Autowired private CategoryMapper categoryMapper;

@Autowired private ItemMapper itemMapper;

@Autowired private SearchMenuResultItemMapper searchMenuResultItemMapper;

final int DEFAULT_PAGE_NUMBER = 1;
final int DEFAULT_PAGE_SIZE = 20;

Expand Down Expand Up @@ -80,7 +91,7 @@ public void listMenusFilteredByRestaurantId() {

List<SearchMenuResultItem> expectedMenuList =
matching.stream()
.map(DomainToDtoMapper::toSearchMenuResultItem)
.map(m -> searchMenuResultItemMapper.toDto(m))
.collect(Collectors.toList());

SearchMenuResult expectedResponse =
Expand Down Expand Up @@ -111,7 +122,7 @@ public void getMenuById() {
new Category(categoryId, "cat name", "cat description", Arrays.asList(item));
menu.addOrUpdateCategory(category);

MenuDTO expectedResponse = DomainToDtoMapper.toMenuDto(menu);
MenuDTO expectedResponse = menuMapper.toDto(menu);

// When
var response =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import com.amido.stacks.workloads.menu.api.v1.dto.response.MenuDTO;
import com.amido.stacks.workloads.menu.domain.Menu;
import com.amido.stacks.workloads.menu.mappers.DomainToDtoMapper;
import com.amido.stacks.workloads.menu.mappers.MenuMapper;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -28,13 +28,15 @@ class QueryMenuControllerImplV2Test {

@Autowired private TestRestTemplate testRestTemplate;

@Autowired private MenuMapper menuMapper;

@Test
void getMenuById() {
// Given
Menu menu = createMenu(0);
String restaurantId = "3930ddff-82ce-4f7e-b910-b0709b276cf0";
menu.setRestaurantId(restaurantId);
MenuDTO expectedResponse = DomainToDtoMapper.toMenuDto(menu);
MenuDTO expectedResponse = menuMapper.toDto(menu);

// When
var response =
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,9 +15,30 @@
import java.util.UUID;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

@Tag("Unit")
class DomainToDtoMapperTest {
@SpringBootTest(
classes = {
MenuMapper.class,
MenuMapperImpl.class,
CategoryMapper.class,
CategoryMapperImpl.class,
ItemMapper.class,
ItemMapperImpl.class,
SearchMenuResultItemMapper.class,
SearchMenuResultItemMapperImpl.class
})
class DomainToDtoMapperMapstructTest {

@Autowired private MenuMapper menuMapper;

@Autowired private CategoryMapper categoryMapper;

@Autowired private ItemMapper itemMapper;

@Autowired private SearchMenuResultItemMapper searchMenuResultItemMapper;

@Test
void menuToMenuDto() {
Expand All @@ -39,7 +60,7 @@ void menuToMenuDto() {
enabled);

// When
MenuDTO menuDTO = DomainToDtoMapper.toMenuDto(menu);
MenuDTO menuDTO = menuMapper.toDto(menu);

// Then
assertThat(menuDTO.getId()).isEqualTo(id);
Expand All @@ -63,14 +84,14 @@ void menuToMenuDtoWithNullCategories() {
Menu menu = new Menu(id.toString(), restaurantId.toString(), name, description, null, enabled);

// When
MenuDTO menuDTO = DomainToDtoMapper.toMenuDto(menu);
MenuDTO menuDTO = menuMapper.toDto(menu);

// Then
assertThat(menuDTO.getId()).isEqualTo(id);
assertThat(menuDTO.getRestaurantId()).isEqualTo(restaurantId);
assertThat(menuDTO.getName()).isEqualTo(name);
assertThat(menuDTO.getDescription()).isEqualTo(description);
assertThat(menuDTO.getCategories()).isNull();
assertThat(menuDTO.getCategories()).isEmpty();
assertThat(menuDTO.getEnabled()).isEqualTo(enabled);
}

Expand All @@ -97,7 +118,7 @@ void menuToMenuDtoWithNullCategoryItems() {
enabled);

// When
MenuDTO menuDTO = DomainToDtoMapper.toMenuDto(menu);
MenuDTO menuDTO = menuMapper.toDto(menu);

// Then
assertThat(menuDTO.getId()).isEqualTo(id);
Expand All @@ -110,7 +131,7 @@ void menuToMenuDtoWithNullCategoryItems() {
assertThat(menuDTO.getCategories().get(0).getDescription())
.isEqualTo(category.getDescription());
assertThat(menuDTO.getCategories().get(0).getId()).isEqualTo(category.getId());
assertThat(menuDTO.getCategories().get(0).getItems()).isNull();
assertThat(menuDTO.getCategories().get(0).getItems()).isEmpty();
}

@Test
Expand All @@ -126,7 +147,7 @@ void menuToSearchMenuResultItem() {
Menu menu = new Menu(id.toString(), restaurantId.toString(), name, description, null, enabled);

// When
SearchMenuResultItem resultItem = DomainToDtoMapper.toSearchMenuResultItem(menu);
SearchMenuResultItem resultItem = searchMenuResultItemMapper.toDto(menu);

// Then
assertThat(resultItem.getId()).isEqualTo(id);
Expand All @@ -148,7 +169,7 @@ void itemToItemDto() {
Item item = new Item(id, name, description, price, available);

// When
ItemDTO itemDTO = DomainToDtoMapper.toItemDto(item);
ItemDTO itemDTO = itemMapper.toDto(item);

// Then
assertThat(itemDTO.getId()).isEqualTo(id);
Expand All @@ -168,7 +189,7 @@ void categoryToCategoryDto() {
Category category = new Category(id, name, description, Collections.emptyList());

// When
CategoryDTO categoryDTO = DomainToDtoMapper.toCategoryDto(category);
CategoryDTO categoryDTO = categoryMapper.toDto(category);

// Then
assertThat(categoryDTO.getId()).isEqualTo(id);
Expand Down

0 comments on commit d9aa4c8

Please sign in to comment.