24
24
import java .net .MalformedURLException ;
25
25
import java .text .NumberFormat ;
26
26
import java .text .ParseException ;
27
+ import java .time .Duration ;
27
28
import java .util .ArrayList ;
28
29
import java .util .HashSet ;
29
30
import java .util .Iterator ;
@@ -666,13 +667,13 @@ void possibleMatches() {
666
667
bd .setPropertyValues (pvs );
667
668
lbf .registerBeanDefinition ("tb" , bd );
668
669
669
- assertThatExceptionOfType (BeanCreationException .class ).as ("invalid property" ). isThrownBy (() ->
670
- lbf .getBean ("tb" ))
671
- .withCauseInstanceOf (NotWritablePropertyException .class )
672
- .satisfies (ex -> {
673
- NotWritablePropertyException cause = (NotWritablePropertyException ) ex .getCause ();
674
- assertThat (cause .getPossibleMatches ()).containsExactly ("age" );
675
- });
670
+ assertThatExceptionOfType (BeanCreationException .class ).as ("invalid property" )
671
+ . isThrownBy (() -> lbf .getBean ("tb" ))
672
+ .withCauseInstanceOf (NotWritablePropertyException .class )
673
+ .satisfies (ex -> {
674
+ NotWritablePropertyException cause = (NotWritablePropertyException ) ex .getCause ();
675
+ assertThat (cause .getPossibleMatches ()).containsExactly ("age" );
676
+ });
676
677
}
677
678
678
679
@ Test
@@ -720,9 +721,9 @@ void prototypeCircleLeadsToException() {
720
721
p .setProperty ("rod.spouse" , "*kerry" );
721
722
registerBeanDefinitions (p );
722
723
723
- assertThatExceptionOfType (BeanCreationException .class ). isThrownBy (() ->
724
- lbf .getBean ("kerry" ))
725
- .satisfies (ex -> assertThat (ex .contains (BeanCurrentlyInCreationException .class )).isTrue ());
724
+ assertThatExceptionOfType (BeanCreationException .class )
725
+ . isThrownBy (() -> lbf .getBean ("kerry" ))
726
+ .satisfies (ex -> assertThat (ex .contains (BeanCurrentlyInCreationException .class )).isTrue ());
726
727
}
727
728
728
729
@ Test
@@ -903,16 +904,16 @@ void beanDefinitionOverridingNotAllowed() {
903
904
lbf .registerBeanDefinition ("test" , oldDef );
904
905
lbf .registerAlias ("test" , "testX" );
905
906
906
- assertThatExceptionOfType (BeanDefinitionOverrideException .class ). isThrownBy (() ->
907
- lbf .registerBeanDefinition ("test" , newDef ))
907
+ assertThatExceptionOfType (BeanDefinitionOverrideException .class )
908
+ . isThrownBy (() -> lbf .registerBeanDefinition ("test" , newDef ))
908
909
.satisfies (ex -> {
909
910
assertThat (ex .getBeanName ()).isEqualTo ("test" );
910
911
assertThat (ex .getBeanDefinition ()).isEqualTo (newDef );
911
912
assertThat (ex .getExistingDefinition ()).isEqualTo (oldDef );
912
913
});
913
914
914
- assertThatExceptionOfType (BeanDefinitionOverrideException .class ). isThrownBy (() ->
915
- lbf .registerBeanDefinition ("testX" , newDef ))
915
+ assertThatExceptionOfType (BeanDefinitionOverrideException .class )
916
+ . isThrownBy (() -> lbf .registerBeanDefinition ("testX" , newDef ))
916
917
.satisfies (ex -> {
917
918
assertThat (ex .getBeanName ()).isEqualTo ("testX" );
918
919
assertThat (ex .getBeanDefinition ()).isEqualTo (newDef );
@@ -1320,6 +1321,29 @@ void expressionInStringArray() {
1320
1321
assertThat (properties .getProperty ("foo" )).isEqualTo ("bar" );
1321
1322
}
1322
1323
1324
+ @ Test
1325
+ void withOverloadedSetters () {
1326
+ RootBeanDefinition rbd = new RootBeanDefinition (SetterOverload .class );
1327
+ rbd .getPropertyValues ().add ("object" , "a String" );
1328
+ lbf .registerBeanDefinition ("overloaded" , rbd );
1329
+ assertThat (lbf .getBean (SetterOverload .class ).getObject ()).isEqualTo ("a String" );
1330
+
1331
+ rbd = new RootBeanDefinition (SetterOverload .class );
1332
+ rbd .getPropertyValues ().add ("object" , 1000 );
1333
+ lbf .registerBeanDefinition ("overloaded" , rbd );
1334
+ assertThat (lbf .getBean (SetterOverload .class ).getObject ()).isEqualTo ("1000" );
1335
+
1336
+ rbd = new RootBeanDefinition (SetterOverload .class );
1337
+ rbd .getPropertyValues ().add ("value" , 1000 );
1338
+ lbf .registerBeanDefinition ("overloaded" , rbd );
1339
+ assertThat (lbf .getBean (SetterOverload .class ).getObject ()).isEqualTo ("1000i" );
1340
+
1341
+ rbd = new RootBeanDefinition (SetterOverload .class );
1342
+ rbd .getPropertyValues ().add ("value" , Duration .ofSeconds (1000 ));
1343
+ lbf .registerBeanDefinition ("overloaded" , rbd );
1344
+ assertThat (lbf .getBean (SetterOverload .class ).getObject ()).isEqualTo ("1000s" );
1345
+ }
1346
+
1323
1347
@ Test
1324
1348
void autowireWithNoDependencies () {
1325
1349
RootBeanDefinition bd = new RootBeanDefinition (TestBean .class );
@@ -3219,6 +3243,7 @@ public Class<?> getObjectType() {
3219
3243
}
3220
3244
}
3221
3245
3246
+
3222
3247
public record City (String name ) {}
3223
3248
3224
3249
public static class CityRepository implements Repository <City , Long > {}
@@ -3328,6 +3353,32 @@ public Resource[] getResourceArray() {
3328
3353
}
3329
3354
3330
3355
3356
+ public static class SetterOverload {
3357
+
3358
+ public String value ;
3359
+
3360
+ public void setObject (Integer length ) {
3361
+ this .value = length + "i" ;
3362
+ }
3363
+
3364
+ public void setObject (String object ) {
3365
+ this .value = object ;
3366
+ }
3367
+
3368
+ public String getObject () {
3369
+ return this .value ;
3370
+ }
3371
+
3372
+ public void setValue (int length ) {
3373
+ this .value = length + "i" ;
3374
+ }
3375
+
3376
+ public void setValue (Duration duration ) {
3377
+ this .value = duration .getSeconds () + "s" ;
3378
+ }
3379
+ }
3380
+
3381
+
3331
3382
/**
3332
3383
* Bean with a dependency on a {@link FactoryBean}.
3333
3384
*/
@@ -3475,6 +3526,7 @@ public NonPublicEnum getNonPublicEnum() {
3475
3526
}
3476
3527
}
3477
3528
3529
+
3478
3530
@ Order
3479
3531
private static class LowestPrecedenceTestBeanFactoryBean implements FactoryBean <TestBean > {
3480
3532
@@ -3487,9 +3539,9 @@ public TestBean getObject() {
3487
3539
public Class <?> getObjectType () {
3488
3540
return TestBean .class ;
3489
3541
}
3490
-
3491
3542
}
3492
3543
3544
+
3493
3545
@ Order (Ordered .HIGHEST_PRECEDENCE )
3494
3546
private static class HighestPrecedenceTestBeanFactoryBean implements FactoryBean <TestBean > {
3495
3547
@@ -3502,7 +3554,6 @@ public TestBean getObject() {
3502
3554
public Class <?> getObjectType () {
3503
3555
return TestBean .class ;
3504
3556
}
3505
-
3506
3557
}
3507
3558
3508
3559
}
0 commit comments