mirror of
https://github.com/apache/struts.git
synced 2026-08-07 15:46:57 +00:00
WW-4005 Improves EmailValidator annotation to match EmailValidator class
git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1457694 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
+1
@@ -779,6 +779,7 @@ public class AnnotationValidationConfigurationBuilder {
|
||||
.shortCircuit(v.shortCircuit())
|
||||
.defaultMessage(v.message())
|
||||
.messageKey(v.key())
|
||||
.messageParams(v.messageParams())
|
||||
.build();
|
||||
}
|
||||
|
||||
|
||||
+11
@@ -55,6 +55,12 @@ import java.lang.annotation.Target;
|
||||
* <td class='confluenceTd'>i18n key from language specific properties file.</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td class='confluenceTd'>messageParams</td>
|
||||
* <td class='confluenceTd'>no</td>
|
||||
* <td class='confluenceTd'> </td>
|
||||
* <td class='confluenceTd'>Additional params to be used to customize message - will be evaluated against the Value Stack</td>
|
||||
* </tr>
|
||||
* <tr>
|
||||
* <td class='confluenceTd'>fieldName</td>
|
||||
* <td class='confluenceTd'>no</td>
|
||||
* <td class='confluenceTd'> </td>
|
||||
@@ -101,6 +107,11 @@ public @interface EmailValidator {
|
||||
*/
|
||||
String key() default "";
|
||||
|
||||
/**
|
||||
* Additional params to be used to customize message - will be evaluated against the Value Stack
|
||||
*/
|
||||
String[] messageParams() default {};
|
||||
|
||||
/**
|
||||
* The optional fieldName for SIMPLE validator types.
|
||||
*/
|
||||
|
||||
+4
-2
@@ -59,6 +59,8 @@ package com.opensymphony.xwork2.validator.validators;
|
||||
* </field>
|
||||
*
|
||||
* <!-- Field Validator Syntax with expressions -->
|
||||
* <!-- Only available when used with xml based configuration, if you want to have the same
|
||||
* flexibility with annotations use @RegexFieldValidator instead -->
|
||||
* <field name="myEmail">
|
||||
* <field-validator type="email">
|
||||
* <param name="regexExpression">${emailPattern}</param> <!-- will be evaluated as: String getEmailPattern() -->
|
||||
@@ -77,11 +79,11 @@ package com.opensymphony.xwork2.validator.validators;
|
||||
public class EmailValidator extends RegexFieldValidator {
|
||||
|
||||
// see XW-371
|
||||
public static final String emailAddressPattern =
|
||||
public static final String EMAIL_ADDRESS_PATTERN =
|
||||
"\\b^['_a-z0-9-\\+]+(\\.['_a-z0-9-\\+]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2}|aero|arpa|asia|biz|com|coop|edu|gov|info|int|jobs|mil|mobi|museum|name|nato|net|org|pro|tel|travel|xxx)$\\b";
|
||||
|
||||
public EmailValidator() {
|
||||
setRegex(emailAddressPattern);
|
||||
setRegex(EMAIL_ADDRESS_PATTERN);
|
||||
setCaseSensitive(false);
|
||||
}
|
||||
|
||||
|
||||
+3
@@ -6,6 +6,7 @@ import com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidat
|
||||
import com.opensymphony.xwork2.validator.annotations.CustomValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.DateRangeFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.DoubleRangeFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.EmailValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.ValidationParameter;
|
||||
|
||||
@@ -33,6 +34,8 @@ public class AnnotationValidationAction extends ActionSupport {
|
||||
@DoubleRangeFieldValidator(minExclusive = "1.2", maxExclusive = "1.4", minInclusive = "0", maxInclusive = "0.1",
|
||||
fieldName = "foo", key = "double.key", message = "Foo is out of range!", shortCircuit = true,
|
||||
messageParams = {"one", "two", "three"})
|
||||
@EmailValidator(message = "Foo isn't a valid e-mail!", fieldName = "foo", key = "email.key",
|
||||
messageParams = {"one", "two", "three"}, shortCircuit = true)
|
||||
public String execute() {
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
+16
-2
@@ -18,6 +18,7 @@ import com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValid
|
||||
import com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.validators.EmailValidator;
|
||||
import com.opensymphony.xwork2.validator.validators.RegexFieldValidator;
|
||||
|
||||
import java.text.ParseException;
|
||||
@@ -40,7 +41,7 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase
|
||||
List<Validator> validators = manager.getValidators(AnnotationValidationAction.class, null);
|
||||
|
||||
// then
|
||||
assertEquals(validators.size(), 6);
|
||||
assertEquals(validators.size(), 7);
|
||||
for (Validator validator : validators) {
|
||||
validate(validator);
|
||||
}
|
||||
@@ -57,7 +58,7 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase
|
||||
ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack();
|
||||
valueStack.push(new AnnotationValidationExpAction());
|
||||
|
||||
assertEquals(validators.size(), 6);
|
||||
assertEquals(validators.size(), 7);
|
||||
for (Validator validator : validators) {
|
||||
validator.setValueStack(valueStack);
|
||||
validate(validator);
|
||||
@@ -77,9 +78,22 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase
|
||||
validateDateRangeFieldValidator((DateRangeFieldValidator) validator);
|
||||
} else if (validator.getValidatorType().equals("double")) {
|
||||
validateDoubleRangeFieldValidator((DoubleRangeFieldValidator) validator);
|
||||
} else if (validator.getValidatorType().equals("email")) {
|
||||
validateEmailValidator((EmailValidator) validator);
|
||||
}
|
||||
}
|
||||
|
||||
private void validateEmailValidator(EmailValidator validator) {
|
||||
assertEquals("foo", validator.getFieldName());
|
||||
assertEquals(EmailValidator.EMAIL_ADDRESS_PATTERN, validator.getRegex());
|
||||
assertEquals("Foo isn't a valid e-mail!", validator.getDefaultMessage());
|
||||
assertEquals("email.key", validator.getMessageKey());
|
||||
assertTrue(Arrays.equals(new String[]{"one", "two", "three"}, validator.getMessageParameters()));
|
||||
assertEquals(true, validator.isShortCircuit());
|
||||
assertEquals(false, validator.isCaseSensitive());
|
||||
assertEquals(true, validator.isTrimed());
|
||||
}
|
||||
|
||||
private void validateDoubleRangeFieldValidator(DoubleRangeFieldValidator validator) {
|
||||
assertEquals("foo", validator.getFieldName());
|
||||
assertEquals("double.key", validator.getMessageKey());
|
||||
|
||||
+3
@@ -6,6 +6,7 @@ import com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidat
|
||||
import com.opensymphony.xwork2.validator.annotations.CustomValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.DateRangeFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.DoubleRangeFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.EmailValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator;
|
||||
import com.opensymphony.xwork2.validator.annotations.ValidationParameter;
|
||||
|
||||
@@ -38,6 +39,8 @@ public class AnnotationValidationExpAction extends ActionSupport {
|
||||
minInclusiveExpression = "${doubleMinInclusiveExpression}", maxInclusiveExpression = "${doubleMaxInclusiveExpression}",
|
||||
fieldName = "foo", key = "double.key", message = "Foo is out of range!", shortCircuit = true,
|
||||
messageParams = {"one", "two", "three"})
|
||||
@EmailValidator(message = "Foo isn't a valid e-mail!", fieldName = "foo", key = "email.key",
|
||||
messageParams = {"one", "two", "three"}, shortCircuit = true)
|
||||
public String execute() {
|
||||
return SUCCESS;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user