This is an automated email from the ASF dual-hosted git repository.

lukaszlenart pushed a commit to branch fix/WW-5250-todo
in repository https://gitbox.apache.org/repos/asf/struts.git

commit 03db4f1ab06c200b0478b069214d7579a08a3ef0
Author: Lukasz Lenart <lukaszlen...@apache.org>
AuthorDate: Fri Jun 7 08:33:08 2024 +0200

    WW-5250 Addresses TODO in test and stops using Mock Objects
---
 .../xwork2/validator/ActionValidatorManager.java   |   4 +-
 .../validator/DefaultActionValidatorManager.java   |  18 +-
 .../DefaultActionValidatorManagerTest.java         | 358 ++++++++++-----------
 3 files changed, 187 insertions(+), 193 deletions(-)

diff --git 
a/core/src/main/java/com/opensymphony/xwork2/validator/ActionValidatorManager.java
 
b/core/src/main/java/com/opensymphony/xwork2/validator/ActionValidatorManager.java
index d78224b26..ea0de3a72 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/validator/ActionValidatorManager.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/validator/ActionValidatorManager.java
@@ -36,7 +36,7 @@ public interface ActionValidatorManager {
      * @param method the name of the method being invoked on the action - can 
be <tt>null</tt>.
      * @return a list of all validators for the given class and context.
      */
-    List<Validator> getValidators(Class clazz, String context, String method);
+    List<Validator> getValidators(Class<?> clazz, String context, String 
method);
 
     /**
      * Returns a list of validators for the given class and context. This is 
the primary
@@ -46,7 +46,7 @@ public interface ActionValidatorManager {
      * @param context the context of the action class - can be <tt>null</tt>.
      * @return a list of all validators for the given class and context.
      */
-    List<Validator> getValidators(Class clazz, String context);
+    List<Validator> getValidators(Class<?> clazz, String context);
 
     /**
      * Validates the given object using action and its context.
diff --git 
a/core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java
 
b/core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java
index 3af54669e..f05b80486 100644
--- 
a/core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java
+++ 
b/core/src/main/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManager.java
@@ -125,7 +125,7 @@ public class DefaultActionValidatorManager implements 
ActionValidatorManager {
      * @param context context
      * @return a validator key which is the class name plus context.
      */
-    protected String buildValidatorKey(Class clazz, String context) {
+    protected String buildValidatorKey(Class<?> clazz, String context) {
         return clazz.getName() + "/" + context;
     }
 
@@ -137,7 +137,7 @@ public class DefaultActionValidatorManager implements 
ActionValidatorManager {
     }
 
     @Override
-    public synchronized List<Validator> getValidators(Class clazz, String 
context, String method) {
+    public synchronized List<Validator> getValidators(Class<?> clazz, String 
context, String method) {
         String validatorKey = buildValidatorKey(clazz, context);
 
         if (!validatorCache.containsKey(validatorKey)) {
@@ -158,7 +158,7 @@ public class DefaultActionValidatorManager implements 
ActionValidatorManager {
     }
 
     @Override
-    public synchronized List<Validator> getValidators(Class clazz, String 
context) {
+    public synchronized List<Validator> getValidators(Class<?> clazz, String 
context) {
         return getValidators(clazz, context, null);
     }
 
@@ -277,7 +277,7 @@ public class DefaultActionValidatorManager implements 
ActionValidatorManager {
      * @param checked   the set of previously checked class-contexts, null if 
none have been checked
      * @return a list of validator configs for the given class and context.
      */
-    protected List<ValidatorConfig> buildValidatorConfigs(Class clazz, String 
context, boolean checkFile, Set<String> checked) {
+    protected List<ValidatorConfig> buildValidatorConfigs(Class<?> clazz, 
String context, boolean checkFile, Set<String> checked) {
         List<ValidatorConfig> validatorConfigs = new ArrayList<>();
 
         if (checked == null) {
@@ -287,7 +287,7 @@ public class DefaultActionValidatorManager implements 
ActionValidatorManager {
         }
 
         if (clazz.isInterface()) {
-            for (Class anInterface : clazz.getInterfaces()) {
+            for (Class<?> anInterface : clazz.getInterfaces()) {
                 validatorConfigs.addAll(buildValidatorConfigs(anInterface, 
context, checkFile, checked));
             }
         } else {
@@ -297,7 +297,7 @@ public class DefaultActionValidatorManager implements 
ActionValidatorManager {
         }
 
         // look for validators for implemented interfaces
-        for (Class anInterface1 : clazz.getInterfaces()) {
+        for (Class<?> anInterface1 : clazz.getInterfaces()) {
             if (checked.contains(anInterface1.getName())) {
                 continue;
             }
@@ -317,17 +317,17 @@ public class DefaultActionValidatorManager implements 
ActionValidatorManager {
         return validatorConfigs;
     }
 
-    protected List<ValidatorConfig> buildAliasValidatorConfigs(Class aClass, 
String context, boolean checkFile) {
+    protected List<ValidatorConfig> buildAliasValidatorConfigs(Class<?> 
aClass, String context, boolean checkFile) {
         String fileName = aClass.getName().replace('.', '/') + "-" + context + 
VALIDATION_CONFIG_SUFFIX;
         return loadFile(fileName, aClass, checkFile);
     }
 
-    protected List<ValidatorConfig> buildClassValidatorConfigs(Class aClass, 
boolean checkFile) {
+    protected List<ValidatorConfig> buildClassValidatorConfigs(Class<?> 
aClass, boolean checkFile) {
         String fileName = aClass.getName().replace('.', '/') + 
VALIDATION_CONFIG_SUFFIX;
         return loadFile(fileName, aClass, checkFile);
     }
 
-    protected List<ValidatorConfig> loadFile(String fileName, Class clazz, 
boolean checkFile) {
+    protected List<ValidatorConfig> loadFile(String fileName, Class<?> clazz, 
boolean checkFile) {
         List<ValidatorConfig> retList = Collections.emptyList();
 
         URL fileUrl = ClassLoaderUtil.getResource(fileName, clazz);
diff --git 
a/core/src/test/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManagerTest.java
 
b/core/src/test/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManagerTest.java
index c6f4b3d6f..5014a374f 100644
--- 
a/core/src/test/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManagerTest.java
+++ 
b/core/src/test/java/com/opensymphony/xwork2/validator/DefaultActionValidatorManagerTest.java
@@ -18,161 +18,167 @@
  */
 package com.opensymphony.xwork2.validator;
 
-import com.mockobjects.dynamic.C;
-import com.mockobjects.dynamic.Mock;
-import com.opensymphony.xwork2.ActionContext;
 import com.opensymphony.xwork2.FileManagerFactory;
 import com.opensymphony.xwork2.SimpleAction;
-import com.opensymphony.xwork2.StubValueStack;
 import com.opensymphony.xwork2.TestBean;
+import com.opensymphony.xwork2.ValidationOrderAction;
 import com.opensymphony.xwork2.XWorkTestCase;
-import com.opensymphony.xwork2.config.ConfigurationException;
+import com.opensymphony.xwork2.interceptor.ValidationAware;
 import com.opensymphony.xwork2.test.DataAware2;
-import com.opensymphony.xwork2.test.SimpleAction2;
 import com.opensymphony.xwork2.test.SimpleAction3;
-import com.opensymphony.xwork2.util.ValueStack;
-import com.opensymphony.xwork2.util.fs.DefaultFileManager;
-import com.opensymphony.xwork2.util.fs.DefaultFileManagerFactory;
+import com.opensymphony.xwork2.test.User;
+import com.opensymphony.xwork2.validator.validators.DateRangeFieldValidator;
+import com.opensymphony.xwork2.validator.validators.DoubleRangeFieldValidator;
+import com.opensymphony.xwork2.validator.validators.ExpressionValidator;
+import com.opensymphony.xwork2.validator.validators.IntRangeFieldValidator;
+import com.opensymphony.xwork2.validator.validators.LongRangeFieldValidator;
+import com.opensymphony.xwork2.validator.validators.RequiredFieldValidator;
+import com.opensymphony.xwork2.validator.validators.RequiredStringValidator;
+import com.opensymphony.xwork2.validator.validators.ShortRangeFieldValidator;
 import org.apache.struts2.StrutsException;
+import org.xml.sax.SAXParseException;
 
 import java.util.ArrayList;
-import java.util.HashMap;
+import java.util.Iterator;
 import java.util.List;
+import java.util.Map;
 
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
-/**
- * DefaultActionValidatorManagerTest
- *
- * @author Jason Carreira
- * @author tm_jee
- * @version $Date$ $Id$
- */
 public class DefaultActionValidatorManagerTest extends XWorkTestCase {
 
     protected final String alias = "validationAlias";
 
     DefaultActionValidatorManager actionValidatorManager;
-    Mock mockValidatorFileParser;
-    Mock mockValidatorFactory;
-    ValueStack stubValueStack;
 
     @Override
     protected void setUp() throws Exception {
-        actionValidatorManager = new DefaultActionValidatorManager();
         super.setUp();
-        mockValidatorFileParser = new Mock(ValidatorFileParser.class);
-        
actionValidatorManager.setValidatorFileParser((ValidatorFileParser)mockValidatorFileParser.proxy());
-
-        mockValidatorFactory = new Mock(ValidatorFactory.class);
-        
actionValidatorManager.setValidatorFactory((ValidatorFactory)mockValidatorFactory.proxy());
-
-        stubValueStack = new StubValueStack();
-        ActionContext.of()
-            .withValueStack(stubValueStack)
-            .bind();
-
-        DefaultFileManagerFactory factory = new DefaultFileManagerFactory();
-        factory.setContainer(container);
-        factory.setFileManager(new DefaultFileManager());
-        actionValidatorManager.setFileManagerFactory(factory);
+        actionValidatorManager = 
container.inject(DefaultActionValidatorManager.class);
     }
 
     @Override
     protected void tearDown() throws Exception {
-        actionValidatorManager = null;
         super.tearDown();
-        mockValidatorFactory = null;
-        mockValidatorFileParser = null;
+        actionValidatorManager = null;
     }
 
-
     public void testBuildValidatorKey() {
         String validatorKey = 
actionValidatorManager.buildValidatorKey(SimpleAction.class, alias);
         assertEquals(SimpleAction.class.getName() + "/" + alias, validatorKey);
     }
 
     public void testBuildsValidatorsForAlias() {
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/SimpleAction-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml")),
-                new ArrayList());
-         actionValidatorManager.getValidators(SimpleAction.class, alias);
-        mockValidatorFileParser.verify();
+        List<Validator> validators = 
actionValidatorManager.getValidators(SimpleAction.class, alias);
+
+        
assertThat(validators).hasSize(11).map(Validator::getClass).containsExactly(
+                ExpressionValidator.class,
+                RequiredFieldValidator.class,
+                IntRangeFieldValidator.class,
+                DoubleRangeFieldValidator.class,
+                DateRangeFieldValidator.class,
+                IntRangeFieldValidator.class,
+                IntRangeFieldValidator.class,
+                LongRangeFieldValidator.class,
+                ShortRangeFieldValidator.class,
+                RequiredFieldValidator.class,
+                IntRangeFieldValidator.class
+        );
+        
assertThat(validators).hasSize(11).map(Validator::getDefaultMessage).containsExactly(
+                "Foo must be greater than Bar. Foo = ${foo}, Bar = ${bar}.",
+                "You must enter a value for bar.",
+                "bar must be between ${min} and ${max}, current value is 
${bar}.",
+                "percentage must be between ${minExclusive} and 
${maxExclusive}, current value is ${percentage}.",
+                "The date must be between 12-22-2002 and 12-25-2002.",
+                "Could not find foo.range!",
+                "Could not find baz.range!",
+                "Could not find foo.range!",
+                "Could not find foo.range!",
+                "You must enter a value for baz.",
+                "baz out of range."
+        );
     }
 
     public void testBuildsValidatorsForAliasError() {
-        boolean pass = false;
-        try {
-            
mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/TestBean-validation.xml")),
-                new ArrayList());
-            
mockValidatorFileParser.expectAndThrow("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/TestBean-badtest-validation.xml")),
-                new ConfigurationException());
-            List validatorList = 
actionValidatorManager.getValidators(TestBean.class, "badtest");
-        } catch (StrutsException ex) {
-            pass = true;
-        }
-        mockValidatorFileParser.verify();
-        assertTrue("Didn't throw exception on load failure", pass);
+        assertThatThrownBy(() -> 
actionValidatorManager.getValidators(TestBean.class, "badtest"))
+                .isInstanceOf(StrutsException.class)
+                .hasCause(new SAXParseException("Attribute \"foo\" must be 
declared for element type \"field-validator\".", null));
     }
 
 
     public void testGetValidatorsForInterface() {
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/test/DataAware-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/test/DataAware-validationAlias-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/test/DataAware2-validation.xml")),
-                new ArrayList());
-        actionValidatorManager.getValidators(DataAware2.class, alias);
-        mockValidatorFileParser.verify();
+        List<Validator> validators = 
actionValidatorManager.getValidators(DataAware2.class, alias);
+
+        
assertThat(validators).hasSize(3).map(Validator::getClass).containsExactly(
+                RequiredFieldValidator.class,
+                RequiredStringValidator.class,
+                RequiredStringValidator.class
+        );
+        
assertThat(validators).hasSize(3).map(Validator::getValidatorType).containsExactly(
+                "required",
+                "requiredstring",
+                "requiredstring"
+        );
+        
assertThat(validators).hasSize(3).map(Validator::getDefaultMessage).containsExactly(
+                "You must enter a value for data.",
+                "You must enter a value for data.",
+                "You must enter a value for data."
+        );
     }
 
     public void testGetValidatorsFromInterface() {
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/SimpleAction-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/test/DataAware-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/test/DataAware-validationAlias-validation.xml")),
-                new ArrayList());
-        actionValidatorManager.getValidators(SimpleAction3.class, alias);
-        mockValidatorFileParser.verify();
-    }
-
-    public void testSameAliasWithDifferentClass() {
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/SimpleAction-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/SimpleAction-validationAlias-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/test/SimpleAction2-validation.xml")),
-                new ArrayList());
-        mockValidatorFileParser.expectAndReturn("parseActionValidatorConfigs",
-                C.args(C.IS_NOT_NULL, C.IS_NOT_NULL, 
C.eq("com/opensymphony/xwork2/test/SimpleAction2-validationAlias-validation.xml")),
-                new ArrayList());
-        actionValidatorManager.getValidators(SimpleAction.class, alias);
-        actionValidatorManager.getValidators(SimpleAction2.class, alias);
-        mockValidatorFileParser.verify();
+        List<Validator> validators = 
actionValidatorManager.getValidators(SimpleAction3.class, alias);
+
+        
assertThat(validators).hasSize(13).map(Validator::getClass).containsExactly(
+                ExpressionValidator.class,
+                RequiredFieldValidator.class,
+                IntRangeFieldValidator.class,
+                DoubleRangeFieldValidator.class,
+                DateRangeFieldValidator.class,
+                IntRangeFieldValidator.class,
+                IntRangeFieldValidator.class,
+                LongRangeFieldValidator.class,
+                ShortRangeFieldValidator.class,
+                RequiredFieldValidator.class,
+                IntRangeFieldValidator.class,
+                RequiredFieldValidator.class,
+                RequiredStringValidator.class
+        );
+        
assertThat(validators).hasSize(13).map(Validator::getValidatorType).containsExactly(
+                "expression",
+                "required",
+                "int",
+                "double",
+                "date",
+                "int",
+                "int",
+                "long",
+                "short",
+                "required",
+                "int",
+                "required",
+                "requiredstring"
+        );
+        
assertThat(validators).hasSize(13).map(Validator::getDefaultMessage).containsExactly(
+                "Foo must be greater than Bar. Foo = ${foo}, Bar = ${bar}.",
+                "You must enter a value for bar.",
+                "bar must be between ${min} and ${max}, current value is 
${bar}.",
+                "percentage must be between ${minExclusive} and 
${maxExclusive}, current value is ${percentage}.",
+                "The date must be between 12-22-2002 and 12-25-2002.",
+                "Could not find foo.range!",
+                "Could not find baz.range!",
+                "Could not find foo.range!",
+                "Could not find foo.range!",
+                "You must enter a value for baz.",
+                "baz out of range.",
+                "You must enter a value for data.",
+                "You must enter a value for data."
+        );
     }
 
     /**
      * Test to verify WW-3850.
-     *
-     * @since 2.3.5
      */
     public void testBuildsValidatorsForClassError() {
         // for this test we need to have a file manager with reloadingConfigs 
to true
@@ -188,12 +194,8 @@ public class DefaultActionValidatorManagerTest extends 
XWorkTestCase {
         }
     }
 
-    /*
-    // TODO: this all need to be converted to real unit tests
-
     public void testSkipUserMarkerActionLevelShortCircuit() {
-        // get validators
-        List validatorList = actionValidatorManager.getValidators(User.class, 
null);
+        List<Validator> validatorList = 
actionValidatorManager.getValidators(User.class, null);
         assertEquals(10, validatorList.size());
 
         try {
@@ -202,16 +204,17 @@ public class DefaultActionValidatorManagerTest extends 
XWorkTestCase {
             user.setEmail("bad_email");
             user.setEmail2("bad_email");
 
-            ValidatorContext context = new GenericValidatorContext(user);
+            ValidationAware validationAware = new SimpleAction();
+            ValidatorContext context = new 
DelegatingValidatorContext(validationAware, 
actionValidatorManager.textProviderFactory);
             actionValidatorManager.validate(user, null, context);
             assertTrue(context.hasFieldErrors());
 
             // check field errors
-            List l = (List) context.getFieldErrors().get("email");
+            List<String> l = context.getFieldErrors().get("email");
             assertNotNull(l);
             assertEquals(1, l.size());
             assertEquals("Not a valid e-mail.", l.get(0));
-            l = (List) context.getFieldErrors().get("email2");
+            l = context.getFieldErrors().get("email2");
             assertNotNull(l);
             assertEquals(2, l.size());
             assertEquals("Not a valid e-mail2.", l.get(0));
@@ -219,19 +222,17 @@ public class DefaultActionValidatorManagerTest extends 
XWorkTestCase {
 
             // check action errors
             assertTrue(context.hasActionErrors());
-            l = (List) context.getActionErrors();
+            l = new ArrayList<>(context.getActionErrors());
             assertNotNull(l);
             assertEquals(2, l.size()); // both expression test failed see 
User-validation.xml
             assertEquals("Email does not start with mark", l.get(0));
         } catch (ValidationException ex) {
-            ex.printStackTrace();
             fail("Validation error: " + ex.getMessage());
         }
     }
 
     public void testSkipAllActionLevelShortCircuit2() {
-        // get validators
-        List validatorList = actionValidatorManager.getValidators(User.class, 
null);
+        List<Validator> validatorList = 
actionValidatorManager.getValidators(User.class, null);
         assertEquals(10, validatorList.size());
 
         try {
@@ -244,34 +245,30 @@ public class DefaultActionValidatorManagerTest extends 
XWorkTestCase {
             user.setEmail("mark_bad_email_for_field_...@foo.com");
             user.setEmail2("mark_bad_email_for_field_...@foo.com");
 
-            ValidatorContext context = new GenericValidatorContext(user);
+            ValidationAware validationAware = new SimpleAction();
+            ValidatorContext context = new 
DelegatingValidatorContext(validationAware, 
actionValidatorManager.textProviderFactory);
             actionValidatorManager.validate(user, null, context);
             assertTrue(context.hasFieldErrors());
 
             // check field errors
             // we have an error in this field level, email does not ends with 
mycompany.com
-            List l = (List) context.getFieldErrors().get("email");
+            List<String> l = context.getFieldErrors().get("email");
             assertNotNull(l);
             assertEquals(1, l.size()); // because email-field-val is 
short-circuit
             assertEquals("Email not from the right company.", l.get(0));
 
-
             // check action errors
-            l = (List) context.getActionErrors();
+            l = new ArrayList<>(context.getActionErrors());
             assertFalse(context.hasActionErrors());
             assertEquals(0, l.size());
-
-
         } catch (ValidationException ex) {
-            ex.printStackTrace();
             fail("Validation error: " + ex.getMessage());
         }
     }
 
 
     public void testActionLevelShortCircuit() throws Exception {
-
-       List validatorList = actionValidatorManager.getValidators(User.class, 
null);
+        List<Validator> validatorList = 
actionValidatorManager.getValidators(User.class, null);
         assertEquals(10, validatorList.size());
 
         User user = new User();
@@ -280,18 +277,18 @@ public class DefaultActionValidatorManagerTest extends 
XWorkTestCase {
         user.setEmail("tmjee(at)yahoo.co.uk");
         user.setEmail("tm_jee(at)yahoo.co.uk");
 
-        ValidatorContext context = new GenericValidatorContext(user);
+        ValidationAware validationAware = new SimpleAction();
+        ValidatorContext context = new 
DelegatingValidatorContext(validationAware, 
actionValidatorManager.textProviderFactory);
         actionValidatorManager.validate(user, null, context);
 
-       // check field level errors
+        // check field level errors
         // shouldn't have any because action error prevents validation of 
anything else
-        List l = (List) context.getFieldErrors().get("email2");
+        List<String> l = context.getFieldErrors().get("email2");
         assertNull(l);
 
-
         // check action errors
         assertTrue(context.hasActionErrors());
-        l = (List) context.getActionErrors();
+        l = new ArrayList<>(context.getActionErrors());
         assertNotNull(l);
         // we only get one, because UserMarker-validation.xml action-level 
validator
         // already sc it   :-)
@@ -299,10 +296,8 @@ public class DefaultActionValidatorManagerTest extends 
XWorkTestCase {
         assertEquals("Email not the same as email2", l.get(0));
     }
 
-
     public void testShortCircuitNoErrors() {
-        // get validators
-        List validatorList = actionValidatorManager.getValidators(User.class, 
null);
+        List<Validator> validatorList = 
actionValidatorManager.getValidators(User.class, null);
         assertEquals(10, validatorList.size());
 
         try {
@@ -311,73 +306,72 @@ public class DefaultActionValidatorManagerTest extends 
XWorkTestCase {
             user.setEmail("m...@mycompany.com");
             user.setEmail2("m...@mycompany.com");
 
-            ValidatorContext context = new GenericValidatorContext(user);
+            ValidationAware validationAware = new SimpleAction();
+            ValidatorContext context = new 
DelegatingValidatorContext(validationAware, 
actionValidatorManager.textProviderFactory);
             actionValidatorManager.validate(user, null, context);
             assertFalse(context.hasErrors());
         } catch (ValidationException ex) {
-            ex.printStackTrace();
             fail("Validation error: " + ex.getMessage());
         }
     }
 
     public void testFieldErrorsOrder() throws Exception {
-       ValidationOrderAction action = new ValidationOrderAction();
-       actionValidatorManager.validate(action, "actionContext");
-       Map fieldErrors = action.getFieldErrors();
-       Iterator i = fieldErrors.entrySet().iterator();
+        ValidationOrderAction action = new ValidationOrderAction();
+        actionValidatorManager.validate(action, "actionContext");
+        Map<String, List<String>> fieldErrors = action.getFieldErrors();
+        Iterator<Map.Entry<String, List<String>>> i = 
fieldErrors.entrySet().iterator();
 
-       assertNotNull(fieldErrors);
-       assertEquals(fieldErrors.size(), 12);
+        assertNotNull(fieldErrors);
+        assertEquals(fieldErrors.size(), 12);
 
 
-       Map.Entry e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "username");
-       assertEquals(((List)e.getValue()).get(0), "username required");
+        Map.Entry<String, List<String>> e = i.next();
+        assertEquals(e.getKey(), "username");
+        assertEquals(e.getValue().get(0), "username required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "password");
-       assertEquals(((List)e.getValue()).get(0), "password required");
+        e = i.next();
+        assertEquals(e.getKey(), "password");
+        assertEquals((e.getValue()).get(0), "password required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "confirmPassword");
-       assertEquals(((List)e.getValue()).get(0), "confirm password required");
+        e = i.next();
+        assertEquals(e.getKey(), "confirmPassword");
+        assertEquals((e.getValue()).get(0), "confirm password required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "firstName");
-       assertEquals(((List)e.getValue()).get(0), "first name required");
+        e = i.next();
+        assertEquals(e.getKey(), "firstName");
+        assertEquals((e.getValue()).get(0), "first name required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "lastName");
-       assertEquals(((List)e.getValue()).get(0), "last name required");
+        e = i.next();
+        assertEquals(e.getKey(), "lastName");
+        assertEquals((e.getValue()).get(0), "last name required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "city");
-       assertEquals(((List)e.getValue()).get(0), "city is required");
+        e = i.next();
+        assertEquals(e.getKey(), "city");
+        assertEquals((e.getValue()).get(0), "city is required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "province");
-       assertEquals(((List)e.getValue()).get(0), "province is required");
+        e = i.next();
+        assertEquals(e.getKey(), "province");
+        assertEquals((e.getValue()).get(0), "province is required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "country");
-       assertEquals(((List)e.getValue()).get(0), "country is required");
+        e = i.next();
+        assertEquals(e.getKey(), "country");
+        assertEquals((e.getValue()).get(0), "country is required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "postalCode");
-       assertEquals(((List)e.getValue()).get(0), "postal code is required");
+        e = i.next();
+        assertEquals(e.getKey(), "postalCode");
+        assertEquals((e.getValue()).get(0), "postal code is required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "email");
-       assertEquals(((List)e.getValue()).get(0), "email is required");
+        e = i.next();
+        assertEquals(e.getKey(), "email");
+        assertEquals((e.getValue()).get(0), "email is required");
 
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "website");
-       assertEquals(((List)e.getValue()).get(0), "website is required");
-
-       e = (Map.Entry) i.next();
-       assertEquals(e.getKey(), "passwordHint");
-       assertEquals(((List)e.getValue()).get(0), "password hint is required");
+        e = i.next();
+        assertEquals(e.getKey(), "website");
+        assertEquals((e.getValue()).get(0), "website is required");
 
+        e = i.next();
+        assertEquals(e.getKey(), "passwordHint");
+        assertEquals((e.getValue()).get(0), "password hint is required");
     }
-    */
+
 }

Reply via email to