001
014
015 package com.liferay.taglib.faces.validator;
016
017 import com.liferay.portal.kernel.language.LanguageUtil;
018 import com.liferay.portal.kernel.util.Validator;
019
020 import java.util.Locale;
021
022 import javax.faces.application.FacesMessage;
023 import javax.faces.component.StateHolder;
024 import javax.faces.component.UIComponent;
025 import javax.faces.context.ExternalContext;
026 import javax.faces.context.FacesContext;
027 import javax.faces.validator.ValidatorException;
028
029 import org.apache.commons.validator.EmailValidator;
030
031
034 public class EmailAddressValidator
035 implements StateHolder, javax.faces.validator.Validator {
036
037 @Override
038 public boolean isTransient() {
039 return _transient;
040 }
041
042 @Override
043 public void restoreState(FacesContext facesContext, Object obj) {
044 }
045
046 @Override
047 public Object saveState(FacesContext facesContext) {
048 return null;
049 }
050
051 @Override
052 public void setTransient(boolean value) {
053 _transient = value;
054 }
055
056 @Override
057 public void validate(
058 FacesContext facesContext, UIComponent uiComponent, Object obj)
059 throws ValidatorException {
060
061 ExternalContext externalContext = facesContext.getExternalContext();
062
063 Locale locale = externalContext.getRequestLocale();
064
065 if (obj instanceof String) {
066 String emailAddress = (String)obj;
067
068 if (Validator.isNotNull(emailAddress)) {
069 if (!EmailValidator.getInstance().isValid(emailAddress)) {
070 String summary = LanguageUtil.get(
071 locale, "please-enter-a-valid-email-address");
072
073 FacesMessage facesMessage = new FacesMessage(
074 FacesMessage.SEVERITY_ERROR, summary, null);
075
076 throw new ValidatorException(facesMessage);
077 }
078 }
079 }
080 else {
081 String summary = LanguageUtil.format(
082 locale,
083 "validator-expected-type-string,-but-instead-received-type-x",
084 obj.getClass().getName());
085
086 FacesMessage facesMessage = new FacesMessage(
087 FacesMessage.SEVERITY_ERROR, summary, null);
088
089 throw new ValidatorException(facesMessage);
090 }
091 }
092
093 private boolean _transient;
094
095 }