From 58bd1ad2322bbd0538ded776af9361fc65c6990b Mon Sep 17 00:00:00 2001 From: Raja Kolli Date: Fri, 8 Dec 2023 09:35:47 +0000 Subject: [PATCH] feat: remove transient and use response --- .../catalogservice/entities/Product.java | 20 +------------------ .../catalogservice/mapper/ProductMapper.java | 3 +-- .../services/ProductService.java | 11 +++++----- .../web/controllers/ProductControllerIT.java | 6 +++--- .../controllers/ProductControllerTest.java | 5 ++--- 5 files changed, 12 insertions(+), 33 deletions(-) diff --git a/catalog-service/src/main/java/com/example/catalogservice/entities/Product.java b/catalog-service/src/main/java/com/example/catalogservice/entities/Product.java index 2376c8d5..67708b60 100644 --- a/catalog-service/src/main/java/com/example/catalogservice/entities/Product.java +++ b/catalog-service/src/main/java/com/example/catalogservice/entities/Product.java @@ -9,7 +9,6 @@ Licensed under MIT License Copyright (c) 2021-2023 Raja Kolli. import java.io.Serial; import java.io.Serializable; import org.springframework.data.annotation.Id; -import org.springframework.data.annotation.Transient; import org.springframework.data.relational.core.mapping.Table; @Table(name = "products") @@ -27,23 +26,14 @@ public class Product implements Serializable { private double price; - @Transient private boolean inStock; - public Product() {} - public Product( - Long id, - String code, - String productName, - String description, - double price, - boolean inStock) { + public Product(Long id, String code, String productName, String description, double price) { this.id = id; this.code = code; this.productName = productName; this.description = description; this.price = price; - this.inStock = inStock; } public Long getId() { @@ -85,12 +75,4 @@ public double getPrice() { public void setPrice(double price) { this.price = price; } - - public boolean isInStock() { - return inStock; - } - - public void setInStock(boolean inStock) { - this.inStock = inStock; - } } diff --git a/catalog-service/src/main/java/com/example/catalogservice/mapper/ProductMapper.java b/catalog-service/src/main/java/com/example/catalogservice/mapper/ProductMapper.java index 8e03081d..a5818092 100644 --- a/catalog-service/src/main/java/com/example/catalogservice/mapper/ProductMapper.java +++ b/catalog-service/src/main/java/com/example/catalogservice/mapper/ProductMapper.java @@ -17,16 +17,15 @@ Licensed under MIT License Copyright (c) 2021-2023 Raja Kolli. @Mapper(componentModel = "spring") public interface ProductMapper { + @Mapping(target = "inStock", ignore = true) @Mapping(target = "withInStock", ignore = true) ProductResponse toProductResponse(Product product); @Mapping(target = "id", ignore = true) - @Mapping(target = "inStock", ignore = true) Product toEntity(ProductRequest productRequest); ProductDto toProductDto(ProductRequest productRequest); - @Mapping(target = "inStock", ignore = true) @Mapping(target = "id", ignore = true) void mapProductWithRequest(ProductRequest productRequest, @MappingTarget Product product); } diff --git a/catalog-service/src/main/java/com/example/catalogservice/services/ProductService.java b/catalog-service/src/main/java/com/example/catalogservice/services/ProductService.java index 9f993751..d6cf5d0e 100644 --- a/catalog-service/src/main/java/com/example/catalogservice/services/ProductService.java +++ b/catalog-service/src/main/java/com/example/catalogservice/services/ProductService.java @@ -130,16 +130,15 @@ public Mono findProductById(Long id) { return productRepository .findById(id) .switchIfEmpty(Mono.error(new ProductNotFoundException(id))) + .map(productMapper::toProductResponse) .flatMap( - product -> - getInventoryByProductCode(product.getCode()) + productResponse -> + getInventoryByProductCode(productResponse.code()) .map( inventoryDto -> { - product.setInStock( + return productResponse.withInStock( inventoryDto.availableQuantity() > 0); - return product; - })) - .map(productMapper::toProductResponse); + })); } private Mono getInventoryByProductCode(String code) { diff --git a/catalog-service/src/test/java/com/example/catalogservice/web/controllers/ProductControllerIT.java b/catalog-service/src/test/java/com/example/catalogservice/web/controllers/ProductControllerIT.java index 96ab69a2..16f4c9d5 100644 --- a/catalog-service/src/test/java/com/example/catalogservice/web/controllers/ProductControllerIT.java +++ b/catalog-service/src/test/java/com/example/catalogservice/web/controllers/ProductControllerIT.java @@ -68,9 +68,9 @@ void setUp() { List productList = List.of( - new Product(null, "P001", "name 1", "description 1", 9.0, false), - new Product(null, "P002", "name 2", "description 2", 10.0, false), - new Product(null, "P003", "name 3", "description 3", 11.0, false)); + new Product(null, "P001", "name 1", "description 1", 9.0), + new Product(null, "P002", "name 2", "description 2", 10.0), + new Product(null, "P003", "name 3", "description 3", 11.0)); savedProductList = productRepository .deleteAll() diff --git a/catalog-service/src/test/java/com/example/catalogservice/web/controllers/ProductControllerTest.java b/catalog-service/src/test/java/com/example/catalogservice/web/controllers/ProductControllerTest.java index 26226049..cd8bcc7c 100644 --- a/catalog-service/src/test/java/com/example/catalogservice/web/controllers/ProductControllerTest.java +++ b/catalog-service/src/test/java/com/example/catalogservice/web/controllers/ProductControllerTest.java @@ -189,8 +189,7 @@ void shouldReturn400WhenCreateNewProductWithoutCode() throws Exception { @Test void shouldUpdateProduct() { Long productId = 1L; - Product product = - new Product(productId, "code 1", "Updated name", "description 1", 9.0, true); + Product product = new Product(productId, "code 1", "Updated name", "description 1", 9.0); ProductRequest productRequest = new ProductRequest("code 1", "Updated name", "description 1", 9.0); ProductResponse productResponse = @@ -241,7 +240,7 @@ void shouldReturn404WhenUpdatingNonExistingProduct() { @Test void shouldDeleteProduct() { Long productId = 1L; - Product product = new Product(1L, "code 1", "Updated name", "description 1", 9.0, true); + Product product = new Product(1L, "code 1", "Updated name", "description 1", 9.0); ProductResponse productResponse = new ProductResponse(1L, "code 1", "Updated name", "description 1", 9.0, true); given(productService.findByIdWithMapping(productId)).willReturn(Mono.just(productResponse));