@Override public void afterPropertiesSet() throws Exception { SpringValidatorAdapter springValidatorAdapter = new SpringValidatorAdapter(this.validator); SpringValidator<T> springValidator = new SpringValidator<>(); springValidator.setValidator(springValidatorAdapter); springValidator.afterPropertiesSet(); setValidator(springValidator); super.afterPropertiesSet(); } }
/** * @return string of field errors followed by global errors. */ private String errorsToString(Errors errors) { StringBuilder builder = new StringBuilder(); appendCollection(errors.getFieldErrors(), builder); appendCollection(errors.getGlobalErrors(), builder); return builder.toString(); }
/** * Typical successful validation - no exception is thrown. */ @Test public void testValidateSuccessfully() { validator.validate(MockSpringValidator.ACCEPT_VALUE); }
/** * Validator property is not set */ @Test(expected = IllegalArgumentException.class) public void testNullValidator() throws Exception { validator.setValidator(null); validator.afterPropertiesSet(); }
@Bean public ItemProcessor<Person, Person> validatingItemProcessor(Validator validator) { SpringValidator<Person> springValidator = new SpringValidator<>(); springValidator.setValidator(validator); ValidatingItemProcessor<Person> ValidatingItemProcessor = new ValidatingItemProcessor<>(); ValidatingItemProcessor.setValidator(springValidator); return ValidatingItemProcessor; } }
@Before public void setUp() throws Exception { mockValidator = new MockSpringValidator(); validator.setValidator(mockValidator); }
/** * @see Validator#validate(Object) */ @Override public void validate(T item) throws ValidationException { if (!validator.supports(item.getClass())) { throw new ValidationException("Validation failed for " + item + ": " + item.getClass().getName() + " class is not supported by validator."); } BeanPropertyBindingResult errors = new BeanPropertyBindingResult(item, "item"); validator.validate(item, errors); if (errors.hasErrors()) { throw new ValidationException("Validation failed for " + item + ": " + errorsToString(errors), new BindException(errors)); } }
/** * @see Validator#validate(Object) */ @Override public void validate(T item) throws ValidationException { if (!validator.supports(item.getClass())) { throw new ValidationException("Validation failed for " + item + ": " + item.getClass().getName() + " class is not supported by validator."); } BeanPropertyBindingResult errors = new BeanPropertyBindingResult(item, "item"); validator.validate(item, errors); if (errors.hasErrors()) { throw new ValidationException("Validation failed for " + item + ": " + errorsToString(errors), new BindException(errors)); } }
@Override public void afterPropertiesSet() throws Exception { SpringValidatorAdapter springValidatorAdapter = new SpringValidatorAdapter(this.validator); SpringValidator<T> springValidator = new SpringValidator<>(); springValidator.setValidator(springValidatorAdapter); springValidator.afterPropertiesSet(); setValidator(springValidator); super.afterPropertiesSet(); } }
/** * @return string of field errors followed by global errors. */ private String errorsToString(Errors errors) { StringBuilder builder = new StringBuilder(); appendCollection(errors.getFieldErrors(), builder); appendCollection(errors.getGlobalErrors(), builder); return builder.toString(); }
/** * Validator does not know how to validate object of the given class */ @Test(expected = ValidationException.class) public void testValidateUnsupportedType() { validator.validate(Integer.valueOf(1)); // only strings are supported }
/** * Typical failed validation - {@link ValidationException} is thrown */ @Test(expected = ValidationException.class) public void testValidateFailure() { validator.validate(MockSpringValidator.REJECT_VALUE); }
/** * Typical failed validation - {@link ValidationException} is thrown */ @Test(expected = BindException.class) public void testValidateFailureWithErrors() throws Exception { try { validator.validate(MockSpringValidator.REJECT_VALUE); } catch (ValidationException e) { throw (BindException) e.getCause(); } }
/** * Typical failed validation - message contains the item and names of * invalid fields. */ @Test public void testValidateFailureWithFields() { try { validator.validate(MockSpringValidator.REJECT_MULTI_VALUE); fail("exception should have been thrown on invalid value"); } catch (ValidationException expected) { assertTrue("message should contain the item#toString() value", expected.getMessage().contains( "TestBeanToString")); assertTrue("message should contain names of the invalid fields", expected.getMessage().contains("foo")); assertTrue("message should contain names of the invalid fields", expected.getMessage().contains("bar")); } }