package dslab.protocol; import dslab.routing.Address; import java.util.ArrayList; import java.util.List; public final class MessageBuilder { private List
recipients = new ArrayList<>(); private Address sender; private String subject; private String data; private String hash; private MessageBuilder() {} public static MessageBuilder aMessage() {return new MessageBuilder();} public static MessageBuilder aMessage(Message message) { return new MessageBuilder() .sender(message.getSender()) .recipients(message.getRecipients()) .subject(message.getSubject()) .data(message.getData()) .hash(message.getHash()); } public MessageBuilder recipients(List recipients) { this.recipients = recipients; return this; } public MessageBuilder recipients(Address... recipients) { return recipients(List.of(recipients)); } public MessageBuilder recipient(Address recipient) { return recipients(recipient); } public MessageBuilder sender(Address sender) { this.sender = sender; return this; } public MessageBuilder subject(String subject) { this.subject = subject; return this; } public MessageBuilder data(String data) { this.data = data; return this; } public MessageBuilder hash(String hash) { this.hash = hash; return this; } public Message build() { Message message = new Message(); message.setRecipients(recipients); message.setSender(sender); message.setSubject(subject); message.setData(data); message.setHash(hash); return message; } }