You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2013/01/02 22:43:02 UTC
svn commit: r1428075 - in /struts/struts2/trunk/xwork-core/src:
main/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidator.java
test/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidatorTest.java
Author: lukaszlenart
Date: Wed Jan 2 21:43:01 2013
New Revision: 1428075
URL: http://svn.apache.org/viewvc?rev=1428075&view=rev
Log:
WW-3890 uses new way to define min/max as expression
Modified:
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidator.java
struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidatorTest.java
Modified: struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidator.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidator.java?rev=1428075&r1=1428074&r2=1428075&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidator.java (original)
+++ struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidator.java Wed Jan 2 21:43:01 2013
@@ -19,25 +19,28 @@ package com.opensymphony.xwork2.validato
* <!-- START SNIPPET: javadoc -->
* Field Validator that checks if the long 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 -->
- *
- *
+ *
+ *
* <pre>
* <!-- START SNIPPET: examples -->
- * <validators>
+ * <validators>
* <!-- Plain Validator Syntax -->
* <validator type="long">
* <param name="fieldName">age</param>
@@ -59,9 +62,9 @@ package com.opensymphony.xwork2.validato
* <field name="age">
* <field-validator type="long">
* <param name="parse">true</param>
- * <param name="${minValue}">20</param> <!-- will be evaluated as: Long getMinValue() -->
- * <param name="${maxValue}">50</param> <!-- will be evaluated as: Long getMaxValue() -->
- * <message>Age needs to be between ${min} and ${max}</message>
+ * <param name="minExpression">${minValue}</param> <!-- will be evaluated as: Long getMinValue() -->
+ * <param name="maxExpression">${maxValue}</param> <!-- will be evaluated as: Long getMaxValue() -->
+ * <message>Age needs to be between ${minExpression} and ${maxExpression}</message>
* </field-validator>
* </field>
* </validators>
@@ -72,41 +75,61 @@ package com.opensymphony.xwork2.validato
*/
public class LongRangeFieldValidator extends AbstractRangeValidator<Long> {
- private String max = null;
- private String min = null;
+ private Long min;
+ private Long max;
+ private String minExpression;
+ private String maxExpression;
- public void setMax(String max) {
- this.max = max;
+ public LongRangeFieldValidator() {
+ super(Long.class);
}
- public String getMax() {
- return safeConditionalParse(max);
+ public void setMin(Long min) {
+ this.min = min;
}
- @Override
- public Long getMaxComparatorValue() {
- return parseLong(getMax());
+ public Long 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 Long getMinComparatorValue() {
- return parseLong(getMin());
+ if (parse) {
+ return parse(getMinExpression());
+ }
+ return getMin();
}
- private Long parseLong(String value) {
- if (value != null) {
- return Long.parseLong(value);
- } else {
- return null;
+ public void setMax(Long max) {
+ this.max = max;
+ }
+
+ public Long getMax() {
+ return max;
+ }
+
+ public String getMaxExpression() {
+ return maxExpression;
+ }
+
+ public void setMaxExpression(String maxExpression) {
+ this.maxExpression = maxExpression;
+ }
+
+ @Override
+ public Long getMaxComparatorValue() {
+ if (parse) {
+ return parse(getMaxExpression());
}
+ return getMax();
}
}
Modified: struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidatorTest.java
URL: http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidatorTest.java?rev=1428075&r1=1428074&r2=1428075&view=diff
==============================================================================
--- struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidatorTest.java (original)
+++ struts/struts2/trunk/xwork-core/src/test/java/com/opensymphony/xwork2/validator/validators/LongRangeFieldValidatorTest.java Wed Jan 2 21:43:01 2013
@@ -59,8 +59,8 @@ public class LongRangeFieldValidatorTest
private LongRangeFieldValidator prepareValidator(ValidationAction action, ValidatorContext context) {
LongRangeFieldValidator validator = new LongRangeFieldValidator();
- validator.setMax("${longMaxValue}");
- validator.setMin("${longMinValue}");
+ validator.setMaxExpression("${longMaxValue}");
+ validator.setMinExpression("${longMinValue}");
ValueStack valueStack = container.getInstance(ValueStackFactory.class).createValueStack();
valueStack.push(action);
validator.setValueStack(valueStack);