X-Git-Url: https://juplo.de/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fde%2Fjuplo%2Fkafka%2Fpayment%2Ftransfer%2Fdomain%2FTransfer.java;h=86e5c03b035ff6b573ec37f250fc2bacfa9335e9;hb=ccb171c9ec1ebcf71e2a906e138e741cbc4691e2;hp=cc207d9e110c0879beb3eb2ae1c362ca6219e134;hpb=fae41770a1f65b4ddfe8d51d09a8a8cdc35a5bdd;p=demos%2Fkafka%2Fdemos-kafka-payment-system-transfer diff --git a/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java b/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java index cc207d9..86e5c03 100644 --- a/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java +++ b/src/main/java/de/juplo/kafka/payment/transfer/domain/Transfer.java @@ -8,6 +8,8 @@ import lombok.EqualsAndHashCode; import java.util.LinkedList; import java.util.List; +import static de.juplo.kafka.payment.transfer.domain.Transfer.State.*; + @Data @Builder @@ -16,7 +18,6 @@ public class Transfer { public enum State { - RECEIVED(false), CREATED(false), INVALID(false), CHECKED(false), @@ -43,6 +44,27 @@ public class Transfer public Transfer setState(State state) { + if (state == null) + throw new IllegalArgumentException("State must not be null!"); + + switch (state) + { + case CREATED: + if (this.state != null) + throw new IllegalArgumentException("Illegal state-change " + this.state + " -> CREATED"); + break; + + case CHECKED: + case INVALID: + if (this.state != CREATED) + throw new IllegalArgumentException("Illegal state-change " + this.state + " -> " + state); + break; + + default: + throw new IllegalArgumentException("State-change not yet considered:" + this.state + " -> " + state); + + } + this.state = state; return this; }