Author: lukaszlenart
Date: Tue Apr 10 19:29:09 2012
New Revision: 1311945

URL: http://svn.apache.org/viewvc?rev=1311945&view=rev
Log:
WW-3432 pushes messages variables to allow customize validation messages

Modified:
    
struts/struts2/trunk/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
    
struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/OValValidationInterceptorTest.java
    
struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/SimpleFieldI18n.java
    
struts/struts2/trunk/plugins/oval/src/test/resources/org/apache/struts2/oval/interceptor/SimpleFieldI18n.properties
    struts/struts2/trunk/plugins/oval/src/test/resources/oval-test.xml

Modified: 
struts/struts2/trunk/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java?rev=1311945&r1=1311944&r2=1311945&view=diff
==============================================================================
--- 
struts/struts2/trunk/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
 (original)
+++ 
struts/struts2/trunk/plugins/oval/src/main/java/org/apache/struts2/oval/interceptor/OValValidationInterceptor.java
 Tue Apr 10 19:29:09 2012
@@ -180,13 +180,16 @@ public class OValValidationInterceptor e
                 //translate message
                 String key = violation.getMessage();
 
+                String message = key;
+                // push context variable into stack, to allow use ${max}, 
${min} etc in error messages
+                valueStack.push(violation.getMessageVariables());
                 //push the validator into the stack
                 valueStack.push(violation.getContext());
-                String message = key;
                 try {
                     message = validatorContext.getText(key);
                 } finally {
                     valueStack.pop();
+                    valueStack.pop();
                 }
 
                 if (isActionError(violation)) {

Modified: 
struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/OValValidationInterceptorTest.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/OValValidationInterceptorTest.java?rev=1311945&r1=1311944&r2=1311945&view=diff
==============================================================================
--- 
struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/OValValidationInterceptorTest.java
 (original)
+++ 
struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/OValValidationInterceptorTest.java
 Tue Apr 10 19:29:09 2012
@@ -24,14 +24,12 @@ import com.opensymphony.xwork2.ActionPro
 import com.opensymphony.xwork2.ValidationAware;
 import com.opensymphony.xwork2.XWorkTestCase;
 import com.opensymphony.xwork2.config.providers.XmlConfigurationProvider;
+import net.sf.oval.configuration.Configurer;
 
 import java.util.Arrays;
 import java.util.List;
-import java.util.Map;
 import java.util.Locale;
-
-import net.sf.oval.configuration.Configurer;
-import org.apache.struts2.oval.interceptor.OValValidationManager;
+import java.util.Map;
 
 public class OValValidationInterceptorTest extends XWorkTestCase {
     public void testSimpleFieldsXML() throws Exception {
@@ -126,6 +124,20 @@ public class OValValidationInterceptorTe
         assertEquals(0, fieldErrors.size());
     }
 
+    public void testSimpleFieldTooLong() throws Exception {
+        ActionProxy baseActionProxy = 
actionProxyFactory.createActionProxy("oval", "simpleFieldTooLong", null, null);
+        SimpleField action = (SimpleField) baseActionProxy.getAction();
+        action.setName("12367");
+        baseActionProxy.execute();
+
+        Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+        assertNotNull(fieldErrors);
+        assertEquals(1, fieldErrors.size());
+        assertValue(fieldErrors, "name", Arrays.asList("name is not between 0 
and 3 characters long"));
+        assertValue(fieldErrors, "name", Arrays.asList("name is not between 0 
and 3 characters long"));
+    }
+
     public void testSimpleFieldMultipleValidators() throws Exception {
         ActionProxy baseActionProxy = 
actionProxyFactory.createActionProxy("oval", "simpleField", null, null);
         SimpleField action = (SimpleField) baseActionProxy.getAction();
@@ -195,6 +207,19 @@ public class OValValidationInterceptorTe
         assertValue(fieldErrors, "name", Arrays.asList("name cannot be null"));
     }
 
+    public void testSimpleFieldI18n2() throws Exception {
+        ActionProxy baseActionProxy = 
actionProxyFactory.createActionProxy("oval", "simpleFieldI18n", null, null);
+        SimpleFieldI18n action = (SimpleFieldI18n) baseActionProxy.getAction();
+        action.setName("123123");
+        baseActionProxy.execute();
+
+        Map<String, List<String>> fieldErrors = action.getFieldErrors();
+
+        assertNotNull(fieldErrors);
+        assertEquals(1, fieldErrors.size());
+        assertValue(fieldErrors, "name", Arrays.asList("name value is too 
long, allowed length is 3"));
+    }
+
     public void testSimpleFieldI18nDefaultKey() throws Exception {
         ActionProxy baseActionProxy = 
actionProxyFactory.createActionProxy("oval", "simpleFieldI18nDefaultKey", null, 
null);
         SimpleFieldI18nDefaultKey action = (SimpleFieldI18nDefaultKey) 
baseActionProxy.getAction();

Modified: 
struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/SimpleFieldI18n.java
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/SimpleFieldI18n.java?rev=1311945&r1=1311944&r2=1311945&view=diff
==============================================================================
--- 
struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/SimpleFieldI18n.java
 (original)
+++ 
struts/struts2/trunk/plugins/oval/src/test/java/org/apache/struts2/oval/interceptor/SimpleFieldI18n.java
 Tue Apr 10 19:29:09 2012
@@ -21,12 +21,12 @@
 package org.apache.struts2.oval.interceptor;
 
 import com.opensymphony.xwork2.ActionSupport;
-import net.sf.oval.constraint.NotNull;
-import net.sf.oval.constraint.NotEmpty;
 import net.sf.oval.constraint.Length;
+import net.sf.oval.constraint.NotNull;
 
 public class SimpleFieldI18n  extends ActionSupport {
     @NotNull(message = "notnull.field")
+    @Length(max = 3, message = "field.too.long")
     private String name;
 
     public String getName() {

Modified: 
struts/struts2/trunk/plugins/oval/src/test/resources/org/apache/struts2/oval/interceptor/SimpleFieldI18n.properties
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/oval/src/test/resources/org/apache/struts2/oval/interceptor/SimpleFieldI18n.properties?rev=1311945&r1=1311944&r2=1311945&view=diff
==============================================================================
--- 
struts/struts2/trunk/plugins/oval/src/test/resources/org/apache/struts2/oval/interceptor/SimpleFieldI18n.properties
 (original)
+++ 
struts/struts2/trunk/plugins/oval/src/test/resources/org/apache/struts2/oval/interceptor/SimpleFieldI18n.properties
 Tue Apr 10 19:29:09 2012
@@ -1 +1,2 @@
-notnull.field=${field.name} cannot be null
\ No newline at end of file
+notnull.field=${field.name} cannot be null
+field.too.long=${field.name} value is too long, allowed length is ${max}
\ No newline at end of file

Modified: struts/struts2/trunk/plugins/oval/src/test/resources/oval-test.xml
URL: 
http://svn.apache.org/viewvc/struts/struts2/trunk/plugins/oval/src/test/resources/oval-test.xml?rev=1311945&r1=1311944&r2=1311945&view=diff
==============================================================================
--- struts/struts2/trunk/plugins/oval/src/test/resources/oval-test.xml 
(original)
+++ struts/struts2/trunk/plugins/oval/src/test/resources/oval-test.xml Tue Apr 
10 19:29:09 2012
@@ -46,6 +46,10 @@
             <interceptor-ref name="ovalValidation"/>
             <result type="void"></result>
         </action>
+        <action name="simpleFieldTooLong" 
class="org.apache.struts2.oval.interceptor.SimpleField">
+            <interceptor-ref name="ovalValidation"/>
+            <result type="void"></result>
+        </action>
         <action name="simpleMethod" 
class="org.apache.struts2.oval.interceptor.SimpleMethod">
             <interceptor-ref name="ovalValidation"/>
             <result type="void"></result>


Reply via email to