in pekko-sample-persistence-dc-java/src/main/java/sample/persistence/res/auction/AuctionEntity.java [321:345]
public EventHandler<AuctionState, Event> eventHandler() {
return newEventHandlerBuilder()
.forAnyState()
.onEvent(
BidRegistered.class,
(state, event) -> {
if (AuctionState.isHigherBid(event.bid, state.highestBid)) {
return state.withNewHighestBid(event.bid);
} else {
return state.withTooLowBid(event.bid);
}
})
.onEvent(
AuctionFinished.class,
(state, event) -> {
AuctionState newState = state.addFinishedAtReplica(event.atReplica.id());
if (state.isClosed()) return state; // already closed
else if (!getReplicationContext().recoveryRunning()) {
eventTriggers(event, newState);
}
return newState;
})
.onEvent(WinnerDecided.class, (state, event) -> state.close())
.build();
}