@ -1,5 +1,5 @@
@@ -1,5 +1,5 @@
/ *
* Copyright 2002 - 2020 the original author or authors .
* Copyright 2002 - 2022 the original author or authors .
*
* Licensed under the Apache License , Version 2 . 0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
@ -64,23 +64,26 @@ import org.springframework.format.support.DefaultFormattingConversionService;
@@ -64,23 +64,26 @@ import org.springframework.format.support.DefaultFormattingConversionService;
import org.springframework.format.support.FormattingConversionService ;
import org.springframework.lang.Nullable ;
import org.springframework.tests.sample.beans.BeanWithObjectProperty ;
import org.springframework.util.ObjectUtils ;
import org.springframework.util.StringUtils ;
import static org.assertj.core.api.Assertions.assertThat ;
import static org.assertj.core.api.Assertions.assertThatExceptionOfType ;
import static org.assertj.core.api.Assertions.assertThatIllegalStateException ;
import static org.assertj.core.api.Assertions.entry ;
/ * *
* Unit tests for { @link DataBinder } .
*
* @author Rod Johnson
* @author Juergen Hoeller
* @author Rob Harrop
* @author Kazuki Shimizu
* @author Sam Brannen
* /
public class DataBinderTests {
class DataBinderTests {
@Test
public void testB indingNoErrors( ) throws BindException {
void b indingNoErrors( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
assertThat ( binder . isIgnoreUnknownFields ( ) ) . isTrue ( ) ;
@ -110,12 +113,11 @@ public class DataBinderTests {
@@ -110,12 +113,11 @@ public class DataBinderTests {
assertThat ( ex ) . isEqualTo ( binder . getBindingResult ( ) ) ;
other . reject ( "xxx" ) ;
boolean condition = ! other . equals ( binder . getBindingResult ( ) ) ;
assertThat ( condition ) . isTrue ( ) ;
assertThat ( other ) . isNotEqualTo ( binder . getBindingResult ( ) ) ;
}
@Test
public void testB indingWithDefaultConversionNoErrors( ) throws BindException {
void b indingWithDefaultConversionNoErrors( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
assertThat ( binder . isIgnoreUnknownFields ( ) ) . isTrue ( ) ;
@ -131,7 +133,7 @@ public class DataBinderTests {
@@ -131,7 +133,7 @@ public class DataBinderTests {
}
@Test
public void testN estedBindingWithDefaultConversionNoErrors( ) throws BindException {
void n estedBindingWithDefaultConversionNoErrors( ) throws BindException {
TestBean rod = new TestBean ( new TestBean ( ) ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
assertThat ( binder . isIgnoreUnknownFields ( ) ) . isTrue ( ) ;
@ -147,7 +149,7 @@ public class DataBinderTests {
@@ -147,7 +149,7 @@ public class DataBinderTests {
}
@Test
public void testB indingNoErrorsNotIgnoreUnknown( ) {
void b indingNoErrorsNotIgnoreUnknown( ) {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
binder . setIgnoreUnknownFields ( false ) ;
@ -160,7 +162,7 @@ public class DataBinderTests {
@@ -160,7 +162,7 @@ public class DataBinderTests {
}
@Test
public void testB indingNoErrorsWithInvalidField( ) {
void b indingNoErrorsWithInvalidField( ) {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
@ -171,7 +173,7 @@ public class DataBinderTests {
@@ -171,7 +173,7 @@ public class DataBinderTests {
}
@Test
public void testB indingNoErrorsWithIgnoreInvalid( ) {
void b indingNoErrorsWithIgnoreInvalid( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
binder . setIgnoreInvalidFields ( true ) ;
@ -180,10 +182,14 @@ public class DataBinderTests {
@@ -180,10 +182,14 @@ public class DataBinderTests {
pvs . add ( "spouse.age" , 32 ) ;
binder . bind ( pvs ) ;
binder . close ( ) ;
assertThat ( rod . getName ( ) ) . isEqualTo ( "Rod" ) ;
assertThat ( rod . getSpouse ( ) ) . isNull ( ) ;
}
@Test
public void testBindingWithErrors ( ) {
void b indingWithErrors( ) {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
@ -245,7 +251,7 @@ public class DataBinderTests {
@@ -245,7 +251,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithSystemFieldError( ) {
void b indingWithSystemFieldError( ) {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
@ -257,7 +263,7 @@ public class DataBinderTests {
@@ -257,7 +263,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithErrorsAndCustomEditors( ) {
void b indingWithErrorsAndCustomEditors( ) {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
binder . registerCustomEditor ( String . class , "touchy" , new PropertyEditorSupport ( ) {
@ -325,7 +331,7 @@ public class DataBinderTests {
@@ -325,7 +331,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithCustomEditorOnObjectField( ) {
void b indingWithCustomEditorOnObjectField( ) {
BeanWithObjectProperty tb = new BeanWithObjectProperty ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
binder . registerCustomEditor ( Integer . class , "object" , new CustomNumberEditor ( Integer . class , true ) ) ;
@ -336,7 +342,7 @@ public class DataBinderTests {
@@ -336,7 +342,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithFormatter( ) {
void b indingWithFormatter( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
FormattingConversionService conversionService = new FormattingConversionService ( ) ;
@ -368,7 +374,7 @@ public class DataBinderTests {
@@ -368,7 +374,7 @@ public class DataBinderTests {
}
@Test
public void testB indingErrorWithFormatter( ) {
void b indingErrorWithFormatter( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
FormattingConversionService conversionService = new FormattingConversionService ( ) ;
@ -391,7 +397,7 @@ public class DataBinderTests {
@@ -391,7 +397,7 @@ public class DataBinderTests {
}
@Test
public void testB indingErrorWithParseExceptionFromFormatter( ) {
void b indingErrorWithParseExceptionFromFormatter( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
FormattingConversionService conversionService = new FormattingConversionService ( ) ;
@ -419,7 +425,7 @@ public class DataBinderTests {
@@ -419,7 +425,7 @@ public class DataBinderTests {
}
@Test
public void testB indingErrorWithRuntimeExceptionFromFormatter( ) {
void b indingErrorWithRuntimeExceptionFromFormatter( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
FormattingConversionService conversionService = new FormattingConversionService ( ) ;
@ -447,7 +453,7 @@ public class DataBinderTests {
@@ -447,7 +453,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithFormatterAgainstList( ) {
void b indingWithFormatterAgainstList( ) {
BeanWithIntegerList tb = new BeanWithIntegerList ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
FormattingConversionService conversionService = new FormattingConversionService ( ) ;
@ -469,7 +475,7 @@ public class DataBinderTests {
@@ -469,7 +475,7 @@ public class DataBinderTests {
}
@Test
public void testB indingErrorWithFormatterAgainstList( ) {
void b indingErrorWithFormatterAgainstList( ) {
BeanWithIntegerList tb = new BeanWithIntegerList ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
FormattingConversionService conversionService = new FormattingConversionService ( ) ;
@ -492,7 +498,7 @@ public class DataBinderTests {
@@ -492,7 +498,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithFormatterAgainstFields( ) {
void b indingWithFormatterAgainstFields( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
FormattingConversionService conversionService = new FormattingConversionService ( ) ;
@ -525,7 +531,7 @@ public class DataBinderTests {
@@ -525,7 +531,7 @@ public class DataBinderTests {
}
@Test
public void testB indingErrorWithFormatterAgainstFields( ) {
void b indingErrorWithFormatterAgainstFields( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
binder . initDirectFieldAccess ( ) ;
@ -549,7 +555,7 @@ public class DataBinderTests {
@@ -549,7 +555,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithCustomFormatter( ) {
void b indingWithCustomFormatter( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
binder . addCustomFormatter ( new NumberStyleFormatter ( ) , Float . class ) ;
@ -578,7 +584,7 @@ public class DataBinderTests {
@@ -578,7 +584,7 @@ public class DataBinderTests {
}
@Test
public void testB indingErrorWithCustomFormatter( ) {
void b indingErrorWithCustomFormatter( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
binder . addCustomFormatter ( new NumberStyleFormatter ( ) ) ;
@ -599,7 +605,7 @@ public class DataBinderTests {
@@ -599,7 +605,7 @@ public class DataBinderTests {
}
@Test
public void testB indingErrorWithParseExceptionFromCustomFormatter( ) {
void b indingErrorWithParseExceptionFromCustomFormatter( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
@ -624,7 +630,7 @@ public class DataBinderTests {
@@ -624,7 +630,7 @@ public class DataBinderTests {
}
@Test
public void testB indingErrorWithRuntimeExceptionFromCustomFormatter( ) {
void b indingErrorWithRuntimeExceptionFromCustomFormatter( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
@ -649,7 +655,7 @@ public class DataBinderTests {
@@ -649,7 +655,7 @@ public class DataBinderTests {
}
@Test
public void testC onversionWithInappropriateStringEditor( ) {
void c onversionWithInappropriateStringEditor( ) {
DataBinder dataBinder = new DataBinder ( null ) ;
DefaultFormattingConversionService conversionService = new DefaultFormattingConversionService ( ) ;
dataBinder . setConversionService ( conversionService ) ;
@ -662,7 +668,7 @@ public class DataBinderTests {
@@ -662,7 +668,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithAllowedFields( ) throws BindException {
void b indingWithAllowedFields( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod ) ;
binder . setAllowedFields ( "name" , "myparam" ) ;
@ -672,30 +678,32 @@ public class DataBinderTests {
@@ -672,30 +678,32 @@ public class DataBinderTests {
binder . bind ( pvs ) ;
binder . close ( ) ;
assertThat ( rod . getName ( ) . equals ( "Rod" ) ) . as ( "changed name correctly" ) . isTrue ( ) ;
assertThat ( rod . getAge ( ) = = 0 ) . as ( "did not change age" ) . isTrue ( ) ;
assertThat ( rod . getName ( ) ) . as ( "changed name correctly" ) . isEqualTo ( "Rod" ) ;
assertThat ( rod . getAge ( ) ) . as ( "did not change age" ) . isZero ( ) ;
}
@Test
public void testB indingWithDisallowedFields( ) throws BindException {
void b indingWithDisallowedFields( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod ) ;
binder . setDisallowedFields ( "age" ) ;
binder . setDisallowedFields ( " " , "\t" , "favouriteColour" , null , " age" ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . add ( "name" , "Rod" ) ;
pvs . add ( "age" , "32x" ) ;
pvs . add ( "favouriteColour" , "BLUE" ) ;
binder . bind ( pvs ) ;
binder . close ( ) ;
assertThat ( rod . getName ( ) . equals ( "Rod" ) ) . as ( "changed name correctly" ) . isTrue ( ) ;
assertThat ( rod . getAg e ( ) = = 0 ) . as ( "did not change age" ) . isTrue ( ) ;
String [ ] disallowedFields = binder . getBindingResult ( ) . getSuppressedFields ( ) ;
assertThat ( disallowedFields . length ) . isEqualTo ( 1 ) ;
assertThat ( disallowedFields [ 0 ] ) . isEqualTo ( "age" ) ;
assertThat ( rod . getNam e ( ) ) . as ( "changed name correctly" ) . isEqualTo ( "Rod" ) ;
assertThat ( rod . getAge ( ) ) . as ( "did not change age" ) . isZero ( ) ;
assertThat ( rod . getFavouriteColour ( ) ) . as ( "did not change favourite colour" ) . isNull ( ) ;
assertThat ( binder . getBindingResult ( ) . getSuppressedFields ( ) ) . containsExactlyInAnyOrder ( "age" , "favouriteColour " ) ;
}
@Test
public void testB indingWithAllowedAndDisallowedFields( ) throws BindException {
void b indingWithAllowedAndDisallowedFields( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod ) ;
binder . setAllowedFields ( "name" , "myparam" ) ;
@ -706,34 +714,32 @@ public class DataBinderTests {
@@ -706,34 +714,32 @@ public class DataBinderTests {
binder . bind ( pvs ) ;
binder . close ( ) ;
assertThat ( rod . getName ( ) . equals ( "Rod" ) ) . as ( "changed name correctly" ) . isTrue ( ) ;
assertThat ( rod . getAge ( ) = = 0 ) . as ( "did not change age" ) . isTrue ( ) ;
String [ ] disallowedFields = binder . getBindingResult ( ) . getSuppressedFields ( ) ;
assertThat ( disallowedFields . length ) . isEqualTo ( 1 ) ;
assertThat ( disallowedFields [ 0 ] ) . isEqualTo ( "age" ) ;
assertThat ( rod . getName ( ) ) . as ( "changed name correctly" ) . isEqualTo ( "Rod" ) ;
assertThat ( rod . getAge ( ) ) . as ( "did not change age" ) . isZero ( ) ;
assertThat ( binder . getBindingResult ( ) . getSuppressedFields ( ) ) . containsExactly ( "age" ) ;
}
@Test
public void testB indingWithOverlappingAllowedAndDisallowedFields( ) throws BindException {
void b indingWithOverlappingAllowedAndDisallowedFields( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod ) ;
binder . setAllowedFields ( "name" , "age" ) ;
binder . setDisallowedFields ( "age " ) ;
binder . setDisallowedFields ( "AGE " ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . add ( "name" , "Rod" ) ;
pvs . add ( "age" , "32x" ) ;
binder . bind ( pvs ) ;
binder . close ( ) ;
assertThat ( rod . getName ( ) . equals ( "Rod" ) ) . as ( "changed name correctly" ) . isTrue ( ) ;
assertThat ( rod . getAge ( ) = = 0 ) . as ( "did not change age" ) . isTrue ( ) ;
String [ ] disallowedFields = binder . getBindingResult ( ) . getSuppressedFields ( ) ;
assertThat ( disallowedFields . length ) . isEqualTo ( 1 ) ;
assertThat ( disallowedFields [ 0 ] ) . isEqualTo ( "age" ) ;
assertThat ( rod . getName ( ) ) . as ( "changed name correctly" ) . isEqualTo ( "Rod" ) ;
assertThat ( rod . getAge ( ) ) . as ( "did not change age" ) . isZero ( ) ;
assertThat ( binder . getBindingResult ( ) . getSuppressedFields ( ) ) . containsExactly ( "age" ) ;
}
@Test
public void testB indingWithAllowedFieldsUsingAsterisks( ) throws BindException {
void b indingWithAllowedFieldsUsingAsterisks( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
binder . setAllowedFields ( "nam*" , "*ouchy" ) ;
@ -760,11 +766,11 @@ public class DataBinderTests {
@@ -760,11 +766,11 @@ public class DataBinderTests {
}
@Test
public void testB indingWithAllowedAndDisallowedMapFields( ) throws BindException {
void b indingWithAllowedAndDisallowedMapFields( ) throws BindException {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod ) ;
binder . setAllowedFields ( "someMap[key1]" , "someMap[key2]" ) ;
binder . setDisallowedFields ( "someMap['key3']" , "s omeMap[key4]" ) ;
binder . setDisallowedFields ( "someMap['KEY3']" , "S omeMap[key4]" ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . add ( "someMap[key1]" , "value1" ) ;
@ -774,21 +780,18 @@ public class DataBinderTests {
@@ -774,21 +780,18 @@ public class DataBinderTests {
binder . bind ( pvs ) ;
binder . close ( ) ;
assertThat ( rod . getSomeMap ( ) . get ( "key1" ) ) . isEqualTo ( "value1" ) ;
assertThat ( rod . getSomeMap ( ) . get ( "key2" ) ) . isEqualTo ( "value2" ) ;
assertThat ( rod . getSomeMap ( ) . get ( "key3" ) ) . isNull ( ) ;
assertThat ( rod . getSomeMap ( ) . get ( "key4" ) ) . isNull ( ) ;
String [ ] disallowedFields = binder . getBindingResult ( ) . getSuppressedFields ( ) ;
assertThat ( disallowedFields . length ) . isEqualTo ( 2 ) ;
assertThat ( ObjectUtils . containsElement ( disallowedFields , "someMap[key3]" ) ) . isTrue ( ) ;
assertThat ( ObjectUtils . containsElement ( disallowedFields , "someMap[key4]" ) ) . isTrue ( ) ;
@SuppressWarnings ( "unchecked" )
Map < String , String > someMap = ( Map < String , String > ) rod . getSomeMap ( ) ;
assertThat ( someMap ) . containsOnly ( entry ( "key1" , "value1" ) , entry ( "key2" , "value2" ) ) ;
assertThat ( binder . getBindingResult ( ) . getSuppressedFields ( ) ) . containsExactly ( "someMap[key3]" , "someMap[key4]" ) ;
}
/ * *
* Tests for required field , both null , non - existing and empty strings .
* /
@Test
public void testB indingWithRequiredFields( ) {
void b indingWithRequiredFields( ) {
TestBean tb = new TestBean ( ) ;
tb . setSpouse ( new TestBean ( ) ) ;
@ -819,7 +822,7 @@ public class DataBinderTests {
@@ -819,7 +822,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithRequiredMapFields( ) {
void b indingWithRequiredMapFields( ) {
TestBean tb = new TestBean ( ) ;
tb . setSpouse ( new TestBean ( ) ) ;
@ -839,7 +842,7 @@ public class DataBinderTests {
@@ -839,7 +842,7 @@ public class DataBinderTests {
}
@Test
public void testB indingWithNestedObjectCreation( ) {
void b indingWithNestedObjectCreation( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "person" ) ;
@ -860,7 +863,7 @@ public class DataBinderTests {
@@ -860,7 +863,7 @@ public class DataBinderTests {
}
@Test
public void testC ustomEditorWithOldValueAccess( ) {
void c ustomEditorWithOldValueAccess( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
@ -885,7 +888,7 @@ public class DataBinderTests {
@@ -885,7 +888,7 @@ public class DataBinderTests {
}
@Test
public void testC ustomEditorForSingleProperty( ) {
void c ustomEditorForSingleProperty( ) {
TestBean tb = new TestBean ( ) ;
tb . setSpouse ( new TestBean ( ) ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
@ -925,7 +928,7 @@ public class DataBinderTests {
@@ -925,7 +928,7 @@ public class DataBinderTests {
}
@Test
public void testC ustomEditorForPrimitiveProperty( ) {
void c ustomEditorForPrimitiveProperty( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
@ -949,7 +952,7 @@ public class DataBinderTests {
@@ -949,7 +952,7 @@ public class DataBinderTests {
}
@Test
public void testC ustomEditorForAllStringProperties( ) {
void c ustomEditorForAllStringProperties( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
@ -981,7 +984,7 @@ public class DataBinderTests {
@@ -981,7 +984,7 @@ public class DataBinderTests {
}
@Test
public void testC ustomFormatterForSingleProperty( ) {
void c ustomFormatterForSingleProperty( ) {
TestBean tb = new TestBean ( ) ;
tb . setSpouse ( new TestBean ( ) ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
@ -1021,7 +1024,7 @@ public class DataBinderTests {
@@ -1021,7 +1024,7 @@ public class DataBinderTests {
}
@Test
public void testC ustomFormatterForPrimitiveProperty( ) {
void c ustomFormatterForPrimitiveProperty( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
@ -1045,7 +1048,7 @@ public class DataBinderTests {
@@ -1045,7 +1048,7 @@ public class DataBinderTests {
}
@Test
public void testC ustomFormatterForAllStringProperties( ) {
void c ustomFormatterForAllStringProperties( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
@ -1077,7 +1080,7 @@ public class DataBinderTests {
@@ -1077,7 +1080,7 @@ public class DataBinderTests {
}
@Test
public void testJ avaBeanPropertyConventions( ) {
void j avaBeanPropertyConventions( ) {
Book book = new Book ( ) ;
DataBinder binder = new DataBinder ( book ) ;
@ -1101,7 +1104,7 @@ public class DataBinderTests {
@@ -1101,7 +1104,7 @@ public class DataBinderTests {
}
@Test
public void testO ptionalProperty( ) {
void o ptionalProperty( ) {
OptionalHolder bean = new OptionalHolder ( ) ;
DataBinder binder = new DataBinder ( bean ) ;
binder . setConversionService ( new DefaultConversionService ( ) ) ;
@ -1122,7 +1125,7 @@ public class DataBinderTests {
@@ -1122,7 +1125,7 @@ public class DataBinderTests {
}
@Test
public void testV alidatorNoErrors( ) throws Exception {
void v alidatorNoErrors( ) throws Exception {
TestBean tb = new TestBean ( ) ;
tb . setAge ( 33 ) ;
tb . setName ( "Rod" ) ;
@ -1175,15 +1178,13 @@ public class DataBinderTests {
@@ -1175,15 +1178,13 @@ public class DataBinderTests {
assertThat ( errors . getNestedPath ( ) ) . isEqualTo ( "spouse." ) ;
assertThat ( errors . getErrorCount ( ) ) . isEqualTo ( 1 ) ;
boolean condition1 = ! errors . hasGlobalErrors ( ) ;
assertThat ( condition1 ) . isTrue ( ) ;
assertThat ( errors . hasGlobalErrors ( ) ) . isFalse ( ) ;
assertThat ( errors . getFieldErrorCount ( "age" ) ) . isEqualTo ( 1 ) ;
boolean condition = ! errors . hasFieldErrors ( "name" ) ;
assertThat ( condition ) . isTrue ( ) ;
assertThat ( errors . hasFieldErrors ( "name" ) ) . isFalse ( ) ;
}
@Test
public void testV alidatorWithErrors( ) {
void v alidatorWithErrors( ) {
TestBean tb = new TestBean ( ) ;
tb . setSpouse ( new TestBean ( ) ) ;
@ -1252,7 +1253,7 @@ public class DataBinderTests {
@@ -1252,7 +1253,7 @@ public class DataBinderTests {
}
@Test
public void testV alidatorWithErrorsAndCodesPrefix( ) {
void v alidatorWithErrorsAndCodesPrefix( ) {
TestBean tb = new TestBean ( ) ;
tb . setSpouse ( new TestBean ( ) ) ;
@ -1324,7 +1325,7 @@ public class DataBinderTests {
@@ -1324,7 +1325,7 @@ public class DataBinderTests {
}
@Test
public void testV alidatorWithNestedObjectNull( ) {
void v alidatorWithNestedObjectNull( ) {
TestBean tb = new TestBean ( ) ;
Errors errors = new BeanPropertyBindingResult ( tb , "tb" ) ;
Validator testValidator = new TestBeanValidator ( ) ;
@ -1343,7 +1344,7 @@ public class DataBinderTests {
@@ -1343,7 +1344,7 @@ public class DataBinderTests {
}
@Test
public void testN estedValidatorWithoutNestedPath( ) {
void n estedValidatorWithoutNestedPath( ) {
TestBean tb = new TestBean ( ) ;
tb . setName ( "XXX" ) ;
Errors errors = new BeanPropertyBindingResult ( tb , "tb" ) ;
@ -1357,7 +1358,8 @@ public class DataBinderTests {
@@ -1357,7 +1358,8 @@ public class DataBinderTests {
}
@Test
public void testBindingStringArrayToIntegerSet ( ) {
@SuppressWarnings ( "unchecked" )
void bindingStringArrayToIntegerSet ( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( Set . class , new CustomCollectionEditor ( TreeSet . class ) {
@ -1371,12 +1373,8 @@ public class DataBinderTests {
@@ -1371,12 +1373,8 @@ public class DataBinderTests {
binder . bind ( pvs ) ;
assertThat ( binder . getBindingResult ( ) . getFieldValue ( "set" ) ) . isEqualTo ( tb . getSet ( ) ) ;
boolean condition = tb . getSet ( ) instanceof TreeSet ;
assertThat ( condition ) . isTrue ( ) ;
assertThat ( tb . getSet ( ) . size ( ) ) . isEqualTo ( 3 ) ;
assertThat ( tb . getSet ( ) . contains ( 10 ) ) . isTrue ( ) ;
assertThat ( tb . getSet ( ) . contains ( 20 ) ) . isTrue ( ) ;
assertThat ( tb . getSet ( ) . contains ( 30 ) ) . isTrue ( ) ;
assertThat ( tb . getSet ( ) ) . isInstanceOf ( TreeSet . class ) ;
assertThat ( ( Set < Integer > ) tb . getSet ( ) ) . containsExactly ( 10 , 20 , 30 ) ;
pvs = new MutablePropertyValues ( ) ;
pvs . add ( "set" , null ) ;
@ -1386,7 +1384,7 @@ public class DataBinderTests {
@@ -1386,7 +1384,7 @@ public class DataBinderTests {
}
@Test
public void testB indingNullToEmptyCollection( ) {
void b indingNullToEmptyCollection( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( Set . class , new CustomCollectionEditor ( TreeSet . class , true ) ) ;
@ -1394,13 +1392,12 @@ public class DataBinderTests {
@@ -1394,13 +1392,12 @@ public class DataBinderTests {
pvs . add ( "set" , null ) ;
binder . bind ( pvs ) ;
boolean condition = tb . getSet ( ) instanceof TreeSet ;
assertThat ( condition ) . isTrue ( ) ;
assertThat ( tb . getSet ( ) . isEmpty ( ) ) . isTrue ( ) ;
assertThat ( tb . getSet ( ) ) . isInstanceOf ( TreeSet . class ) ;
assertThat ( tb . getSet ( ) ) . isEmpty ( ) ;
}
@Test
public void testB indingToIndexedField( ) {
void b indingToIndexedField( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( String . class , "array.name" , new PropertyEditorSupport ( ) {
@ -1439,7 +1436,7 @@ public class DataBinderTests {
@@ -1439,7 +1436,7 @@ public class DataBinderTests {
}
@Test
public void testB indingToNestedIndexedField( ) {
void b indingToNestedIndexedField( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
tb . getArray ( ) [ 0 ] . setNestedIndexedBean ( new IndexedTestBean ( ) ) ;
tb . getArray ( ) [ 1 ] . setNestedIndexedBean ( new IndexedTestBean ( ) ) ;
@ -1470,7 +1467,7 @@ public class DataBinderTests {
@@ -1470,7 +1467,7 @@ public class DataBinderTests {
}
@Test
public void t estE ditorForNestedIndexedField( ) {
void editorForNestedIndexedField ( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
tb . getArray ( ) [ 0 ] . setNestedIndexedBean ( new IndexedTestBean ( ) ) ;
tb . getArray ( ) [ 1 ] . setNestedIndexedBean ( new IndexedTestBean ( ) ) ;
@ -1496,7 +1493,7 @@ public class DataBinderTests {
@@ -1496,7 +1493,7 @@ public class DataBinderTests {
}
@Test
public void te stS pecificEditorForNestedIndexedField( ) {
void specificEditorForNestedIndexedField ( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
tb . getArray ( ) [ 0 ] . setNestedIndexedBean ( new IndexedTestBean ( ) ) ;
tb . getArray ( ) [ 1 ] . setNestedIndexedBean ( new IndexedTestBean ( ) ) ;
@ -1522,7 +1519,7 @@ public class DataBinderTests {
@@ -1522,7 +1519,7 @@ public class DataBinderTests {
}
@Test
public void testI nnerSpecificEditorForNestedIndexedField( ) {
void i nnerSpecificEditorForNestedIndexedField( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
tb . getArray ( ) [ 0 ] . setNestedIndexedBean ( new IndexedTestBean ( ) ) ;
tb . getArray ( ) [ 1 ] . setNestedIndexedBean ( new IndexedTestBean ( ) ) ;
@ -1548,7 +1545,7 @@ public class DataBinderTests {
@@ -1548,7 +1545,7 @@ public class DataBinderTests {
}
@Test
public void testD irectBindingToIndexedField( ) {
void d irectBindingToIndexedField( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( TestBean . class , "array" , new PropertyEditorSupport ( ) {
@ -1601,7 +1598,7 @@ public class DataBinderTests {
@@ -1601,7 +1598,7 @@ public class DataBinderTests {
}
@Test
public void testD irectBindingToEmptyIndexedFieldWithRegisteredSpecificEditor( ) {
void d irectBindingToEmptyIndexedFieldWithRegisteredSpecificEditor( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( TestBean . class , "map[key0]" , new PropertyEditorSupport ( ) {
@ -1632,7 +1629,7 @@ public class DataBinderTests {
@@ -1632,7 +1629,7 @@ public class DataBinderTests {
}
@Test
public void testD irectBindingToEmptyIndexedFieldWithRegisteredGenericEditor( ) {
void d irectBindingToEmptyIndexedFieldWithRegisteredGenericEditor( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( TestBean . class , "map" , new PropertyEditorSupport ( ) {
@ -1663,7 +1660,7 @@ public class DataBinderTests {
@@ -1663,7 +1660,7 @@ public class DataBinderTests {
}
@Test
public void testC ustomEditorWithSubclass( ) {
void c ustomEditorWithSubclass( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( TestBean . class , new PropertyEditorSupport ( ) {
@ -1697,7 +1694,7 @@ public class DataBinderTests {
@@ -1697,7 +1694,7 @@ public class DataBinderTests {
}
@Test
public void testB indToStringArrayWithArrayEditor( ) {
void b indToStringArrayWithArrayEditor( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( String [ ] . class , "stringArray" , new PropertyEditorSupport ( ) {
@ -1709,15 +1706,12 @@ public class DataBinderTests {
@@ -1709,15 +1706,12 @@ public class DataBinderTests {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . add ( "stringArray" , "a1-b2" ) ;
binder . bind ( pvs ) ;
boolean condition = ! binder . getBindingResult ( ) . hasErrors ( ) ;
assertThat ( condition ) . isTrue ( ) ;
assertThat ( tb . getStringArray ( ) . length ) . isEqualTo ( 2 ) ;
assertThat ( tb . getStringArray ( ) [ 0 ] ) . isEqualTo ( "a1" ) ;
assertThat ( tb . getStringArray ( ) [ 1 ] ) . isEqualTo ( "b2" ) ;
assertThat ( binder . getBindingResult ( ) . hasErrors ( ) ) . isFalse ( ) ;
assertThat ( tb . getStringArray ( ) ) . containsExactly ( "a1" , "b2" ) ;
}
@Test
public void testB indToStringArrayWithComponentEditor( ) {
void b indToStringArrayWithComponentEditor( ) {
TestBean tb = new TestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
binder . registerCustomEditor ( String . class , "stringArray" , new PropertyEditorSupport ( ) {
@ -1729,15 +1723,14 @@ public class DataBinderTests {
@@ -1729,15 +1723,14 @@ public class DataBinderTests {
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
pvs . add ( "stringArray" , new String [ ] { "a1" , "b2" } ) ;
binder . bind ( pvs ) ;
boolean condition = ! binder . getBindingResult ( ) . hasErrors ( ) ;
assertThat ( condition ) . isTrue ( ) ;
assertThat ( binder . getBindingResult ( ) . hasErrors ( ) ) . isFalse ( ) ;
assertThat ( tb . getStringArray ( ) . length ) . isEqualTo ( 2 ) ;
assertThat ( tb . getStringArray ( ) [ 0 ] ) . isEqualTo ( "Xa1" ) ;
assertThat ( tb . getStringArray ( ) [ 1 ] ) . isEqualTo ( "Xb2" ) ;
}
@Test
public void testB indingErrors( ) {
void b indingErrors( ) {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
@ -1764,7 +1757,7 @@ public class DataBinderTests {
@@ -1764,7 +1757,7 @@ public class DataBinderTests {
}
@Test
public void testA ddAllErrors( ) {
void a ddAllErrors( ) {
TestBean rod = new TestBean ( ) ;
DataBinder binder = new DataBinder ( rod , "person" ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
@ -1784,7 +1777,7 @@ public class DataBinderTests {
@@ -1784,7 +1777,7 @@ public class DataBinderTests {
@Test
@SuppressWarnings ( "unchecked" )
public void testB indingWithResortedList( ) {
void b indingWithResortedList( ) {
IndexedTestBean tb = new IndexedTestBean ( ) ;
DataBinder binder = new DataBinder ( tb , "tb" ) ;
MutablePropertyValues pvs = new MutablePropertyValues ( ) ;
@ -1802,7 +1795,7 @@ public class DataBinderTests {
@@ -1802,7 +1795,7 @@ public class DataBinderTests {
}
@Test
public void testR ejectWithoutDefaultMessage( ) {
void r ejectWithoutDefaultMessage( ) {
TestBean tb = new TestBean ( ) ;
tb . setName ( "myName" ) ;
tb . setAge ( 99 ) ;
@ -1820,7 +1813,7 @@ public class DataBinderTests {
@@ -1820,7 +1813,7 @@ public class DataBinderTests {
}
@Test
public void testB indExceptionSerializable( ) throws Exception {
void b indExceptionSerializable( ) throws Exception {
SerializablePerson tb = new SerializablePerson ( ) ;
tb . setName ( "myName" ) ;
tb . setAge ( 99 ) ;
@ -1849,27 +1842,27 @@ public class DataBinderTests {
@@ -1849,27 +1842,27 @@ public class DataBinderTests {
}
@Test
public void testT rackDisallowedFields ( ) {
void trackDisallowedFields ( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
binder . setAllowedFields ( "name" , "age" ) ;
String name = "Rob Harrop" ;
String beanName = "foobar" ;
int age = 42 ;
MutablePropertyValues mpvs = new MutablePropertyValues ( ) ;
mpvs . add ( "name" , name ) ;
mpvs . add ( "beanName" , beanName ) ;
mpvs . add ( "age" , age ) ;
mpvs . add ( "beanName" , "foobar" ) ;
binder . bind ( mpvs ) ;
assertThat ( testBean . getName ( ) ) . isEqualTo ( name ) ;
String [ ] disallowedFields = binder . getBindingResult ( ) . getSuppressedFields ( ) ;
assertThat ( disallowedFields . length ) . isEqualTo ( 1 ) ;
assertThat ( disallowedFields [ 0 ] ) . isEqualTo ( "beanName" ) ;
assertThat ( testBean . getAge ( ) ) . isEqualTo ( age ) ;
assertThat ( binder . getBindingResult ( ) . getSuppressedFields ( ) ) . containsExactly ( "beanName" ) ;
}
@Test
public void testA utoGrowWithinDefaultLimit( ) {
void a utoGrowWithinDefaultLimit( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
@ -1881,7 +1874,7 @@ public class DataBinderTests {
@@ -1881,7 +1874,7 @@ public class DataBinderTests {
}
@Test
public void testA utoGrowBeyondDefaultLimit( ) {
void a utoGrowBeyondDefaultLimit( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
@ -1893,7 +1886,7 @@ public class DataBinderTests {
@@ -1893,7 +1886,7 @@ public class DataBinderTests {
}
@Test
public void testA utoGrowWithinCustomLimit( ) {
void a utoGrowWithinCustomLimit( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
binder . setAutoGrowCollectionLimit ( 10 ) ;
@ -1906,7 +1899,7 @@ public class DataBinderTests {
@@ -1906,7 +1899,7 @@ public class DataBinderTests {
}
@Test
public void testA utoGrowBeyondCustomLimit( ) {
void a utoGrowBeyondCustomLimit( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
binder . setAutoGrowCollectionLimit ( 10 ) ;
@ -1919,7 +1912,7 @@ public class DataBinderTests {
@@ -1919,7 +1912,7 @@ public class DataBinderTests {
}
@Test
public void testN estedGrowingList( ) {
void n estedGrowingList( ) {
Form form = new Form ( ) ;
DataBinder binder = new DataBinder ( form , "form" ) ;
MutablePropertyValues mpv = new MutablePropertyValues ( ) ;
@ -1935,7 +1928,7 @@ public class DataBinderTests {
@@ -1935,7 +1928,7 @@ public class DataBinderTests {
}
@Test
public void testF ieldErrorAccessVariations( ) {
void f ieldErrorAccessVariations( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
assertThat ( binder . getBindingResult ( ) . getGlobalError ( ) ) . isNull ( ) ;
@ -1956,7 +1949,7 @@ public class DataBinderTests {
@@ -1956,7 +1949,7 @@ public class DataBinderTests {
}
@Test // SPR-14888
public void te stS etAutoGrowCollectionLimit( ) {
void setAutoGrowCollectionLimit ( ) {
BeanWithIntegerList tb = new BeanWithIntegerList ( ) ;
DataBinder binder = new DataBinder ( tb ) ;
binder . setAutoGrowCollectionLimit ( 257 ) ;
@ -1970,7 +1963,7 @@ public class DataBinderTests {
@@ -1970,7 +1963,7 @@ public class DataBinderTests {
}
@Test // SPR-14888
public void te stS etAutoGrowCollectionLimitAfterInitialization( ) {
void setAutoGrowCollectionLimitAfterInitialization ( ) {
DataBinder binder = new DataBinder ( new BeanWithIntegerList ( ) ) ;
binder . registerCustomEditor ( String . class , new StringTrimmerEditor ( true ) ) ;
assertThatIllegalStateException ( ) . isThrownBy ( ( ) - >
@ -1979,7 +1972,7 @@ public class DataBinderTests {
@@ -1979,7 +1972,7 @@ public class DataBinderTests {
}
@Test // SPR-15009
public void te stS etCustomMessageCodesResolverBeforeInitializeBindingResultForBeanPropertyAccess( ) {
void setCustomMessageCodesResolverBeforeInitializeBindingResultForBeanPropertyAccess ( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
DefaultMessageCodesResolver messageCodesResolver = new DefaultMessageCodesResolver ( ) ;
@ -1996,7 +1989,7 @@ public class DataBinderTests {
@@ -1996,7 +1989,7 @@ public class DataBinderTests {
}
@Test // SPR-15009
public void te stS etCustomMessageCodesResolverBeforeInitializeBindingResultForDirectFieldAccess( ) {
void setCustomMessageCodesResolverBeforeInitializeBindingResultForDirectFieldAccess ( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
DefaultMessageCodesResolver messageCodesResolver = new DefaultMessageCodesResolver ( ) ;
@ -2011,7 +2004,7 @@ public class DataBinderTests {
@@ -2011,7 +2004,7 @@ public class DataBinderTests {
}
@Test // SPR-15009
public void te stS etCustomMessageCodesResolverAfterInitializeBindingResult( ) {
void setCustomMessageCodesResolverAfterInitializeBindingResult ( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
binder . initBeanPropertyAccess ( ) ;
@ -2026,7 +2019,7 @@ public class DataBinderTests {
@@ -2026,7 +2019,7 @@ public class DataBinderTests {
}
@Test // SPR-15009
public void te stS etMessageCodesResolverIsNullAfterInitializeBindingResult( ) {
void setMessageCodesResolverIsNullAfterInitializeBindingResult ( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
binder . initBeanPropertyAccess ( ) ;
@ -2040,8 +2033,7 @@ public class DataBinderTests {
@@ -2040,8 +2033,7 @@ public class DataBinderTests {
}
@Test // SPR-15009
public void testCallSetMessageCodesResolverTwice ( ) {
void callSetMessageCodesResolverTwice ( ) {
TestBean testBean = new TestBean ( ) ;
DataBinder binder = new DataBinder ( testBean , "testBean" ) ;
binder . setMessageCodesResolver ( new DefaultMessageCodesResolver ( ) ) ;