From 65183f082ddc79b9b41928feabcd259eba98e982 Mon Sep 17 00:00:00 2001 From: Steven van Beelen Date: Wed, 10 Jul 2019 13:26:48 +0200 Subject: [PATCH 1/5] Update Axon dependency Update the Axon Framework version to 4.1.1. Additionally, drop the exclusion on axon-server-connector, as the page will be adjusted to use Axon Server SE. BAEL-2345 --- axon/pom.xml | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/axon/pom.xml b/axon/pom.xml index 2b9ac1fcdd..002701373f 100644 --- a/axon/pom.xml +++ b/axon/pom.xml @@ -18,12 +18,6 @@ org.axonframework axon-spring-boot-starter ${axon.version} - - - org.axonframework - axon-server-connector - - @@ -58,7 +52,7 @@ - 4.0.3 + 4.1.1 \ No newline at end of file From 97ab7130240d8995a9710ce53c611d4e51044627 Mon Sep 17 00:00:00 2001 From: Steven van Beelen Date: Wed, 10 Jul 2019 13:27:50 +0200 Subject: [PATCH 2/5] Create dedicated UnconfirmedOrderException Create a dedicated UnconfirmedOrderException and use it from the OrderAggregate instead of the IllegalStateException BAEL-2435 --- .../com/baeldung/axon/commandmodel/OrderAggregate.java | 7 ++++--- .../coreapi/exceptions/UnconfirmedOrderException.java | 8 ++++++++ 2 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 axon/src/main/java/com/baeldung/axon/coreapi/exceptions/UnconfirmedOrderException.java diff --git a/axon/src/main/java/com/baeldung/axon/commandmodel/OrderAggregate.java b/axon/src/main/java/com/baeldung/axon/commandmodel/OrderAggregate.java index b37b2fdd66..4ef02e6b54 100644 --- a/axon/src/main/java/com/baeldung/axon/commandmodel/OrderAggregate.java +++ b/axon/src/main/java/com/baeldung/axon/commandmodel/OrderAggregate.java @@ -13,6 +13,7 @@ import com.baeldung.axon.coreapi.commands.ShipOrderCommand; import com.baeldung.axon.coreapi.events.OrderConfirmedEvent; import com.baeldung.axon.coreapi.events.OrderPlacedEvent; import com.baeldung.axon.coreapi.events.OrderShippedEvent; +import com.baeldung.axon.coreapi.exceptions.UnconfirmedOrderException; @Aggregate public class OrderAggregate { @@ -34,7 +35,7 @@ public class OrderAggregate { @CommandHandler public void handle(ShipOrderCommand command) { if (!orderConfirmed) { - throw new IllegalStateException("Cannot ship an order which has not been confirmed yet."); + throw new UnconfirmedOrderException(); } apply(new OrderShippedEvent(orderId)); @@ -43,12 +44,12 @@ public class OrderAggregate { @EventSourcingHandler public void on(OrderPlacedEvent event) { this.orderId = event.getOrderId(); - orderConfirmed = false; + this.orderConfirmed = false; } @EventSourcingHandler public void on(OrderConfirmedEvent event) { - orderConfirmed = true; + this.orderConfirmed = true; } protected OrderAggregate() { diff --git a/axon/src/main/java/com/baeldung/axon/coreapi/exceptions/UnconfirmedOrderException.java b/axon/src/main/java/com/baeldung/axon/coreapi/exceptions/UnconfirmedOrderException.java new file mode 100644 index 0000000000..1873bc6893 --- /dev/null +++ b/axon/src/main/java/com/baeldung/axon/coreapi/exceptions/UnconfirmedOrderException.java @@ -0,0 +1,8 @@ +package com.baeldung.axon.coreapi.exceptions; + +public class UnconfirmedOrderException extends IllegalStateException { + + public UnconfirmedOrderException() { + super("Cannot ship an order which has not been confirmed yet."); + } +} From 496c2b173760e6f6a8047ac0ff8627615b2cd366 Mon Sep 17 00:00:00 2001 From: Steven van Beelen Date: Wed, 10 Jul 2019 13:37:28 +0200 Subject: [PATCH 3/5] Add ProcessingGroup annotation to OrderedProductsEventHandler Add the ProcessingGroup annotation to OrderedProductsEventHandler so that this event handler is grouped in a nicely named Event Processor. If the app is started in conjunction with Axon Server, this will make the set up more evident from the dashboard BAEL-2435 --- .../baeldung/axon/querymodel/OrderedProductsEventHandler.java | 2 ++ axon/src/main/resources/application.properties | 1 + 2 files changed, 3 insertions(+) create mode 100644 axon/src/main/resources/application.properties diff --git a/axon/src/main/java/com/baeldung/axon/querymodel/OrderedProductsEventHandler.java b/axon/src/main/java/com/baeldung/axon/querymodel/OrderedProductsEventHandler.java index d4cf3d999b..a37f0111ed 100644 --- a/axon/src/main/java/com/baeldung/axon/querymodel/OrderedProductsEventHandler.java +++ b/axon/src/main/java/com/baeldung/axon/querymodel/OrderedProductsEventHandler.java @@ -5,6 +5,7 @@ import java.util.HashMap; import java.util.List; import java.util.Map; +import org.axonframework.config.ProcessingGroup; import org.axonframework.eventhandling.EventHandler; import org.axonframework.queryhandling.QueryHandler; import org.springframework.stereotype.Service; @@ -16,6 +17,7 @@ import com.baeldung.axon.coreapi.queries.FindAllOrderedProductsQuery; import com.baeldung.axon.coreapi.queries.OrderedProduct; @Service +@ProcessingGroup("ordered-products") public class OrderedProductsEventHandler { private final Map orderedProducts = new HashMap<>(); diff --git a/axon/src/main/resources/application.properties b/axon/src/main/resources/application.properties new file mode 100644 index 0000000000..7c51eb8e1e --- /dev/null +++ b/axon/src/main/resources/application.properties @@ -0,0 +1 @@ +spring.application.name=Order Management Service \ No newline at end of file From 62d1391db542de03cedb5cc427c933a657336429 Mon Sep 17 00:00:00 2001 From: Steven van Beelen Date: Fri, 19 Jul 2019 16:05:12 +0200 Subject: [PATCH 4/5] Update Axon version Update Axon version to 4.1.2 BAEL-3099 --- axon/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/axon/pom.xml b/axon/pom.xml index 002701373f..3d30cceb83 100644 --- a/axon/pom.xml +++ b/axon/pom.xml @@ -52,7 +52,7 @@ - 4.1.1 + 4.1.2 \ No newline at end of file From ce364f6b2ebfb4ae3c443382497f2ee4b7d024ae Mon Sep 17 00:00:00 2001 From: Steven van Beelen Date: Fri, 19 Jul 2019 16:05:39 +0200 Subject: [PATCH 5/5] Adjust expected exception Adjust expected exception from IllegalArgumentException to UnconfirmedOrderException BAEL-3099 --- .../baeldung/axon/commandmodel/OrderAggregateUnitTest.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/axon/src/test/java/com/baeldung/axon/commandmodel/OrderAggregateUnitTest.java b/axon/src/test/java/com/baeldung/axon/commandmodel/OrderAggregateUnitTest.java index 9beedbaa19..aaefe49fb1 100644 --- a/axon/src/test/java/com/baeldung/axon/commandmodel/OrderAggregateUnitTest.java +++ b/axon/src/test/java/com/baeldung/axon/commandmodel/OrderAggregateUnitTest.java @@ -2,6 +2,7 @@ package com.baeldung.axon.commandmodel; import java.util.UUID; +import com.baeldung.axon.coreapi.exceptions.UnconfirmedOrderException; import org.axonframework.test.aggregate.AggregateTestFixture; import org.axonframework.test.aggregate.FixtureConfiguration; import org.junit.*; @@ -41,12 +42,12 @@ public class OrderAggregateUnitTest { } @Test - public void givenOrderPlacedEvent_whenShipOrderCommand_thenShouldThrowIllegalStateException() { + public void givenOrderPlacedEvent_whenShipOrderCommand_thenShouldThrowUnconfirmedOrderException() { String orderId = UUID.randomUUID().toString(); String product = "Deluxe Chair"; fixture.given(new OrderPlacedEvent(orderId, product)) .when(new ShipOrderCommand(orderId)) - .expectException(IllegalStateException.class); + .expectException(UnconfirmedOrderException.class); } @Test