Author: lukaszlenart Date: Sat Mar 16 15:55:48 2013 New Revision: 1457267 URL: http://svn.apache.org/r1457267 Log: WW-4001 Improves ConversionErrorFieldValidator annotation to match validator class ConversionErrorFieldValidator
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/ConversionErrorFieldValidator.java struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.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 struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/RepopulateConversionErrorFieldValidatorSupportTest.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=1457267&r1=1457266&r2=1457267&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 Sat Mar 16 15:55:48 2013 @@ -799,9 +799,11 @@ public class AnnotationValidationConfigu return new ValidatorConfig.Builder(validatorType) .addParams(params) .addParam("methodName", methodName) + .addParam("repopulateField", v.repopulateField()) .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/ConversionErrorFieldValidator.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/ConversionErrorFieldValidator.java?rev=1457267&r1=1457266&r2=1457267&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/ConversionErrorFieldValidator.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/ConversionErrorFieldValidator.java Sat Mar 16 15:55:48 2013 @@ -56,6 +56,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> @@ -103,6 +109,11 @@ public @interface ConversionErrorFieldVa 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 ""; @@ -116,6 +127,11 @@ public @interface ConversionErrorFieldVa boolean shortCircuit() default false; /** + * Defines to repopulate field or not after validation, default false + */ + boolean repopulateField() default false; + + /** * The validation type for this field/method. */ ValidatorType type() default ValidatorType.FIELD; Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java?rev=1457267&r1=1457266&r2=1457267&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/RepopulateConversionErrorFieldValidatorSupport.java Sat Mar 16 15:55:48 2013 @@ -136,21 +136,19 @@ public abstract class RepopulateConversi private static final Logger LOG = LoggerFactory.getLogger(RepopulateConversionErrorFieldValidatorSupport.class); - private String repopulateFieldAsString = "false"; - private boolean repopulateFieldAsBoolean = false; + private boolean repopulateField = false; - public String getRepopulateField() { - return repopulateFieldAsString; + public boolean isRepopulateField() { + return repopulateField; } - public void setRepopulateField(String repopulateField) { - this.repopulateFieldAsString = repopulateField == null ? repopulateField : repopulateField.trim(); - this.repopulateFieldAsBoolean = "true".equalsIgnoreCase(this.repopulateFieldAsString) ? (true) : (false); + public void setRepopulateField(boolean repopulateField) { + this.repopulateField = repopulateField; } public void validate(Object object) throws ValidationException { doValidate(object); - if (repopulateFieldAsBoolean) { + if (repopulateField) { repopulateField(object); } } 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=1457267&r1=1457266&r2=1457267&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 Sat Mar 16 15:55:48 2013 @@ -2,6 +2,7 @@ package com.opensymphony.xwork2.validato import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.validator.annotations.ConditionalVisitorFieldValidator; +import com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidator; import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator; /** @@ -15,6 +16,8 @@ public class AnnotationValidationAction @ConditionalVisitorFieldValidator(expression = "foo+bar", context = "some", appendPrefix = false, fieldName = "bar", key = "conditional.key", message = "Foo doesn't match!", shortCircuit = true, messageParams = {"one", "two", "three"}) + @ConversionErrorFieldValidator(fieldName = "bar", key = "conversion.key", message = "Foo conversion error!", + shortCircuit = true, repopulateField = true, messageParams = {"one", "three"}) 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=1457267&r1=1457266&r2=1457267&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 Sat Mar 16 15:55:48 2013 @@ -15,6 +15,7 @@ import com.opensymphony.xwork2.util.Valu import com.opensymphony.xwork2.util.ValueStackFactory; import com.opensymphony.xwork2.util.location.LocatableProperties; import com.opensymphony.xwork2.validator.validators.ConditionalVisitorFieldValidator; +import com.opensymphony.xwork2.validator.validators.ConversionErrorFieldValidator; import com.opensymphony.xwork2.validator.validators.RegexFieldValidator; import java.util.Arrays; @@ -35,7 +36,7 @@ public class AnnotationValidationConfigu List<Validator> validators = manager.getValidators(AnnotationValidationAction.class, null); // then - assertEquals(validators.size(), 2); + assertEquals(validators.size(), 3); for (Validator validator : validators) { validate(validator); } @@ -52,7 +53,7 @@ public class AnnotationValidationConfigu ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack(); valueStack.push(new AnnotationValidationExpAction()); - assertEquals(validators.size(), 2); + assertEquals(validators.size(), 3); for (Validator validator : validators) { validator.setValueStack(valueStack); validate(validator); @@ -64,14 +65,27 @@ public class AnnotationValidationConfigu validateRegexValidator((RegexFieldValidator) validator); } else if (validator.getValidatorType().equals("conditionalvisitor")) { validateConditionalFieldVisitorValidator((ConditionalVisitorFieldValidator) validator); + } else if (validator.getValidatorType().equals("conversion")) { + validateConversionFieldErrorVisitorValidator((ConversionErrorFieldValidator) validator); } } + private void validateConversionFieldErrorVisitorValidator(ConversionErrorFieldValidator validator) { + assertEquals("bar", validator.getFieldName()); + assertEquals("conversion.key", validator.getMessageKey()); + assertEquals("Foo conversion error!", validator.getDefaultMessage()); + assertEquals(true, validator.isRepopulateField()); + assertEquals(true, validator.isShortCircuit()); + assertTrue(Arrays.equals(new String[]{"one", "three"}, validator.getMessageParameters())); + } + private void validateConditionalFieldVisitorValidator(ConditionalVisitorFieldValidator validator) { assertEquals("foo+bar", validator.getExpression()); assertEquals("some", validator.getContext()); assertEquals("Foo doesn't match!", validator.getDefaultMessage()); assertEquals("bar", validator.getFieldName()); + assertEquals(false, validator.isAppendPrefix()); + assertEquals(true, validator.isShortCircuit()); assertEquals("conditional.key", validator.getMessageKey()); assertTrue(Arrays.equals(new String[]{"one", "two", "three"}, validator.getMessageParameters())); } 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=1457267&r1=1457266&r2=1457267&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 Sat Mar 16 15:55:48 2013 @@ -2,6 +2,7 @@ package com.opensymphony.xwork2.validato import com.opensymphony.xwork2.ActionSupport; import com.opensymphony.xwork2.validator.annotations.ConditionalVisitorFieldValidator; +import com.opensymphony.xwork2.validator.annotations.ConversionErrorFieldValidator; import com.opensymphony.xwork2.validator.annotations.RegexFieldValidator; /** @@ -15,6 +16,8 @@ public class AnnotationValidationExpActi @ConditionalVisitorFieldValidator(expression = "foo+bar", context = "some", appendPrefix = false, fieldName = "bar", key = "conditional.key", message = "Foo doesn't match!", shortCircuit = true, messageParams = {"one", "two", "three"}) + @ConversionErrorFieldValidator(fieldName = "bar", key = "conversion.key", message = "Foo conversion error!", + shortCircuit = true, repopulateField = true, messageParams = {"one", "three"}) public String execute() { return SUCCESS; } Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/RepopulateConversionErrorFieldValidatorSupportTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/RepopulateConversionErrorFieldValidatorSupportTest.java?rev=1457267&r1=1457266&r2=1457267&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/RepopulateConversionErrorFieldValidatorSupportTest.java (original) +++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/RepopulateConversionErrorFieldValidatorSupportTest.java Sat Mar 16 15:55:48 2013 @@ -38,7 +38,7 @@ public class RepopulateConversionErrorFi ActionSupport action; public void testUseFullFieldName() throws Exception { - validator2.setRepopulateField("true"); + validator2.setRepopulateField(true); validator2.validate(action); ActionContext.getContext().getActionInvocation().invoke(); @@ -51,7 +51,7 @@ public class RepopulateConversionErrorFi public void testGetterSetterGetsCalledApropriately1() throws Exception { - validator1.setRepopulateField("true"); + validator1.setRepopulateField(true); validator1.validate(action); @@ -65,7 +65,7 @@ public class RepopulateConversionErrorFi public void testGetterSetterGetsCalledApropriately2() throws Exception { - validator1.setRepopulateField("false"); + validator1.setRepopulateField(false); validator1.validate(action);