public void testBeanValidator_WithManualConfiguration() throws Exception { // creating the validation configuration for the bean. DefaultBeanValidationConfiguration personValidationConfiguration = new DefaultBeanValidationConfiguration(); personValidationConfiguration.addGlobalRule( new DefaultValidationRule(Conditions.minLength("name", 4), "minLength")); personValidationConfiguration.addPropertyRule( "name", new DefaultValidationRule(Conditions.minLength("name", 5), "minLength")); SimpleBeanValidationConfigurationLoader loader = new SimpleBeanValidationConfigurationLoader(); loader.setClassValidation(Person.class, personValidationConfiguration); BeanValidator validator = new BeanValidator(); validator.setErrorCodeConverter(new ModelAwareErrorCodeConverter()); validator.setConfigurationLoader(loader); Person person = new Person("Uri"); BindException errors = new BindException(person, "person"); validator.validate(person, errors); assertTrue(errors.hasFieldErrors("name")); assertTrue(errors.hasGlobalErrors()); assertEquals(1, errors.getFieldErrorCount("name")); assertEquals(1, errors.getGlobalErrorCount()); assertEquals("Person[minLength]", errors.getGlobalError().getCode()); assertEquals("Person.name[minLength]", errors.getFieldError("name").getCode()); }
public void testBeanValidator_WithCustomValangFunctions() throws Exception { Map functionsByName = new HashMap(); functionsByName.put("tupper", UpperCaseFunction.class.getName()); ValangCondition goodCondition = new ValangCondition("tupper(name) == 'URI'", functionsByName, null); ValangCondition badCondition = new ValangCondition("tupper(name) == 'Uri'", functionsByName, null); // creating the validation configuration for the bean. DefaultBeanValidationConfiguration personValidationConfiguration = new DefaultBeanValidationConfiguration(); personValidationConfiguration.addGlobalRule(new DefaultValidationRule(goodCondition, "good")); personValidationConfiguration.addGlobalRule(new DefaultValidationRule(badCondition, "bad")); SimpleBeanValidationConfigurationLoader loader = new SimpleBeanValidationConfigurationLoader(); loader.setClassValidation(Person.class, personValidationConfiguration); BeanValidator validator = new BeanValidator(loader); validator.setErrorCodeConverter(new ModelAwareErrorCodeConverter()); validator.setConfigurationLoader(loader); Person person = new Person("Uri"); BindException errors = new BindException(person, "person"); validator.validate(person, errors); assertTrue(errors.hasGlobalErrors()); assertEquals(1, errors.getGlobalErrorCount()); assertEquals("Person[bad]", errors.getGlobalError().getCode()); }
public void testBeanValidator_WithCustomValangFunctions2() throws Exception { Map functionsByName = new HashMap(); functionsByName.put("tupper", UpperCaseFunction.class.getName()); ValangConditionExpressionParser conditionExpressionParser = new ValangConditionExpressionParser(); conditionExpressionParser.setCustomFunctions(functionsByName); DefaultValidationRuleElementHandlerRegistry registry = new DefaultValidationRuleElementHandlerRegistry(); registry.setConditionExpressionParser(conditionExpressionParser); registry.afterPropertiesSet(); DefaultXmlBeanValidationConfigurationLoader loader = new DefaultXmlBeanValidationConfigurationLoader(); loader.setResource(new ClassPathResource("validation.xml", getClass())); loader.setElementHandlerRegistry(registry); loader.afterPropertiesSet(); BeanValidator validator = new BeanValidator(loader); validator.setErrorCodeConverter(new ModelAwareErrorCodeConverter()); Person person = new Person("Uri"); person.setHomeless(false); person.setAddress(new Address(null, "Amsterdam")); BindException errors = new BindException(person, "person"); validator.validate(person, errors); assertTrue(errors.hasGlobalErrors()); assertEquals(1, errors.getGlobalErrorCount()); assertEquals(1, errors.getFieldErrorCount()); assertEquals("Person[bad]", errors.getGlobalError().getCode()); assertEquals("Address.street[not.null]", errors.getFieldError("address.street").getCode()); }