Author: lukaszlenart
Date: Mon Mar 18 11:01:14 2013
New Revision: 1457708

URL: http://svn.apache.org/r1457708
Log:
WW-4008 Improves IntRangeFieldValidator annotation to match 
IntRangeFieldValidator class

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/IntRangeFieldValidator.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

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=1457708&r1=1457707&r2=1457708&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
 Mon Mar 18 11:01:14 2013
@@ -649,6 +649,12 @@ public class AnnotationValidationConfigu
         if (v.max() != null && v.max().length() > 0) {
             params.put("max", v.max());
         }
+        if (StringUtils.isNotEmpty(v.maxExpression())) {
+            params.put("maxExpression", v.maxExpression());
+        }
+        if (StringUtils.isNotEmpty(v.minExpression())) {
+            params.put("minExpression", v.minExpression());
+        }
 
         validatorFactory.lookupRegisteredValidatorType(validatorType);
         return new ValidatorConfig.Builder(validatorType)
@@ -657,6 +663,7 @@ public class AnnotationValidationConfigu
                 .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/IntRangeFieldValidator.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/IntRangeFieldValidator.java?rev=1457708&r1=1457707&r2=1457708&view=diff
==============================================================================
--- 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/IntRangeFieldValidator.java
 (original)
+++ 
struts/struts2/trunk/xwork-core/src/main/java/com/opensymphony/xwork2/validator/annotations/IntRangeFieldValidator.java
 Mon Mar 18 11:01:14 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'>&nbsp;</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'>&nbsp;</td>
@@ -104,7 +110,7 @@ import java.lang.annotation.Target;
  * <!-- START SNIPPET: example -->
  * &#64;IntRangeFieldValidator(message = "Default message", key = "i18n.key", 
shortCircuit = true, min = "0", max = "42")
  *
- * &#64;IntRangeFieldValidator(message = "Default message", key = "i18n.key", 
shortCircuit = true, min = "${minValue}", max = "${maxValue}" parse="true")
+ * &#64;IntRangeFieldValidator(message = "Default message", key = "i18n.key", 
shortCircuit = true, minExpression = "${minValue}", maxExpression = 
"${maxValue}")
  * <!-- END SNIPPET: example -->
  * </pre>
  *
@@ -122,11 +128,21 @@ public @interface IntRangeFieldValidator
     String min() default "";
 
     /**
-     *  Integer property. The maximum number can be.
+     * The minimum number can be defined as an expression
+     */
+    String minExpression() default "";
+
+    /**
+     * Integer property. The maximum number can be.
      */
     String max() default "";
 
     /**
+     * The maximum number can be defined as an expression
+     */
+    String maxExpression() default "";
+
+    /**
      * The default error message for this validator.
      * NOTE: It is required to set a message, if you are not using the message 
key for 18n lookup!
      */
@@ -138,6 +154,11 @@ public @interface IntRangeFieldValidator
     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 "";

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=1457708&r1=1457707&r2=1457708&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
 Mon Mar 18 11:01:14 2013
@@ -9,6 +9,7 @@ import com.opensymphony.xwork2.validator
 import com.opensymphony.xwork2.validator.annotations.EmailValidator;
 import com.opensymphony.xwork2.validator.annotations.ExpressionValidator;
 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.ValidationParameter;
 
@@ -42,6 +43,8 @@ public class AnnotationValidationAction 
             messageParams = {"one", "two", "three"}, shortCircuit = true)
     @FieldExpressionValidator(expression = "true", fieldName = "foo", key = 
"fieldexpression.key", message = "It is not true!",
             messageParams = {"one", "two", "three"}, shortCircuit = true)
+    @IntRangeFieldValidator(fieldName = "foo", key = "int.key", message = "Foo 
is out of range!", max = "10", min = "1",
+            messageParams = {"one", "two", "three"}, shortCircuit = true)
     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=1457708&r1=1457707&r2=1457708&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
 Mon Mar 18 11:01:14 2013
@@ -21,6 +21,7 @@ import com.opensymphony.xwork2.validator
 import com.opensymphony.xwork2.validator.validators.EmailValidator;
 import com.opensymphony.xwork2.validator.validators.ExpressionValidator;
 import com.opensymphony.xwork2.validator.validators.FieldExpressionValidator;
+import com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator;
 import com.opensymphony.xwork2.validator.validators.RegexFieldValidator;
 
 import java.text.ParseException;
@@ -43,7 +44,7 @@ public class AnnotationValidationConfigu
         List<Validator> validators = 
manager.getValidators(AnnotationValidationAction.class, null);
 
         // then
-        assertEquals(validators.size(), 9);
+        assertEquals(validators.size(), 10);
         for (Validator validator : validators) {
             validate(validator);
         }
@@ -60,7 +61,7 @@ public class AnnotationValidationConfigu
         ValueStack valueStack = 
container.getInstance(ValueStackFactory.class).createValueStack();
         valueStack.push(new AnnotationValidationExpAction());
 
-        assertEquals(validators.size(), 9);
+        assertEquals(validators.size(), 10);
         for (Validator validator : validators) {
             validator.setValueStack(valueStack);
             validate(validator);
@@ -86,9 +87,21 @@ public class AnnotationValidationConfigu
             validateExpressionValidator((ExpressionValidator) validator);
         } else if (validator.getValidatorType().equals("fieldexpression")) {
             validateFieldExpressionValidator((FieldExpressionValidator) 
validator);
+        } else if (validator.getValidatorType().equals("int")) {
+            validateIntRangeFieldValidator((IntRangeFieldValidator) validator);
         }
     }
 
+    private void validateIntRangeFieldValidator(IntRangeFieldValidator 
validator) {
+        assertEquals("foo", validator.getFieldName());
+        assertEquals("int.key", validator.getMessageKey());
+        assertEquals("Foo is out of range!", validator.getDefaultMessage());
+        assertTrue(Arrays.equals(new String[]{"one", "two", "three"}, 
validator.getMessageParameters()));
+        assertEquals(true, validator.isShortCircuit());
+        assertEquals(Integer.valueOf(10), validator.getMax());
+        assertEquals(Integer.valueOf(1), validator.getMin());
+    }
+
     private void validateFieldExpressionValidator(FieldExpressionValidator 
validator) {
         assertEquals("foo", validator.getFieldName());
         assertEquals("It is not true!", validator.getDefaultMessage());

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=1457708&r1=1457707&r2=1457708&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
 Mon Mar 18 11:01:14 2013
@@ -9,6 +9,7 @@ import com.opensymphony.xwork2.validator
 import com.opensymphony.xwork2.validator.annotations.EmailValidator;
 import com.opensymphony.xwork2.validator.annotations.ExpressionValidator;
 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.ValidationParameter;
 
@@ -47,6 +48,9 @@ public class AnnotationValidationExpActi
             messageParams = {"one", "two", "three"}, shortCircuit = true)
     @FieldExpressionValidator(expression = "true", fieldName = "foo", key = 
"fieldexpression.key", message = "It is not true!",
             messageParams = {"one", "two", "three"}, shortCircuit = true)
+    @IntRangeFieldValidator(fieldName = "foo", key = "int.key", message = "Foo 
is out of range!",
+            maxExpression = "${intMax}", minExpression = "${intMin}",
+            messageParams = {"one", "two", "three"}, shortCircuit = true)
     public String execute() {
         return SUCCESS;
     }
@@ -87,4 +91,12 @@ public class AnnotationValidationExpActi
         return 0.1;
     }
 
+    public int getIntMax() {
+        return 10;
+    }
+
+    public int getIntMin() {
+        return 1;
+    }
+
 }


Reply via email to