From b68257de96da80fee631089f017518ba23fa99e5 Mon Sep 17 00:00:00 2001 From: Lukasz Lenart Date: Mon, 18 Mar 2013 13:01:47 +0000 Subject: [PATCH] WW-4014 Improves VisitorFieldValidator annotation to match VisitorFieldValidator class git-svn-id: https://svn.apache.org/repos/asf/struts/struts2/trunk@1457746 13f79535-47bb-0310-9956-ffa450edef68 --- ...AnnotationValidationConfigurationBuilder.java | 1 + .../annotations/VisitorFieldValidator.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 0192f4040..6ab06a94c 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 @@ -514,6 +514,7 @@ public class AnnotationValidationConfigurationBuilder { .shortCircuit(v.shortCircuit()) .defaultMessage(v.message()) .messageKey(v.key()) + .messageParams(v.messageParams()) .build(); } diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/VisitorFieldValidator.java b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/VisitorFieldValidator.java index 7274aed35..7d42339e5 100644 --- a/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/VisitorFieldValidator.java +++ b/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/VisitorFieldValidator.java @@ -62,6 +62,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 *   @@ -140,6 +146,11 @@ public @interface VisitorFieldValidator { */ String fieldName() 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. * 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 26997ad4b..6dbb429d9 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 @@ -17,6 +17,7 @@ import com.opensymphony.xwork2.validator.annotations.ShortRangeFieldValidator; import com.opensymphony.xwork2.validator.annotations.StringLengthFieldValidator; import com.opensymphony.xwork2.validator.annotations.UrlValidator; import com.opensymphony.xwork2.validator.annotations.ValidationParameter; +import com.opensymphony.xwork2.validator.annotations.VisitorFieldValidator; /** * Sets up all available validation annotations @@ -60,6 +61,8 @@ public class AnnotationValidationAction extends ActionSupport { maxLength = "10", minLength = "1", shortCircuit = true, trim = false, messageParams = {"one", "two", "three"}) @UrlValidator(fieldName = "foo", key = "url.key", message = "Foo isn't a valid URL!", shortCircuit = true, messageParams = {"one", "two", "three"}) + @VisitorFieldValidator(message = "Foo isn't valid!", key = "visitorfield.key", fieldName = "foo", appendPrefix = false, + shortCircuit = true, messageParams = {"one", "two", "three"}) 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 0612cd807..6645f6fca 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 @@ -28,6 +28,7 @@ import com.opensymphony.xwork2.validator.validators.RequiredStringValidator; import com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator; import com.opensymphony.xwork2.validator.validators.StringLengthFieldValidator; import com.opensymphony.xwork2.validator.validators.URLValidator; +import com.opensymphony.xwork2.validator.validators.VisitorFieldValidator; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -49,7 +50,7 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase List validators = manager.getValidators(AnnotationValidationAction.class, null); // then - assertEquals(validators.size(), 15); + assertEquals(validators.size(), 16); for (Validator validator : validators) { validate(validator); } @@ -66,7 +67,7 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack(); valueStack.push(new AnnotationValidationExpAction()); - assertEquals(validators.size(), 15); + assertEquals(validators.size(), 16); for (Validator validator : validators) { validator.setValueStack(valueStack); validate(validator); @@ -104,9 +105,20 @@ public class AnnotationValidationConfigurationBuilderTest extends XWorkTestCase validateStringLengthFieldValidator((StringLengthFieldValidator) validator); } else if (validator.getValidatorType().equals("url")) { validateUrlValidator((URLValidator) validator); + } else if (validator.getValidatorType().equals("visitor")) { + validateVisitorFieldValidator((VisitorFieldValidator) validator); } } + private void validateVisitorFieldValidator(VisitorFieldValidator validator) { + assertEquals("foo", validator.getFieldName()); + assertEquals("visitorfield.key", validator.getMessageKey()); + assertEquals("Foo isn't valid!", validator.getDefaultMessage()); + assertTrue(Arrays.equals(new String[]{"one", "two", "three"}, validator.getMessageParameters())); + assertEquals(false, validator.isAppendPrefix()); + assertEquals(true, validator.isShortCircuit()); + } + private void validateUrlValidator(URLValidator validator) { assertEquals("foo", validator.getFieldName()); assertEquals("Foo isn't a valid URL!", 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 b50160371..c7c91ff46 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 @@ -17,6 +17,7 @@ import com.opensymphony.xwork2.validator.annotations.ShortRangeFieldValidator; import com.opensymphony.xwork2.validator.annotations.StringLengthFieldValidator; import com.opensymphony.xwork2.validator.annotations.UrlValidator; import com.opensymphony.xwork2.validator.annotations.ValidationParameter; +import com.opensymphony.xwork2.validator.annotations.VisitorFieldValidator; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -68,6 +69,8 @@ public class AnnotationValidationExpAction extends ActionSupport { messageParams = {"one", "two", "three"}) @UrlValidator(fieldName = "foo", key = "url.key", message = "Foo isn't a valid URL!", shortCircuit = true, messageParams = {"one", "two", "three"}) + @VisitorFieldValidator(message = "Foo isn't valid!", key = "visitorfield.key", fieldName = "foo", appendPrefix = false, + shortCircuit = true, messageParams = {"one", "two", "three"}) public String execute() { return SUCCESS; }