⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 annotationactionvalidatormanagertest.java

📁 在Struts2中的jar包xwork的源代码.版本为2.0.7
💻 JAVA
字号:
/* * Copyright (c) 2002-2006 by OpenSymphony * All rights reserved. */package com.opensymphony.xwork2.validator;import com.opensymphony.xwork2.AnnotatedTestBean;import com.opensymphony.xwork2.XWorkTestCase;import com.opensymphony.xwork2.SimpleAnnotationAction;import com.opensymphony.xwork2.test.AnnotationDataAware2;import com.opensymphony.xwork2.test.SimpleAnnotationAction2;import com.opensymphony.xwork2.test.SimpleAnnotationAction3;import com.opensymphony.xwork2.test.AnnotationUser;import com.opensymphony.xwork2.validator.validators.*;import java.util.List;/** * AnnotationActionValidatorManagerTest * * @author Rainer Hermanns * @author Jason Carreira * @author tm_jee ( tm_jee (at) yahoo.co.uk ) *         Created Jun 9, 2003 11:03:01 AM */public class AnnotationActionValidatorManagerTest extends XWorkTestCase {    protected final String alias = "annotationValidationAlias";    AnnotationActionValidatorManager annotationActionValidatorManager;    protected void setUp() throws Exception {        annotationActionValidatorManager = new AnnotationActionValidatorManager();        super.setUp();    }    protected void tearDown() throws Exception {        annotationActionValidatorManager = null;        super.tearDown();    }    public void testBuildValidatorKey() {        String validatorKey = AnnotationActionValidatorManager.buildValidatorKey(SimpleAnnotationAction.class, alias);        assertEquals(SimpleAnnotationAction.class.getName() + "/" + alias, validatorKey);    }    public void testBuildsValidatorsForAlias() {        List validatorList = annotationActionValidatorManager.getValidators(SimpleAnnotationAction.class, alias);        // 17 in the class level + 0 in the alias        // TODO: add alias tests        assertEquals(17, validatorList.size());    }    public void testDefaultMessageInterpolation() {        // get validators        List validatorList = annotationActionValidatorManager.getValidators(AnnotatedTestBean.class, "beanMessageBundle");        assertEquals(3, validatorList.size());        try {            AnnotatedTestBean bean = new AnnotatedTestBean();            bean.setName("foo");            bean.setCount(99);            ValidatorContext context = new GenericValidatorContext(bean);            annotationActionValidatorManager.validate(bean, "beanMessageBundle", context);            assertTrue(context.hasErrors());            assertTrue(context.hasFieldErrors());            List l = (List) context.getFieldErrors().get("count");            assertNotNull(l);            assertEquals(1, l.size());            assertEquals("Smaller Invalid Count: 99", l.get(0));        } catch (ValidationException ex) {            ex.printStackTrace();            fail("Validation error: " + ex.getMessage());        }    }    public void testGetValidatorsForInterface() {        List validatorList = annotationActionValidatorManager.getValidators(AnnotationDataAware2.class, alias);        // 1 in interface hierarchy, 2 from parent interface (1 default + 1 context)        assertEquals(3, validatorList.size());        final FieldValidator dataValidator1 = (FieldValidator) validatorList.get(0);        assertEquals("data", dataValidator1.getFieldName());        assertTrue(dataValidator1 instanceof RequiredFieldValidator);        final FieldValidator dataValidator2 = (FieldValidator) validatorList.get(1);        assertEquals("data", dataValidator2.getFieldName());        assertTrue(dataValidator2 instanceof RequiredStringValidator);        final FieldValidator blingValidator = (FieldValidator) validatorList.get(2);        assertEquals("bling", blingValidator.getFieldName());        assertTrue(blingValidator instanceof RequiredStringValidator);    }    public void no_testGetValidatorsFromInterface() {        List validatorList = annotationActionValidatorManager.getValidators(SimpleAnnotationAction3.class, alias);        // 17 in the class hierarchy + 1 in the interface + 1 in interface alias        assertEquals(19, validatorList.size());        final FieldValidator v = (FieldValidator) validatorList.get(0);        assertEquals("bar", v.getFieldName());        assertTrue(v instanceof RequiredFieldValidator);        final FieldValidator v1 = (FieldValidator) validatorList.get(1);        assertEquals("bar", v1.getFieldName());        assertTrue(v1 instanceof IntRangeFieldValidator);        final FieldValidator vdouble = (FieldValidator) validatorList.get(2);        assertEquals("percentage", vdouble.getFieldName());        assertTrue(vdouble instanceof DoubleRangeFieldValidator);        final FieldValidator v2 = (FieldValidator) validatorList.get(3);        assertEquals("baz", v2.getFieldName());        assertTrue(v2 instanceof IntRangeFieldValidator);        final FieldValidator v3 = (FieldValidator) validatorList.get(4);        assertEquals("date", v3.getFieldName());        assertTrue(v3 instanceof DateRangeFieldValidator);        // action-level validator comes first        final Validator v4 = (Validator) validatorList.get(5);        assertTrue(v4 instanceof ExpressionValidator);        // action-level validator comes first        final Validator v5 = (Validator) validatorList.get(6);        assertTrue(v5 instanceof ExpressionValidator);        // action-level validator comes first        final Validator v6 = (Validator) validatorList.get(7);        assertTrue(v6 instanceof ExpressionValidator);        // action-level validator comes first        final Validator v7 = (Validator) validatorList.get(8);        assertTrue(v7 instanceof ExpressionValidator);        // action-level validator comes first        final Validator v8 = (Validator) validatorList.get(9);        assertTrue(v8 instanceof ExpressionValidator);        final FieldValidator v9 = (FieldValidator) validatorList.get(10);        assertEquals("datefield", v9.getFieldName());        assertTrue(v9 instanceof DateRangeFieldValidator);        final FieldValidator v10 = (FieldValidator) validatorList.get(11);        assertEquals("emailaddress", v10.getFieldName());        assertTrue(v10 instanceof EmailValidator);        final FieldValidator v11 = (FieldValidator) validatorList.get(12);        assertEquals("intfield", v11.getFieldName());        assertTrue(v11 instanceof IntRangeFieldValidator);        final FieldValidator v12 = (FieldValidator) validatorList.get(13);        assertEquals("customfield", v12.getFieldName());        assertTrue(v12 instanceof RequiredFieldValidator);        final FieldValidator v13 = (FieldValidator) validatorList.get(14);        assertEquals("stringisrequired", v13.getFieldName());        assertTrue(v13 instanceof RequiredStringValidator);        final FieldValidator v14 = (FieldValidator) validatorList.get(15);        assertEquals("needstringlength", v14.getFieldName());        assertTrue(v14 instanceof StringLengthFieldValidator);        final FieldValidator v15 = (FieldValidator) validatorList.get(16);        assertEquals("hreflocation", v15.getFieldName());        assertTrue(v15 instanceof URLValidator);        final FieldValidator v16 = (FieldValidator) validatorList.get(17);        assertEquals("data", v16.getFieldName());        assertTrue(v16 instanceof RequiredFieldValidator);        final FieldValidator v17 = (FieldValidator) validatorList.get(18);        assertEquals("data", v17.getFieldName());        assertTrue(v17 instanceof RequiredStringValidator);    }    public void testMessageInterpolation() {        // get validators        List validatorList = annotationActionValidatorManager.getValidators(AnnotatedTestBean.class, "beanMessageBundle");        assertEquals(3, validatorList.size());        try {            AnnotatedTestBean bean = new AnnotatedTestBean();            bean.setName("foo");            bean.setCount(150);            ValidatorContext context = new GenericValidatorContext(bean);            annotationActionValidatorManager.validate(bean, "beanMessageBundle", context);            assertTrue(context.hasErrors());            assertTrue(context.hasFieldErrors());            List l = (List) context.getFieldErrors().get("count");            assertNotNull(l);            assertEquals(1, l.size());            assertEquals("Count must be between 1 and 100, current value is 150.", l.get(0));        } catch (ValidationException ex) {            ex.printStackTrace();            fail("Validation error: " + ex.getMessage());        }    }    public void testSameAliasWithDifferentClass() {        List validatorList = annotationActionValidatorManager.getValidators(SimpleAnnotationAction.class, alias);        List validatorList2 = annotationActionValidatorManager.getValidators(SimpleAnnotationAction2.class, alias);        assertFalse(validatorList.size() == validatorList2.size());    }    public void testSkipUserMarkerActionLevelShortCircuit() {        // get validators        List validatorList = annotationActionValidatorManager.getValidators(AnnotationUser.class, null);        assertEquals(10, validatorList.size());        try {            AnnotationUser user = new AnnotationUser();            user.setName("Mark");            user.setEmail("bad_email");            user.setEmail2("bad_email");            ValidatorContext context = new GenericValidatorContext(user);            annotationActionValidatorManager.validate(user, null, context);            assertTrue(context.hasFieldErrors());            // check field errors            List l = (List) 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");            assertNotNull(l);            assertEquals(2, l.size());            assertEquals("Not a valid e-mail2.", l.get(0));            assertEquals("Email2 not from the right company.", l.get(1));            // check action errors            assertTrue(context.hasActionErrors());            l = (List) context.getActionErrors();            assertNotNull(l);            assertEquals(2, l.size()); // both expression test failed see AnnotationUser-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 = annotationActionValidatorManager.getValidators(AnnotationUser.class, null);        assertEquals(10, validatorList.size());        try {            AnnotationUser user = new AnnotationUser();            user.setName("Mark");            // * mark both email to starts with mark to get pass the action-level validator,            // so we could concentrate on testing the field-level validators (AnnotationUser-validation.xml)            // * make both email the same to pass the action-level validator at             // AnnotationUserMarker-validation.xml            user.setEmail("mark_bad_email_for_field_val@foo.com");            user.setEmail2("mark_bad_email_for_field_val@foo.com");            ValidatorContext context = new GenericValidatorContext(user);            annotationActionValidatorManager.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");            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();            assertFalse(context.hasActionErrors());            assertEquals(0, l.size());                                } catch (ValidationException ex) {            ex.printStackTrace();            fail("Validation error: " + ex.getMessage());        }    }        public void testActionLevelShortCircuit() throws Exception {    	    	List validatorList = annotationActionValidatorManager.getValidators(AnnotationUser.class, null);        assertEquals(10, validatorList.size());                AnnotationUser user = new AnnotationUser();        // all fields will trigger error, but sc of action-level, cause it to not appear        user.setName(null);		        user.setEmail("rainerh(at)example.com");        user.setEmail("rainer_h(at)example.com");        ValidatorContext context = new GenericValidatorContext(user);        annotationActionValidatorManager.validate(user, null, context);    	    	// check field level errors        // shouldn't have any because action error prevents validation of anything else        List l = (List) context.getFieldErrors().get("email2");        assertNull(l);    	    	        // check action errors        assertTrue(context.hasActionErrors());        l = (List) context.getActionErrors();        assertNotNull(l);        // we only get one, because AnnotationUserMarker-validation.xml action-level validator        // already sc it   :-)        assertEquals(1, l.size());         assertEquals("Email not the same as email2", l.get(0));    }            public void testShortCircuitNoErrors() {        // get validators        List validatorList = annotationActionValidatorManager.getValidators(AnnotationUser.class, null);        assertEquals(10, validatorList.size());        try {            AnnotationUser user = new AnnotationUser();            user.setName("Mark");            user.setEmail("mark@mycompany.com");            user.setEmail2("mark@mycompany.com");            ValidatorContext context = new GenericValidatorContext(user);            annotationActionValidatorManager.validate(user, null, context);            assertFalse(context.hasErrors());        } catch (ValidationException ex) {            ex.printStackTrace();            fail("Validation error: " + ex.getMessage());        }    }}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -