Author: lukaszlenart Date: Wed Jan 2 21:43:39 2013 New Revision: 1428076 URL: http://svn.apache.org/viewvc?rev=1428076&view=rev Log: WW-3891 uses new way to define min/max as expression
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidator.java struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidator.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidator.java?rev=1428076&r1=1428075&r2=1428076&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidator.java (original) +++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidator.java Wed Jan 2 21:43:39 2013 @@ -19,18 +19,21 @@ package com.opensymphony.xwork2.validato * <!-- START SNIPPET: javadoc --> * Field Validator that checks if the short specified is within a certain range. * <!-- END SNIPPET: javadoc --> - * - * + * + * * <!-- START SNIPPET: parameters --> * <ul> * <li>fieldName - The field name this validator is validating. Required if using Plain-Validator Syntax otherwise not required</li> * <li>min - the minimum value (if none is specified, it will not be checked) </li> * <li>max - the maximum value (if none is specified, it will not be checked) </li> + * <li>parse - if set to true, minExpression and maxExpression will be evaluated to find min/max</li> + * <li>minExpression - expression to calculate the minimum value (if none is specified, it will not be checked) </li> + * <li>maxExpression - expression to calculate the maximum value (if none is specified, it will not be checked) </li> * </ul> * - * The min / max value can be specified as an expression, but then you must also enable parsing it by specifying <strong>parse</strong> param - * as in the example below. - * WARNING! Do not use ${min} and ${max} as an expression as this will turn into infinitive loop! + * You can either use the min / max value or minExpression / maxExpression (when parse is set to true) - + * using expression can be slightly slower, see the example below. + * WARNING! Do not use ${minExpression} and ${maxExpression} as an expression as this will turn into infinitive loop! * * <!-- END SNIPPET: parameters --> * @@ -58,56 +61,74 @@ package com.opensymphony.xwork2.validato * <field name="age"> * <field-validator type="short"> * <param name="parse">true</param> - * <param name="${minValue}">20</param> <!-- will be evaluated as: Short getMinValue() --> - * <param name="${maxValue}">50</param> <!-- will be evaluated as: Short getMaxValue() --> - * <message>Age needs to be between ${min} and ${max}</message> + * <param name="minExpression">${minValue}</param> <!-- will be evaluated as: Short getMinValue() --> + * <param name="maxExpression">${maxValue}</param> <!-- will be evaluated as: Short getMaxValue() --> + * <message>Age needs to be between ${minExpression} and ${maxExpression}</message> * </field-validator> * </field> * </validators> * <!-- END SNIPPET: examples --> * </pre> - * - * - * + * * @version $Date$ */ public class ShortRangeFieldValidator extends AbstractRangeValidator<Short> { - private String max = null; - private String min = null; + private Short min; + private Short max; + private String minExpression; + private String maxExpression; - public void setMax(String max) { - this.max = max; + public ShortRangeFieldValidator() { + super(Short.class); } - public String getMax() { - return safeConditionalParse(max); + public void setMin(Short min) { + this.min = min; } - @Override - public Short getMaxComparatorValue() { - return parseShort(getMax()); + public Short getMin() { + return min; } - public void setMin(String min) { - this.min = min; + public String getMinExpression() { + return minExpression; } - public String getMin() { - return safeConditionalParse(min); + public void setMinExpression(String minExpression) { + this.minExpression = minExpression; } @Override public Short getMinComparatorValue() { - return parseShort(getMin()); + if (parse) { + return parse(getMinExpression()); + } + return getMin(); } - private Short parseShort(String value) { - if (value != null) { - return Short.parseShort(value); - } else { - return null; + public void setMax(Short max) { + this.max = max; + } + + public Short getMax() { + return max; + } + + public String getMaxExpression() { + return maxExpression; + } + + public void setMaxExpression(String maxExpression) { + this.maxExpression = maxExpression; + } + + @Override + public Short getMaxComparatorValue() { + if (parse) { + return parse(getMaxExpression()); } + return getMax(); } } Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java?rev=1428076&r1=1428075&r2=1428076&view=diff ============================================================================== --- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java (original) +++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/ShortRangeFieldValidatorTest.java Wed Jan 2 21:43:39 2013 @@ -59,8 +59,8 @@ public class ShortRangeFieldValidatorTes private ShortRangeFieldValidator prepareValidator(ValidationAction action, ValidatorContext context) { ShortRangeFieldValidator validator = new ShortRangeFieldValidator(); - validator.setMax("${shortMaxValue}"); - validator.setMin("${shortMinValue}"); + validator.setMaxExpression("${shortMaxValue}"); + validator.setMinExpression("${shortMinValue}"); ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack(); valueStack.push(action); validator.setValueStack(valueStack);