package com.oreilly.springdata.jdbc.domain; import org.springframework.util.Assert; import java.util.regex.Pattern; /** */ public class EmailAddress { private static final String EMAIL_REGEX = "^[_A-Za-z0-9-]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$"; private static final Pattern PATTERN = Pattern.compile(EMAIL_REGEX); private String value; protected EmailAddress() { } public EmailAddress(String emailAddress) { Assert.isTrue(isValid(emailAddress), "Invalid email address!"); this.value = emailAddress; } public static boolean isValid(String candidate) { return candidate == null ? false : PATTERN.matcher(candidate).matches(); } @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; EmailAddress that = (EmailAddress) o; if (value != null ? !value.equals(that.value) : that.value != null) return false; return true; } @Override public int hashCode() { return value != null ? value.hashCode() : 0; } @Override public String toString() { return value; } }