From 9122aff601f761189629b89a41c55d71f9e2920d Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Mon, 18 Mar 2013 12:12:58 +0000 Subject: [PATCH] WW-4010 Improves RequiredStringValidator annotation to match RequiredStringValidator class git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1457728 13f79535-47bb-0310-9956-ffa450edef68 --- ...AnnotationValidationConfigurationBuilder.java | 1 + .../annotations/RequiredStringValidator.java | 11 +++++++++++ .../validator/AnnotationValidationAction.java | 3 +++ ...tationValidationConfigurationBuilderTest.java | 16 ++++++++++++++-- .../validator/AnnotationValidationExpAction.java | 3 +++ 5 files changed, 32 insertions(+), 2 deletions(-) diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java index 9ad9e9f32..c256505c6 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilder.java @@ -607,6 +607,7 @@ public class AnnotationValidationConfigurationBuilder { .addParam("methodName", methodName) .shortCircuit(v.shortCircuit()) .defaultMessage(v.message()) + .messageParams(v.messageParams()) .messageKey(v.key()) .build(); } diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/RequiredStringValidator.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/RequiredStringValidator.java index bfdad5d3d..7fe64ada1 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/RequiredStringValidator.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/RequiredStringValidator.java @@ -55,6 +55,12 @@ import java.lang.annotation.Target; * i18n key from language specific properties file. * * + * messageParams + * no + *   + * Additional params to be used to customize message - will be evaluated against the Value Stack + * + * * fieldName * no *   @@ -113,6 +119,11 @@ public @interface RequiredStringValidator { */ 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. */ diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java index dfc17ac1a..6bfafcbdf 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationAction.java @@ -12,6 +12,7 @@ import com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator; import com.opensymphony.xwork2.validator.annotations.IntRangeFieldValidator; import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator; import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator; +import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator; import com.opensymphony.xwork2.validator.annotations.ValidationParameter; /** @@ -48,6 +49,8 @@ public class AnnotationValidationAction extends ActionSupport { messageParams = {"one", "two", "three"}, shortCircuit = true) @RequiredFieldValidator(fieldName = "foo", key = "required.key", message = "Foo is required!", messageParams = {"one", "two", "three"}, shortCircuit = true) + @RequiredStringValidator(fieldName = "foo", key = "requiredstring.key", message = "Foo is required!", + messageParams = {"one", "two", "three"}, shortCircuit = true, trim = false) public String execute() { return SUCCESS; } diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java index 62e2dcfd7..df361f60e 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationConfigurationBuilderTest.java @@ -24,6 +24,7 @@ import com.opensymphony.xwork2.validator.validators.FieldExpressionValidator; import com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator; import com.opensymphony.xwork2.validator.validators.RegexFieldValidator; import com.opensymphony.xwork2.validator.validators.RequiredFieldValidator; +import com.opensymphony.xwork2.validator.validators.RequiredStringValidator; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -45,7 +46,7 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase List validators = manager.getValidators(AnnotationValidationAction.class, null); // then - assertEquals(validators.size(), 11); + assertEquals(validators.size(), 12); for (Validator validator : validators) { validate(validator); } @@ -62,7 +63,7 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack(); valueStack.push(new AnnotationValidationExpAction()); - assertEquals(validators.size(), 11); + assertEquals(validators.size(), 12); for (Validator validator : validators) { validator.setValueStack(valueStack); validate(validator); @@ -92,9 +93,20 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase validateIntRangeFieldValidator((IntRangeFieldValidator) validator); } else if (validator.getValidatorType().equals("required")) { validateRequiredFieldValidator((RequiredFieldValidator) validator); + } else if (validator.getValidatorType().equals("requiredstring")) { + validateRequiredStringValidator((RequiredStringValidator) validator); } } + private void validateRequiredStringValidator(RequiredStringValidator validator) { + assertEquals("foo", validator.getFieldName()); + assertEquals("requiredstring.key", validator.getMessageKey()); + assertEquals("Foo is required!", validator.getDefaultMessage()); + assertTrue(Arrays.equals(new String[]{"one", "two", "three"}, validator.getMessageParameters())); + assertEquals(true, validator.isShortCircuit()); + assertEquals(false, validator.isTrim()); + } + private void validateRequiredFieldValidator(RequiredFieldValidator validator) { assertEquals("foo", validator.getFieldName()); assertEquals("Foo is required!", validator.getDefaultMessage()); diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java index b9abf4179..a327eba03 100644 --- a/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java +++ b/xwork-core/src/test/java/com/opensymphony/xwork2/validator/AnnotationValidationExpAction.java @@ -12,6 +12,7 @@ import com.opensymphony.xwork2.validator.annotations.FieldExpressionValidator; import com.opensymphony.xwork2.validator.annotations.IntRangeFieldValidator; import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator; import com.opensymphony.xwork2.validator.annotations.RequiredFieldValidator; +import com.opensymphony.xwork2.validator.annotations.RequiredStringValidator; import com.opensymphony.xwork2.validator.annotations.ValidationParameter; import java.text.ParseException; @@ -54,6 +55,8 @@ public class AnnotationValidationExpAction extends ActionSupport { messageParams = {"one", "two", "three"}, shortCircuit = true) @RequiredFieldValidator(fieldName = "foo", key = "required.key", message = "Foo is required!", messageParams = {"one", "two", "three"}, shortCircuit = true) + @RequiredStringValidator(fieldName = "foo", key = "requiredstring.key", message = "Foo is required!", + messageParams = {"one", "two", "three"}, shortCircuit = true, trim = false) public String execute() { return SUCCESS; }