package io.pivotal.cfapp.domain; import java.util.ArrayList; import java.util.List; import com.fasterxml.jackson.annotation.JsonCreator; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; import com.fasterxml.jackson.annotation.JsonPropertyOrder; import org.apache.commons.lang3.StringUtils; import io.jsonwebtoken.lang.Collections; import lombok.Builder; import lombok.Getter; import lombok.Builder.Default; @Builder @JsonInclude(JsonInclude.Include.NON_NULL) @JsonPropertyOrder({ "from", "to", "subject", "body" }) @Getter public class EmailNotificationTemplate { @JsonProperty("from") private String from; @Default @JsonProperty("to") private List<String> to = new ArrayList<>(); @JsonProperty("subject") private String subject; @JsonProperty("body") private String body; @JsonCreator public EmailNotificationTemplate( @JsonProperty("from") String from, @JsonProperty("to") List<String> to, @JsonProperty("subject") String subject, @JsonProperty("body") String body ) { this.from = from; this.to = to; this.subject = subject; this.body = body; } @JsonIgnore public boolean isValid() { return EmailValidator.isValid(from) && areRecipientsValid(to) && StringUtils.isNotBlank(subject) && StringUtils.isNotBlank(body); } private static boolean areRecipientsValid(List<String> recipients) { boolean result = true; if (!Collections.isEmpty(recipients)) { for (String recipient: recipients) { if (!EmailValidator.isValid(recipient)) { result = false; break; } } } return result; } }