Author: lukaszlenart Date: Mon Mar 18 10:30:24 2013 New Revision: 1457703 URL: http://svn.apache.org/r1457703 Log: WW-4006 Improves ExpressionValidator annotation to match ExpressionValidator 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/ExpressionValidator.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.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=1457703&r1=1457702&r2=1457703&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:30:24 2013 @@ -392,8 +392,8 @@ public class AnnotationValidationConfigu .shortCircuit(v.shortCircuit()) .defaultMessage(v.message()) .messageKey(v.key()) + .messageParams(v.messageParams()) .build(); - } private ValidatorConfig processCustomValidatorAnnotation(CustomValidator v, String fieldName, String methodName) { Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/ExpressionValidator.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/ExpressionValidator.java?rev=1457703&r1=1457702&r2=1457703&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/ExpressionValidator.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/ExpressionValidator.java Mon Mar 18 10:30:24 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'>shortCircuit</td> * <td class='confluenceTd'>no</td> * <td class='confluenceTd'>false</td> @@ -102,6 +108,11 @@ public @interface ExpressionValidator { String key() default ""; /** + * Additional params to be used to customize message - will be evaluated against the Value Stack + */ + String[] messageParams() default {}; + + /** * If this is activated, the validator will be used as short-circuit. * * Adds the short-circuit="true" attribute value if <tt>true</tt>. Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java?rev=1457703&r1=1457702&r2=1457703&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ExpressionValidator.java Mon Mar 18 10:30:24 2013 @@ -17,7 +17,6 @@ package com.opensymphony.xwork2.validato import com.opensymphony.xwork2.validator.ValidationException; - /** * <!-- START SNIPPET: javadoc --> * A Non-Field Level validator that validates based on regular expression supplied. @@ -44,12 +43,10 @@ import com.opensymphony.xwork2.validator * * @author Jason Carreira */ -// START SNIPPET: global-level-validator public class ExpressionValidator extends ValidatorSupport { private String expression; - public void setExpression(String expression) { this.expression = expression; } @@ -73,14 +70,14 @@ public class ExpressionValidator extends if ((obj != null) && (obj instanceof Boolean)) { answer = (Boolean) obj; } else { - log.warn("Got result of " + obj + " when trying to get Boolean."); + log.warn("Got result of [#0] when trying to get Boolean.", obj); } - if (!answer.booleanValue()) { - if (log.isDebugEnabled()) log.debug("Validation failed on expression " + expression + " with validated object "+ object); + if (!answer) { + if (log.isDebugEnabled()) { + log.debug("Validation failed on expression [#0] with validated object [#1]", expression, object); + } addActionError(object); } } } -// END SNIPPET: global-level-validator - 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=1457703&r1=1457702&r2=1457703&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:30:24 2013 @@ -7,6 +7,7 @@ import com.opensymphony.xwork2.validator 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.ExpressionValidator; import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator; import com.opensymphony.xwork2.validator.annotations.ValidationParameter; @@ -36,6 +37,8 @@ public class AnnotationValidationAction messageParams = {"one", "two", "three"}) @EmailValidator(message = "Foo isn't a valid e-mail!", fieldName = "foo", key = "email.key", messageParams = {"one", "two", "three"}, shortCircuit = true) + @ExpressionValidator(expression = "true", message = "Is not true!", key = "expression.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=1457703&r1=1457702&r2=1457703&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:30:24 2013 @@ -19,6 +19,7 @@ import com.opensymphony.xwork2.validator 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.ExpressionValidator; import com.opensymphony.xwork2.validator.validators.RegexFieldValidator; import java.text.ParseException; @@ -41,7 +42,7 @@ public class AnnotationValidationConfigu List<Validator> validators = manager.getValidators(AnnotationValidationAction.class, null); // then - assertEquals(validators.size(), 7); + assertEquals(validators.size(), 8); for (Validator validator : validators) { validate(validator); } @@ -58,7 +59,7 @@ public class AnnotationValidationConfigu ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack(); valueStack.push(new AnnotationValidationExpAction()); - assertEquals(validators.size(), 7); + assertEquals(validators.size(), 8); for (Validator validator : validators) { validator.setValueStack(valueStack); validate(validator); @@ -80,9 +81,19 @@ public class AnnotationValidationConfigu validateDoubleRangeFieldValidator((DoubleRangeFieldValidator) validator); } else if (validator.getValidatorType().equals("email")) { validateEmailValidator((EmailValidator) validator); + } else if (validator.getValidatorType().equals("expression")) { + validateExpressionValidator((ExpressionValidator) validator); } } + private void validateExpressionValidator(ExpressionValidator validator) { + assertEquals("expression.key", validator.getMessageKey()); + assertEquals("Is not true!", validator.getDefaultMessage()); + assertEquals("true", validator.getExpression()); + assertEquals(true, validator.isShortCircuit()); + assertTrue(Arrays.equals(new String[]{"one", "two", "three"}, validator.getMessageParameters())); + } + private void validateEmailValidator(EmailValidator validator) { assertEquals("foo", validator.getFieldName()); assertEquals(EmailValidator.EMAIL_ADDRESS_PATTERN, validator.getRegex()); 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=1457703&r1=1457702&r2=1457703&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:30:24 2013 @@ -7,6 +7,7 @@ import com.opensymphony.xwork2.validator 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.ExpressionValidator; import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator; import com.opensymphony.xwork2.validator.annotations.ValidationParameter; @@ -41,6 +42,8 @@ public class AnnotationValidationExpActi messageParams = {"one", "two", "three"}) @EmailValidator(message = "Foo isn't a valid e-mail!", fieldName = "foo", key = "email.key", messageParams = {"one", "two", "three"}, shortCircuit = true) + @ExpressionValidator(expression = "true", message = "Is not true!", key = "expression.key", + messageParams = {"one", "two", "three"}, shortCircuit = true) public String execute() { return SUCCESS; }