Skip to content
This repository has been archived by the owner on Dec 14, 2021. It is now read-only.

Commit

Permalink
More changes for the saga stuff, needed to make the api more consitent
Browse files Browse the repository at this point in the history
  • Loading branch information
jettro committed Dec 5, 2011
1 parent 5974299 commit 15ad3e6
Show file tree
Hide file tree
Showing 20 changed files with 208 additions and 129 deletions.
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -18,25 +18,34 @@
import org.axonframework.domain.AggregateIdentifier; import org.axonframework.domain.AggregateIdentifier;


/** /**
* Try to add new items for a specific OrderBook to the portfolio.
*
* @author Jettro Coenradie * @author Jettro Coenradie
*/ */
public class AddItemsToPortfolioCommand { public class AddItemsToPortfolioCommand {
private AggregateIdentifier portfolioIdentifier; private AggregateIdentifier portfolioIdentifier;
private AggregateIdentifier itemIdentfier; private AggregateIdentifier orderBookIdentifier;
private int amountOfItemsToAdd; private int amountOfItemsToAdd;


public AddItemsToPortfolioCommand(AggregateIdentifier portfolioIdentifier, AggregateIdentifier itemIdentfier, int amountOfItemsToAdd) { /**
* Create a new command.
*
* @param portfolioIdentifier Identifier of the Portfolio to add items to
* @param orderBookIdentifier Identifier of the OrderBook to add items for
* @param amountOfItemsToAdd AMount of items to add
*/
public AddItemsToPortfolioCommand(AggregateIdentifier portfolioIdentifier, AggregateIdentifier orderBookIdentifier, int amountOfItemsToAdd) {
this.portfolioIdentifier = portfolioIdentifier; this.portfolioIdentifier = portfolioIdentifier;
this.itemIdentfier = itemIdentfier; this.orderBookIdentifier = orderBookIdentifier;
this.amountOfItemsToAdd = amountOfItemsToAdd; this.amountOfItemsToAdd = amountOfItemsToAdd;
} }


public int getAmountOfItemsToAdd() { public int getAmountOfItemsToAdd() {
return amountOfItemsToAdd; return amountOfItemsToAdd;
} }


public AggregateIdentifier getItemIdentfier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentfier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -18,16 +18,19 @@
import org.axonframework.domain.AggregateIdentifier; import org.axonframework.domain.AggregateIdentifier;


/** /**
* Cancel a reservation for an amount of items for the OrderBook belonging to the provided identifier in the Portfolio
* of the provided identifier.
*
* @author Jettro Coenradie * @author Jettro Coenradie
*/ */
public class CancelItemReservationForPortfolioCommand { public class CancelItemReservationForPortfolioCommand {
private AggregateIdentifier portfolioIdentifier; private AggregateIdentifier portfolioIdentifier;
private AggregateIdentifier itemIdentifier; private AggregateIdentifier orderBookIdentifier;
private int amountOfCancelledItems; private int amountOfCancelledItems;


public CancelItemReservationForPortfolioCommand(AggregateIdentifier portfolioIdentifier, AggregateIdentifier itemIdentifier, int amountOfCancelledItems) { public CancelItemReservationForPortfolioCommand(AggregateIdentifier portfolioIdentifier, AggregateIdentifier orderBookIdentifier, int amountOfCancelledItems) {
this.portfolioIdentifier = portfolioIdentifier; this.portfolioIdentifier = portfolioIdentifier;
this.itemIdentifier = itemIdentifier; this.orderBookIdentifier = orderBookIdentifier;


this.amountOfCancelledItems = amountOfCancelledItems; this.amountOfCancelledItems = amountOfCancelledItems;
} }
Expand All @@ -36,8 +39,8 @@ public int getAmountOfItemsToCancel() {
return amountOfCancelledItems; return amountOfCancelledItems;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentifier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -18,25 +18,28 @@
import org.axonframework.domain.AggregateIdentifier; import org.axonframework.domain.AggregateIdentifier;


/** /**
* Confirm the reserved items belonging to OrderBook of the provided identifier for the Portfolio of the provided
* identifier.
*
* @author Jettro Coenradie * @author Jettro Coenradie
*/ */
public class ConfirmItemReservationForPortfolioCommand { public class ConfirmItemReservationForPortfolioCommand {
private AggregateIdentifier portfolioIdentifier; private AggregateIdentifier portfolioIdentifier;
private AggregateIdentifier itemIdentifier; private AggregateIdentifier orderBookIdentifier;
private int amountOfItemsToConfirm; private int amountOfItemsToConfirm;


public ConfirmItemReservationForPortfolioCommand(AggregateIdentifier portfolioIdentifier, AggregateIdentifier itemIdentifier, int amountOfItemsToConfirm) { public ConfirmItemReservationForPortfolioCommand(AggregateIdentifier portfolioIdentifier, AggregateIdentifier orderBookIdentifier, int amountOfItemsToConfirm) {
this.portfolioIdentifier = portfolioIdentifier; this.portfolioIdentifier = portfolioIdentifier;
this.itemIdentifier = itemIdentifier; this.orderBookIdentifier = orderBookIdentifier;
this.amountOfItemsToConfirm = amountOfItemsToConfirm; this.amountOfItemsToConfirm = amountOfItemsToConfirm;
} }


public int getAmountOfItemsToConfirm() { public int getAmountOfItemsToConfirm() {
return amountOfItemsToConfirm; return amountOfItemsToConfirm;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentifier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -22,20 +22,20 @@
* @author Jettro Coenradie * @author Jettro Coenradie
*/ */
public class ItemReservationCancelledForPortfolioEvent extends DomainEvent { public class ItemReservationCancelledForPortfolioEvent extends DomainEvent {
private AggregateIdentifier itemIdentifier; private AggregateIdentifier orderBookIdentifier;
private int amountOfCancelledItems; private int amountOfCancelledItems;


public ItemReservationCancelledForPortfolioEvent(AggregateIdentifier itemIdentifier, int amountOfCancelledItems) { public ItemReservationCancelledForPortfolioEvent(AggregateIdentifier orderBookIdentifier, int amountOfCancelledItems) {
this.itemIdentifier = itemIdentifier; this.orderBookIdentifier = orderBookIdentifier;
this.amountOfCancelledItems = amountOfCancelledItems; this.amountOfCancelledItems = amountOfCancelledItems;
} }


public int getAmountOfCancelledItems() { public int getAmountOfCancelledItems() {
return amountOfCancelledItems; return amountOfCancelledItems;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentifier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -22,20 +22,20 @@
* @author Jettro Coenradie * @author Jettro Coenradie
*/ */
public class ItemReservationConfirmedForPortfolioEvent extends DomainEvent { public class ItemReservationConfirmedForPortfolioEvent extends DomainEvent {
private AggregateIdentifier itemIdentifier; private AggregateIdentifier orderBookIdentifier;
private int amountOfConfirmedItems; private int amountOfConfirmedItems;


public ItemReservationConfirmedForPortfolioEvent(AggregateIdentifier itemIdentifier, int amountOfConfirmedItems) { public ItemReservationConfirmedForPortfolioEvent(AggregateIdentifier orderBookIdentifier, int amountOfConfirmedItems) {
this.itemIdentifier = itemIdentifier; this.orderBookIdentifier = orderBookIdentifier;
this.amountOfConfirmedItems = amountOfConfirmedItems; this.amountOfConfirmedItems = amountOfConfirmedItems;
} }


public int getAmountOfConfirmedItems() { public int getAmountOfConfirmedItems() {
return amountOfConfirmedItems; return amountOfConfirmedItems;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentifier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -22,14 +22,14 @@
* @author Jettro Coenradie * @author Jettro Coenradie
*/ */
public class ItemToReserveNotAvailableInPortfolioEvent extends DomainEvent { public class ItemToReserveNotAvailableInPortfolioEvent extends DomainEvent {
private AggregateIdentifier itemIdentifier; private AggregateIdentifier orderBookIdentifier;


public ItemToReserveNotAvailableInPortfolioEvent(AggregateIdentifier itemIdentifier) { public ItemToReserveNotAvailableInPortfolioEvent(AggregateIdentifier orderBookIdentifier) {
this.itemIdentifier = itemIdentifier; this.orderBookIdentifier = orderBookIdentifier;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentifier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -19,23 +19,25 @@
import org.axonframework.domain.DomainEvent; import org.axonframework.domain.DomainEvent;


/** /**
* New items have been added to the portfolio for the OrderBook of the provided identifier.
*
* @author Jettro Coenradie * @author Jettro Coenradie
*/ */
public class ItemsAddedToPortfolioEvent extends DomainEvent { public class ItemsAddedToPortfolioEvent extends DomainEvent {
private AggregateIdentifier itemIdentfier; private AggregateIdentifier orderBookIdentifier;
private int amountOfItemsAdded; private int amountOfItemsAdded;


public ItemsAddedToPortfolioEvent(AggregateIdentifier itemIdentfier, int amountOfItemsAdded) { public ItemsAddedToPortfolioEvent(AggregateIdentifier orderBookIdentifier, int amountOfItemsAdded) {
this.itemIdentfier = itemIdentfier; this.orderBookIdentifier = orderBookIdentifier;
this.amountOfItemsAdded = amountOfItemsAdded; this.amountOfItemsAdded = amountOfItemsAdded;
} }


public int getAmountOfItemsAdded() { public int getAmountOfItemsAdded() {
return amountOfItemsAdded; return amountOfItemsAdded;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentfier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -22,20 +22,20 @@
* @author Jettro Coenradie * @author Jettro Coenradie
*/ */
public class ItemsReservedEvent extends DomainEvent { public class ItemsReservedEvent extends DomainEvent {
private AggregateIdentifier itemIdentifier; private AggregateIdentifier orderBookIdentifier;
private int amountOfItemsReserved; private int amountOfItemsReserved;


public ItemsReservedEvent(AggregateIdentifier itemIdentifier, int amountOfItemsReserved) { public ItemsReservedEvent(AggregateIdentifier orderBookIdentifier, int amountOfItemsReserved) {
this.itemIdentifier = itemIdentifier; this.orderBookIdentifier = orderBookIdentifier;
this.amountOfItemsReserved = amountOfItemsReserved; this.amountOfItemsReserved = amountOfItemsReserved;
} }


public int getAmountOfItemsReserved() { public int getAmountOfItemsReserved() {
return amountOfItemsReserved; return amountOfItemsReserved;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentifier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -23,12 +23,12 @@
*/ */
public class NotEnoughItemsAvailableToReserveInPortfolio extends DomainEvent { public class NotEnoughItemsAvailableToReserveInPortfolio extends DomainEvent {


private AggregateIdentifier itemIdentifier; private AggregateIdentifier orderBookIdentifier;
private int availableAmountOfItems; private int availableAmountOfItems;
private int amountOfItemsToReserve; private int amountOfItemsToReserve;


public NotEnoughItemsAvailableToReserveInPortfolio(AggregateIdentifier itemIdentifier, int availableAmountOfItems, int amountOfItemsToReserve) { public NotEnoughItemsAvailableToReserveInPortfolio(AggregateIdentifier orderBookIdentifier, int availableAmountOfItems, int amountOfItemsToReserve) {
this.itemIdentifier = itemIdentifier; this.orderBookIdentifier = orderBookIdentifier;
this.availableAmountOfItems = availableAmountOfItems; this.availableAmountOfItems = availableAmountOfItems;
this.amountOfItemsToReserve = amountOfItemsToReserve; this.amountOfItemsToReserve = amountOfItemsToReserve;
} }
Expand All @@ -41,8 +41,8 @@ public int getAvailableAmountOfItems() {
return availableAmountOfItems; return availableAmountOfItems;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentifier; return orderBookIdentifier;
} }


public AggregateIdentifier getPortfolioIdentifier() { public AggregateIdentifier getPortfolioIdentifier() {
Expand Down
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -23,14 +23,14 @@
public class ReserveItemsCommand { public class ReserveItemsCommand {
private AggregateIdentifier portfolioIdentifier; private AggregateIdentifier portfolioIdentifier;
private int amountOfItemsToReserve; private int amountOfItemsToReserve;
private AggregateIdentifier itemIdentifier; private AggregateIdentifier orderBookIdentifier;


public ReserveItemsCommand(AggregateIdentifier portfolioIdentifier, public ReserveItemsCommand(AggregateIdentifier portfolioIdentifier,
AggregateIdentifier itemIdentifier, AggregateIdentifier orderBookIdentifier,
int amountOfItemsToReserve) { int amountOfItemsToReserve) {
this.portfolioIdentifier = portfolioIdentifier; this.portfolioIdentifier = portfolioIdentifier;
this.amountOfItemsToReserve = amountOfItemsToReserve; this.amountOfItemsToReserve = amountOfItemsToReserve;
this.itemIdentifier = itemIdentifier; this.orderBookIdentifier = orderBookIdentifier;
} }


public int getAmountOfItemsToReserve() { public int getAmountOfItemsToReserve() {
Expand All @@ -41,7 +41,7 @@ public AggregateIdentifier getPortfolioIdentifier() {
return portfolioIdentifier; return portfolioIdentifier;
} }


public AggregateIdentifier getItemIdentifier() { public AggregateIdentifier getOrderBookIdentifier() {
return itemIdentifier; return orderBookIdentifier;
} }
} }
Original file line number Original file line Diff line number Diff line change
Expand Up @@ -50,30 +50,30 @@ public Portfolio(AggregateIdentifier aggregateIdentifier, AggregateIdentifier us
apply(new PortfolioCreatedEvent(userIdentifier)); apply(new PortfolioCreatedEvent(userIdentifier));
} }


public void addItems(AggregateIdentifier itemIdentifier, int amountOfItemsToAdd) { public void addItems(AggregateIdentifier orderBookIdentifier, int amountOfItemsToAdd) {
apply(new ItemsAddedToPortfolioEvent(itemIdentifier, amountOfItemsToAdd)); apply(new ItemsAddedToPortfolioEvent(orderBookIdentifier, amountOfItemsToAdd));
} }


public void reserveItems(AggregateIdentifier itemIdentifier, int amountOfItemsToReserve) { public void reserveItems(AggregateIdentifier orderBookIdentifier, int amountOfItemsToReserve) {
if (!availableItems.containsKey(itemIdentifier)) { if (!availableItems.containsKey(orderBookIdentifier)) {
apply(new ItemToReserveNotAvailableInPortfolioEvent(itemIdentifier)); apply(new ItemToReserveNotAvailableInPortfolioEvent(orderBookIdentifier));
} else { } else {
Integer availableAmountOfItems = availableItems.get(itemIdentifier); Integer availableAmountOfItems = availableItems.get(orderBookIdentifier);
if (availableAmountOfItems < amountOfItemsToReserve) { if (availableAmountOfItems < amountOfItemsToReserve) {
apply(new NotEnoughItemsAvailableToReserveInPortfolio( apply(new NotEnoughItemsAvailableToReserveInPortfolio(
itemIdentifier, availableAmountOfItems, amountOfItemsToReserve)); orderBookIdentifier, availableAmountOfItems, amountOfItemsToReserve));
} else { } else {
apply(new ItemsReservedEvent(itemIdentifier, amountOfItemsToReserve)); apply(new ItemsReservedEvent(orderBookIdentifier, amountOfItemsToReserve));
} }
} }
} }


public void confirmReservation(AggregateIdentifier itemIdentifier, int amountOfItemsToConfirm) { public void confirmReservation(AggregateIdentifier orderBookIdentifier, int amountOfItemsToConfirm) {
apply(new ItemReservationConfirmedForPortfolioEvent(itemIdentifier, amountOfItemsToConfirm)); apply(new ItemReservationConfirmedForPortfolioEvent(orderBookIdentifier, amountOfItemsToConfirm));
} }


public void cancelReservation(AggregateIdentifier itemIdentifier, int amountOfItemsToCancel) { public void cancelReservation(AggregateIdentifier orderBookIdentifier, int amountOfItemsToCancel) {
apply(new ItemReservationCancelledForPortfolioEvent(itemIdentifier, amountOfItemsToCancel)); apply(new ItemReservationCancelledForPortfolioEvent(orderBookIdentifier, amountOfItemsToCancel));
} }


public void addMoney(long moneyToAddInCents) { public void addMoney(long moneyToAddInCents) {
Expand Down Expand Up @@ -118,32 +118,32 @@ public void onNotEnoughItemsAvailableToReserve(NotEnoughItemsAvailableToReserveI


@EventHandler @EventHandler
public void onItemsAddedToPortfolio(ItemsAddedToPortfolioEvent event) { public void onItemsAddedToPortfolio(ItemsAddedToPortfolioEvent event) {
int available = obtainCurrentAvailableItems(event.getItemIdentifier()); int available = obtainCurrentAvailableItems(event.getOrderBookIdentifier());
availableItems.put(event.getItemIdentifier(), available + event.getAmountOfItemsAdded()); availableItems.put(event.getOrderBookIdentifier(), available + event.getAmountOfItemsAdded());
} }


@EventHandler @EventHandler
public void onItemsReserved(ItemsReservedEvent event) { public void onItemsReserved(ItemsReservedEvent event) {
int available = obtainCurrentAvailableItems(event.getItemIdentifier()); int available = obtainCurrentAvailableItems(event.getOrderBookIdentifier());
availableItems.put(event.getItemIdentifier(), available - event.getAmountOfItemsReserved()); availableItems.put(event.getOrderBookIdentifier(), available - event.getAmountOfItemsReserved());


int reserved = obtainCurrentReservedItems(event.getItemIdentifier()); int reserved = obtainCurrentReservedItems(event.getOrderBookIdentifier());
reservedItems.put(event.getItemIdentifier(), reserved + event.getAmountOfItemsReserved()); reservedItems.put(event.getOrderBookIdentifier(), reserved + event.getAmountOfItemsReserved());
} }


@EventHandler @EventHandler
public void onReservationConfirmed(ItemReservationConfirmedForPortfolioEvent event) { public void onReservationConfirmed(ItemReservationConfirmedForPortfolioEvent event) {
int reserved = obtainCurrentReservedItems(event.getItemIdentifier()); int reserved = obtainCurrentReservedItems(event.getOrderBookIdentifier());
reservedItems.put(event.getItemIdentifier(), reserved - event.getAmountOfConfirmedItems()); reservedItems.put(event.getOrderBookIdentifier(), reserved - event.getAmountOfConfirmedItems());
} }


@EventHandler @EventHandler
public void onReservationCancelled(ItemReservationCancelledForPortfolioEvent event) { public void onReservationCancelled(ItemReservationCancelledForPortfolioEvent event) {
int reserved = obtainCurrentReservedItems(event.getItemIdentifier()); int reserved = obtainCurrentReservedItems(event.getOrderBookIdentifier());
reservedItems.put(event.getItemIdentifier(), reserved + event.getAmountOfCancelledItems()); reservedItems.put(event.getOrderBookIdentifier(), reserved + event.getAmountOfCancelledItems());


int available = obtainCurrentAvailableItems(event.getItemIdentifier()); int available = obtainCurrentAvailableItems(event.getOrderBookIdentifier());
availableItems.put(event.getItemIdentifier(), available + event.getAmountOfCancelledItems()); availableItems.put(event.getOrderBookIdentifier(), available + event.getAmountOfCancelledItems());
} }


@EventHandler @EventHandler
Expand Down
Loading

0 comments on commit 15ad3e6

Please sign in to comment.