Author: lukaszlenart Date: Mon Mar 18 10:11:36 2013 New Revision: 1457694 URL: http://svn.apache.org/r1457694 Log: WW-4005 Improves EmailValidator annotation to match EmailValidator class
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/EmailValidator.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/EmailValidator.java struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java?rev=1457694&r1=1457693&r2=1457694&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java Mon Mar 18 10:11:36 2013 @@ -779,6 +779,7 @@ public class AnnotationValidationConfigu .shortCircuit(v.shortCircuit()) .defaultMessage(v.message()) .messageKey(v.key()) + .messageParams(v.messageParams()) .build(); } Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/EmailValidator.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/EmailValidator.java?rev=1457694&r1=1457693&r2=1457694&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/EmailValidator.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/EmailValidator.java Mon Mar 18 10:11:36 2013 @@ -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> @@ -102,6 +108,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. */ String fieldName() default ""; Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/EmailValidator.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/EmailValidator.java?rev=1457694&r1=1457693&r2=1457694&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/EmailValidator.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/EmailValidator.java Mon Mar 18 10:11:36 2013 @@ -59,6 +59,8 @@ package com.opensymphony.xwork2.validato * </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.validato 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); } Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java?rev=1457694&r1=1457693&r2=1457694&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java (original) +++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java Mon Mar 18 10:11:36 2013 @@ -6,6 +6,7 @@ import com.opensymphony.xwork2.validator 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 @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; } Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java?rev=1457694&r1=1457693&r2=1457694&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java (original) +++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java Mon Mar 18 10:11:36 2013 @@ -18,6 +18,7 @@ import com.opensymphony.xwork2.validator 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 AnnotationValidationConfigu 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 AnnotationValidationConfigu 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 AnnotationValidationConfigu 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()); Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java?rev=1457694&r1=1457693&r2=1457694&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java (original) +++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java Mon Mar 18 10:11:36 2013 @@ -6,6 +6,7 @@ import com.opensymphony.xwork2.validator 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 AnnotationValidationExpActi 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; }