Skip to content

Commit 0806ba9

Browse files
committed
Java Vanilla API
1 parent 6865cc5 commit 0806ba9

File tree

20 files changed

+478
-73
lines changed

20 files changed

+478
-73
lines changed

commons-events/src/main/java/fr/maif/eventsourcing/Lazy.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ private Lazy(io.vavr.Lazy<T> inner) {
99
this.inner = inner;
1010
}
1111

12+
public T get() {
13+
return inner.get();
14+
}
15+
1216
public static <T> Lazy<T> of(Supplier<T> supplier) {
1317
return new Lazy<>(io.vavr.Lazy.of(supplier));
1418
}

demo/demo-in-memory-vanilla/src/main/java/com/example/demo/Bank.java

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -2,21 +2,17 @@
22

33
import com.fasterxml.uuid.Generators;
44
import com.fasterxml.uuid.impl.TimeBasedGenerator;
5-
import fr.maif.eventsourcing.EventProcessorImpl;
6-
import fr.maif.eventsourcing.EventStore;
7-
import fr.maif.eventsourcing.vanilla.ProcessingSuccess;
5+
import fr.maif.eventsourcing.Lazy;
86
import fr.maif.eventsourcing.Result;
97
import fr.maif.eventsourcing.TransactionManager;
108
import fr.maif.eventsourcing.Unit;
11-
import fr.maif.eventsourcing.vanilla.EventProcessor;
12-
import fr.maif.reactor.eventsourcing.DefaultAggregateStore;
13-
import fr.maif.reactor.eventsourcing.InMemoryEventStore;
14-
import fr.maif.eventsourcing.vanilla.EventProcessorVanilla;
15-
import fr.maif.reactor.eventsourcing.InMemoryEventStore.Transaction;
16-
import io.vavr.Lazy;
17-
import io.vavr.collection.List;
9+
import fr.maif.eventsourcing.vanilla.*;
10+
import fr.maif.reactor.eventsourcing.vanilla.DefaultAggregateStore;
11+
import fr.maif.reactor.eventsourcing.vanilla.InMemoryEventStore;
12+
import fr.maif.reactor.eventsourcing.vanilla.InMemoryEventStore.Transaction;
1813

1914
import java.math.BigDecimal;
15+
import java.util.List;
2016
import java.util.Optional;
2117
import java.util.concurrent.CompletionStage;
2218
import java.util.concurrent.ExecutorService;
@@ -31,17 +27,19 @@ public class Bank {
3127
public Bank(
3228
BankCommandHandler commandHandler,
3329
BankEventHandler eventHandler) {
30+
3431
EventStore<Transaction<BankEvent, Unit, Unit>, BankEvent, Unit, Unit> eventStore = InMemoryEventStore.create();
3532
TransactionManager<Transaction<BankEvent, Unit, Unit>> transactionManager = noOpTransactionManager();
3633
ExecutorService executor = Executors.newCachedThreadPool();
37-
this.eventProcessor = new EventProcessorVanilla<>(new EventProcessorImpl<>(
34+
DefaultAggregateStore<Account, BankEvent, Unit, Unit, Transaction<BankEvent, Unit, Unit>> aggregateStore = new DefaultAggregateStore<>(eventStore, eventHandler, transactionManager);
35+
this.eventProcessor = new EventProcessorImpl<>(
3836
eventStore,
3937
transactionManager,
40-
new DefaultAggregateStore<>(eventStore, eventHandler, transactionManager),
38+
aggregateStore,
4139
commandHandler.toCommandHandler(executor),
4240
eventHandler,
43-
List.empty()
44-
));
41+
List.of()
42+
);
4543
}
4644

4745
private TransactionManager<Transaction<BankEvent, Unit, Unit>> noOpTransactionManager() {

demo/demo-in-memory-vanilla/src/main/java/com/example/demo/BankCommand.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,23 @@
11
package com.example.demo;
22

3+
import fr.maif.eventsourcing.Lazy;
34
import fr.maif.eventsourcing.vanilla.SimpleCommand;
4-
import io.vavr.Lazy;
55

66
import java.math.BigDecimal;
77

88
public sealed interface BankCommand extends SimpleCommand {
99

1010
record Withdraw(String account, BigDecimal amount) implements BankCommand {
1111
@Override
12-
public Lazy<String> entityId() {
12+
public Lazy<String> getEntityId() {
1313
return Lazy.of(() -> account);
1414
}
1515
}
1616

1717
record OpenAccount(Lazy<String> id, BigDecimal initialBalance) implements BankCommand {
1818

1919
@Override
20-
public Lazy<String> entityId() {
20+
public Lazy<String> getEntityId() {
2121
return id;
2222
}
2323

@@ -29,14 +29,14 @@ public Boolean hasId() {
2929

3030
record Deposit(String account, BigDecimal amount) implements BankCommand {
3131
@Override
32-
public Lazy<String> entityId() {
32+
public Lazy<String> getEntityId() {
3333
return Lazy.of(() -> account);
3434
}
3535
}
3636

3737
record CloseAccount(String id) implements BankCommand {
3838
@Override
39-
public Lazy<String> entityId() {
39+
public Lazy<String> getEntityId() {
4040
return Lazy.of(() -> id);
4141
}
4242
}

demo/demo-in-memory-vanilla/src/main/java/com/example/demo/BankCommandHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
import fr.maif.eventsourcing.Result;
99
import fr.maif.eventsourcing.Unit;
1010
import fr.maif.eventsourcing.vanilla.blocking.CommandHandler;
11-
import fr.maif.reactor.eventsourcing.InMemoryEventStore.Transaction;
11+
import fr.maif.reactor.eventsourcing.vanilla.InMemoryEventStore.Transaction;
1212

1313

1414
import java.math.BigDecimal;

demo/demo-in-memory-vanilla/src/main/java/com/example/demo/BankEventHandler.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
package com.example.demo;
22

3-
import fr.maif.eventsourcing.EventHandler;
4-
import io.vavr.control.Option;
3+
import fr.maif.eventsourcing.vanilla.EventHandler;
54

65
import java.math.BigDecimal;
6+
import java.util.Optional;
77

88
import static com.example.demo.BankEvent.AccountClosed;
99
import static com.example.demo.BankEvent.AccountOpened;
@@ -12,8 +12,8 @@
1212

1313
public class BankEventHandler implements EventHandler<Account, BankEvent> {
1414
@Override
15-
public Option<Account> applyEvent(
16-
Option<Account> previousState,
15+
public Optional<Account> applyEvent(
16+
Optional<Account> previousState,
1717
BankEvent event) {
1818
return switch (event) {
1919
case AccountOpened accountOpened -> BankEventHandler.handleAccountOpened(accountOpened);
@@ -23,29 +23,29 @@ public Option<Account> applyEvent(
2323
};
2424
}
2525

26-
private static Option<Account> handleAccountClosed(BankEvent.AccountClosed close) {
27-
return Option.none();
26+
private static Optional<Account> handleAccountClosed(BankEvent.AccountClosed close) {
27+
return Optional.empty();
2828
}
2929

30-
private static Option<Account> handleMoneyWithdrawn(
31-
Option<Account> previousState,
30+
private static Optional<Account> handleMoneyWithdrawn(
31+
Optional<Account> previousState,
3232
BankEvent.MoneyWithdrawn withdraw) {
3333
return previousState.map(account -> {
3434
account.balance = account.balance.subtract(withdraw.amount());
3535
return account;
3636
});
3737
}
3838

39-
private static Option<Account> handleAccountOpened(BankEvent.AccountOpened event) {
39+
private static Optional<Account> handleAccountOpened(BankEvent.AccountOpened event) {
4040
Account account = new Account();
4141
account.id = event.accountId();
4242
account.balance = BigDecimal.ZERO;
4343

44-
return Option.some(account);
44+
return Optional.of(account);
4545
}
4646

47-
private static Option<Account> handleMoneyDeposited(
48-
Option<Account> previousState,
47+
private static Optional<Account> handleMoneyDeposited(
48+
Optional<Account> previousState,
4949
BankEvent.MoneyDeposited event) {
5050
return previousState.map(state -> {
5151
state.balance = state.balance.add(event.amount());

demo/demo-in-memory/src/main/java/com/example/demo/Bank.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,9 @@
55
import fr.maif.eventsourcing.*;
66
import fr.maif.reactor.eventsourcing.DefaultAggregateStore;
77
import fr.maif.reactor.eventsourcing.InMemoryEventStore;
8-
import fr.maif.eventsourcing.vanilla.EventProcessorVanilla;
8+
import fr.maif.eventsourcing.EventProcessorImpl;
99
import fr.maif.reactor.eventsourcing.InMemoryEventStore.Transaction;
1010
import io.vavr.Lazy;
11-
import io.vavr.Tuple;
1211
import io.vavr.Tuple0;
1312
import io.vavr.collection.List;
1413
import io.vavr.control.Either;

demo/demo-postgres-kafka/src/main/java/com/example/demo/Bank.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,7 @@ private PostgresEventStore<BankEvent, Unit, Unit> eventStore(
140140
public CompletionStage<Result<String, ProcessingSuccess<Account, BankEvent, Unit, Unit, List<String>>>> createAccount(
141141
BigDecimal amount) {
142142
Lazy<String> lazyId = Lazy.of(() -> UUIDgenerator.generate().toString());
143-
return eventProcessor.processCommand(new BankCommand.OpenAccount(lazyId.toVavr(), amount));
143+
return eventProcessor.processCommand(new BankCommand.OpenAccount(lazyId, amount));
144144
}
145145

146146
public CompletionStage<Result<String, ProcessingSuccess<Account, BankEvent, Unit, Unit, List<String>>>> withdraw(

demo/demo-postgres-kafka/src/main/java/com/example/demo/BankCommand.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,22 @@
11
package com.example.demo;
22

3+
import fr.maif.eventsourcing.Lazy;
34
import fr.maif.eventsourcing.vanilla.SimpleCommand;
4-
import io.vavr.Lazy;
55

66
import java.math.BigDecimal;
77

88
public sealed interface BankCommand extends SimpleCommand {
99

1010
record Withdraw(String account, BigDecimal amount) implements BankCommand {
1111
@Override
12-
public Lazy<String> entityId() {
12+
public Lazy<String> getEntityId() {
1313
return Lazy.of(() -> account);
1414
}
1515
}
1616

1717
record OpenAccount(Lazy<String> id, BigDecimal initialBalance) implements BankCommand {
1818
@Override
19-
public Lazy<String> entityId() {
19+
public Lazy<String> getEntityId() {
2020
return id;
2121
}
2222

@@ -28,14 +28,14 @@ public Boolean hasId() {
2828

2929
record Deposit(String account, BigDecimal amount) implements BankCommand {
3030
@Override
31-
public Lazy<String> entityId() {
31+
public Lazy<String> getEntityId() {
3232
return Lazy.of(() -> account);
3333
}
3434
}
3535

3636
record CloseAccount(String id) implements BankCommand {
3737
@Override
38-
public Lazy<String> entityId() {
38+
public Lazy<String> getEntityId() {
3939
return Lazy.of(() -> id);
4040
}
4141
}

0 commit comments

Comments
 (0)