1 package de.juplo.kafka.payment.transfer.domain;
6 import lombok.EqualsAndHashCode;
8 import java.util.LinkedList;
11 import static de.juplo.kafka.payment.transfer.domain.Transfer.State.*;
16 @EqualsAndHashCode(exclude = { "state", "messages" })
27 public final boolean foreign;
29 State(boolean foreign)
31 this.foreign = foreign;
35 private final long id;
36 private final long payer;
37 private final long payee;
38 private final int amount;
42 private final List<String> messages = new LinkedList<>();
45 public Transfer setState(State state)
48 throw new IllegalArgumentException("State must not be null!");
53 if (this.state != null)
54 throw new IllegalArgumentException("Illegal state-change " + this.state + " -> CREATED");
59 if (this.state != CREATED)
60 throw new IllegalArgumentException("Illegal state-change " + this.state + " -> " + state);
64 throw new IllegalArgumentException("State-change not yet considered:" + this.state + " -> " + state);
72 public Transfer addMessage(String message)
74 messages.add(message);