This is an automated email from the git hooks/post-receive script. New commit to branch develop in repository faxtomail. See https://gitlab.nuiton.org/codelutin/faxtomail.git commit a896574166442fbe48bccab26eea34c75a087e34 Author: jcouteau <couteau@codelutin.com> Date: Mon Nov 22 12:32:56 2021 +0100 Fix email validation with long TLD (for example *.consulting) --- .../validators/FaxToMailEmailsValidator.java | 47 +++++++++++++++++----- .../src/main/resources/validators.xml | 2 +- pom.xml | 2 +- 3 files changed, 38 insertions(+), 13 deletions(-) diff --git a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/validators/FaxToMailEmailsValidator.java b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/validators/FaxToMailEmailsValidator.java index 3608d86a..8f3c1f64 100644 --- a/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/validators/FaxToMailEmailsValidator.java +++ b/faxtomail-service/src/main/java/com/franciaflex/faxtomail/services/validators/FaxToMailEmailsValidator.java @@ -24,21 +24,46 @@ package com.franciaflex.faxtomail.services.validators; * #L% */ -import com.opensymphony.xwork2.validator.validators.EmailValidator; +import com.opensymphony.xwork2.validator.ValidationException; +import org.apache.commons.lang3.StringUtils; +import org.nuiton.util.StringUtil; +import org.nuiton.validator.xwork2.field.NuitonFieldValidatorSupport; /** - * Surcharge du validateur d'email par default de struts - * pour autoriser plusieurs emails séparés par des points-virgule + * Validateur pour autoriser plusieurs emails séparés par des points-virgule */ -public class FaxToMailEmailsValidator extends EmailValidator { +public class FaxToMailEmailsValidator extends NuitonFieldValidatorSupport { - // see XW-371 - public static final String EMAIL_ADDRESSES_PATTERN = - "\\b^['_a-z0-9-\\+]+(\\.['_a-z0-9-\\+]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,6})" + - "(\\s*;\\s*['_a-z0-9-\\+]+(\\.['_a-z0-9-\\+]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,6}))*" + - "$\\b"; - public FaxToMailEmailsValidator() { - setRegex(EMAIL_ADDRESSES_PATTERN); + @Override + public void validateWhenNotSkip(Object object) throws ValidationException { + + String fieldName = getFieldName(); + Object allValues = getFieldValue(fieldName, object); + + if (allValues == null) { + // no value defined + return; + } + if (allValues instanceof String) { + + String[] values = StringUtils.split((String)allValues,';'); + for (String value:values) { + if (StringUtils.isEmpty(value)) { + // no value defined + return; + } + if (!StringUtil.isEmail(value)) { + addFieldError(fieldName, object); + } + } + } else { + addFieldError(fieldName, object); + } + } + + @Override + public String getValidatorType() { + return "emails"; } } diff --git a/faxtomail-service/src/main/resources/validators.xml b/faxtomail-service/src/main/resources/validators.xml index 56e1156c..d9f9970b 100644 --- a/faxtomail-service/src/main/resources/validators.xml +++ b/faxtomail-service/src/main/resources/validators.xml @@ -47,6 +47,6 @@ <validator name="existingFile" class="org.nuiton.validator.xwork2.field.ExistingFileFieldValidator"/> <!-- les validateur specifiques --> - <validator name="email" class="com.opensymphony.xwork2.validator.validators.EmailValidator"/> + <validator name="email" class="org.nuiton.validator.xwork2.field.EmailFieldValidator"/> <validator name="emails" class="com.franciaflex.faxtomail.services.validators.FaxToMailEmailsValidator"/> </validators> diff --git a/pom.xml b/pom.xml index 5308e3ff..ce4ce334 100644 --- a/pom.xml +++ b/pom.xml @@ -108,7 +108,7 @@ <nuitonCsvVersion>3.0</nuitonCsvVersion> <nuitonDecoratorVersion>3.0</nuitonDecoratorVersion> <nuitonUtilsVersion>3.0-java6</nuitonUtilsVersion> - <nuitonValidatorVersion>3.2</nuitonValidatorVersion> + <nuitonValidatorVersion>3.3</nuitonValidatorVersion> <nuitonWebVersion>1.18</nuitonWebVersion> <eugeneVersion>2.13</eugeneVersion> -- To stop receiving notification emails like this one, please contact codelutin.com SCM administrator <admin+scm@codelutin.com>.