/** * @author Allard Buijze */ public class Message { @AggregateIdentifier private UUID identifier; public Message(String messageContents) { identifier = UUID.randomUUID(); apply(new MessageCreatedEvent(messageContents)); } public Message() { } }
private static class CountingAggregate { private static final long serialVersionUID = -2927751585905120260L; private int counter = 0; @AggregateIdentifier private String identifier; private CountingAggregate(String identifier) { apply(new AggregateCreatedEvent(identifier)); } CountingAggregate() { } public void setCounter(int newValue) { apply(new CounterChangedEvent(newValue)); } @EventSourcingHandler private void handleCreatedEvent(AggregateCreatedEvent event) { this.identifier = event.getAggregateIdentifier(); } @EventSourcingHandler private void handleCounterIncreased(CounterChangedEvent event) { this.counter = event.getCounter(); } }
public static class StubAggregate { @SuppressWarnings("unused") @AggregateIdentifier private String aggregateId; public StubAggregate() { } @CommandHandler public StubAggregate(CreateCommand command) { apply(new CreatedEvent(command.getAggregateId())); } @CommandHandler public void handle(UpdateCommand command, ConflictResolver conflictResolver) { conflictResolver.detectConflicts(Conflicts.payloadMatching(UpdatedEvent.class, u -> Objects.equals(command.getUpdate(), u.getUpdate()))); apply(new UpdatedEvent(command.getUpdate())); } @CommandHandler public void handle(UpdateWithoutConflictDetectionCommand command) { apply(new UpdatedEvent(command.getUpdate())); } @EventSourcingHandler protected void on(CreatedEvent event) { this.aggregateId = event.getAggregateId(); } }
@AggregateIdentifier private String identifier;
@AggregateIdentifier private String identifier;
@AggregateIdentifier private String id;
public static class Book { @AggregateIdentifier private String bookId; @AggregateMember private List<Page> pages = new ArrayList<>(); private int lastPage = -1; @CommandHandler public Book(CreateBookCommand cmd) { apply(new BookCreatedEvent(cmd.getBookId())); } @CommandHandler public void handle(CreatePageCommand cmd) { apply(new PageCreatedEvent(cmd.getBookId(), lastPage + 1)); } @EventSourcingHandler protected void handle(BookCreatedEvent event) { this.bookId = event.getBookId(); } @EventSourcingHandler protected void handle(PageCreatedEvent event) { this.lastPage = event.getPageId(); pages.add(new Page(event.getPageId())); } public List<Page> getPages() { return pages; } public String getBookId() { return bookId; } }
@AggregateIdentifier private String aggregateIdentifier;
@SuppressWarnings("unused") public static class MyAggregate { @AggregateIdentifier private String id; @AggregateMember
@Entity public class JpaAggregate { @AggregateIdentifier @Id private String id;
@SuppressWarnings("unused") private static class MyAggregate { @AggregateIdentifier private String id; private String state;
@AggregateIdentifier private String id; private int remainingValue;
@Aggregate public class ChatRoom { @AggregateIdentifier private String roomId; private Set<String> participants;