diff --git a/kafka-sample/spring-modulith-outbox-pattern/pom.xml b/kafka-sample/spring-modulith-outbox-pattern/pom.xml index 3b781d95..5796e40d 100644 --- a/kafka-sample/spring-modulith-outbox-pattern/pom.xml +++ b/kafka-sample/spring-modulith-outbox-pattern/pom.xml @@ -144,11 +144,6 @@ postgresql test - - com.h2database - h2 - test - diff --git a/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/config/GlobalExceptionHandler.java b/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/exception/GlobalExceptionHandler.java similarity index 96% rename from kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/config/GlobalExceptionHandler.java rename to kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/exception/GlobalExceptionHandler.java index 618fd7e2..45bfb841 100644 --- a/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/config/GlobalExceptionHandler.java +++ b/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/exception/GlobalExceptionHandler.java @@ -1,6 +1,5 @@ -package com.example.outboxpattern.config; +package com.example.outboxpattern.exception; -import com.example.outboxpattern.exception.ResourceNotFoundException; import java.net.URI; import java.time.Instant; import java.util.Comparator; diff --git a/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/order/internal/entities/Order.java b/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/order/internal/entities/Order.java index 785c3835..1556f718 100644 --- a/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/order/internal/entities/Order.java +++ b/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/order/internal/entities/Order.java @@ -1,6 +1,15 @@ package com.example.outboxpattern.order.internal.entities; -import jakarta.persistence.*; +import jakarta.persistence.CascadeType; +import jakarta.persistence.Column; +import jakarta.persistence.Entity; +import jakarta.persistence.EnumType; +import jakarta.persistence.Enumerated; +import jakarta.persistence.GeneratedValue; +import jakarta.persistence.GenerationType; +import jakarta.persistence.Id; +import jakarta.persistence.OneToMany; +import jakarta.persistence.Table; import java.time.LocalDateTime; import java.util.ArrayList; import java.util.List; diff --git a/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/order/internal/request/OrderItemRequest.java b/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/order/internal/request/OrderItemRequest.java index 81637d21..443b441c 100644 --- a/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/order/internal/request/OrderItemRequest.java +++ b/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/order/internal/request/OrderItemRequest.java @@ -1,7 +1,10 @@ package com.example.outboxpattern.order.internal.request; import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.Positive; import java.math.BigDecimal; public record OrderItemRequest( - @NotBlank(message = "Product cannot be blank") String productCode, BigDecimal productPrice, int quantity) {} + @NotBlank(message = "Product cannot be blank") String productCode, + BigDecimal productPrice, + @Positive(message = "quantity cant be 0 or negative") Integer quantity) {} diff --git a/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/producer/Producer.java b/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/producer/Producer.java index 24a89643..29f62902 100644 --- a/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/producer/Producer.java +++ b/kafka-sample/spring-modulith-outbox-pattern/src/main/java/com/example/outboxpattern/producer/Producer.java @@ -14,8 +14,9 @@ public class Producer { @ApplicationModuleListener - void onOrderResponseEvent(OrderRecord event) { - publish(event.id()); + void onOrderResponseEvent(OrderRecord orderRecord) { + log.info("Received Event :{}", orderRecord); + publish(orderRecord.id()); } private void publish(Long orderId) { diff --git a/kafka-sample/spring-modulith-outbox-pattern/src/test/java/com/example/outboxpattern/order/internal/OrderModuleTests.java b/kafka-sample/spring-modulith-outbox-pattern/src/test/java/com/example/outboxpattern/order/internal/OrderModuleIntTests.java similarity index 91% rename from kafka-sample/spring-modulith-outbox-pattern/src/test/java/com/example/outboxpattern/order/internal/OrderModuleTests.java rename to kafka-sample/spring-modulith-outbox-pattern/src/test/java/com/example/outboxpattern/order/internal/OrderModuleIntTests.java index e54260a3..2cc55d30 100644 --- a/kafka-sample/spring-modulith-outbox-pattern/src/test/java/com/example/outboxpattern/order/internal/OrderModuleTests.java +++ b/kafka-sample/spring-modulith-outbox-pattern/src/test/java/com/example/outboxpattern/order/internal/OrderModuleIntTests.java @@ -4,6 +4,7 @@ import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.when; +import com.example.outboxpattern.common.ContainersConfig; import com.example.outboxpattern.order.OrderRecord; import com.example.outboxpattern.order.internal.request.OrderItemRequest; import com.example.outboxpattern.order.internal.request.OrderRequest; @@ -14,6 +15,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.test.mock.mockito.MockBean; +import org.springframework.context.annotation.Import; import org.springframework.kafka.core.KafkaOperations; import org.springframework.kafka.support.SendResult; import org.springframework.modulith.test.ApplicationModuleTest; @@ -21,7 +23,8 @@ @Slf4j @ApplicationModuleTest -class OrderModuleTests { +@Import(ContainersConfig.class) +class OrderModuleIntTests { @MockBean KafkaOperations kafkaOperations;