package fr.openwide.core.commons.util.validator; import org.apache.commons.validator.routines.EmailValidator; import com.google.common.base.Predicate; import fr.openwide.core.commons.util.functional.SerializablePredicate; /** * An {@link EmailValidator} relying on {@link AnyTldDomainValidator} for domain validation. */ public class AnyTldEmailAddressValidator extends EmailValidator implements SerializablePredicate<String> { private static final long serialVersionUID = 3764517887042593145L; private static final AnyTldEmailAddressValidator INSTANCE = new AnyTldEmailAddressValidator(false); private static final AnyTldEmailAddressValidator INSTANCE_WITH_LOCAL = new AnyTldEmailAddressValidator(true); public static AnyTldEmailAddressValidator getInstance() { return INSTANCE; } public static AnyTldEmailAddressValidator getInstance(boolean allowLocal) { if (allowLocal) { return INSTANCE_WITH_LOCAL; } else { return INSTANCE; } } protected AnyTldEmailAddressValidator(boolean allowLocal) { super(allowLocal); } @Override protected boolean isValidDomain(String domain) { return AnyTldDomainValidator.getInstance().isValid(domain); } /** * @deprecated Provided only to satisfy the {@link Predicate} interface; use * {@link #isValid(String)} instead. */ @Deprecated @Override public boolean apply(String input) { return isValid(input); } }