29
29
import java .util .HashSet ;
30
30
import java .util .LinkedHashMap ;
31
31
import java .util .LinkedHashSet ;
32
+ import java .util .LinkedList ;
32
33
import java .util .List ;
33
34
import java .util .Map ;
34
35
import java .util .Properties ;
@@ -920,7 +921,7 @@ public void testConstructorInjectionWithPlainMapAsBean() {
920
921
RootBeanDefinition tbm = new RootBeanDefinition (CollectionFactoryMethods .class );
921
922
tbm .setUniqueFactoryMethodName ("testBeanMap" );
922
923
bf .registerBeanDefinition ("myTestBeanMap" , tbm );
923
- bf .registerSingleton ("otherMap" , new HashMap <Object , Object >());
924
+ bf .registerSingleton ("otherMap" , new HashMap <>());
924
925
925
926
MapConstructorInjectionBean bean = (MapConstructorInjectionBean ) bf .getBean ("annotatedBean" );
926
927
assertSame (bf .getBean ("myTestBeanMap" ), bean .getTestBeanMap ());
@@ -942,7 +943,7 @@ public void testConstructorInjectionWithTypedSetAsBean() {
942
943
tbs .add (new TestBean ("tb1" ));
943
944
tbs .add (new TestBean ("tb2" ));
944
945
bf .registerSingleton ("testBeans" , tbs );
945
- bf .registerSingleton ("otherSet" , new HashSet <Object >());
946
+ bf .registerSingleton ("otherSet" , new HashSet <>());
946
947
947
948
SetConstructorInjectionBean bean = (SetConstructorInjectionBean ) bf .getBean ("annotatedBean" );
948
949
assertSame (tbs , bean .getTestBeanSet ());
@@ -963,7 +964,7 @@ public void testConstructorInjectionWithPlainSetAsBean() {
963
964
RootBeanDefinition tbs = new RootBeanDefinition (CollectionFactoryMethods .class );
964
965
tbs .setUniqueFactoryMethodName ("testBeanSet" );
965
966
bf .registerBeanDefinition ("myTestBeanSet" , tbs );
966
- bf .registerSingleton ("otherSet" , new HashSet <Object >());
967
+ bf .registerSingleton ("otherSet" , new HashSet <>());
967
968
968
969
SetConstructorInjectionBean bean = (SetConstructorInjectionBean ) bf .getBean ("annotatedBean" );
969
970
assertSame (bf .getBean ("myTestBeanSet" ), bean .getTestBeanSet ());
@@ -978,11 +979,59 @@ public void testSelfReference() {
978
979
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
979
980
bpp .setBeanFactory (bf );
980
981
bf .addBeanPostProcessor (bpp );
981
- RootBeanDefinition bd = new RootBeanDefinition (SelfInjectionBean .class );
982
- bf .registerBeanDefinition ("annotatedBean" , bd );
982
+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (SelfInjectionBean .class ));
983
+
984
+ SelfInjectionBean bean = (SelfInjectionBean ) bf .getBean ("annotatedBean" );
985
+ assertSame (bean , bean .reference );
986
+ assertNull (bean .referenceCollection );
987
+ }
988
+
989
+ @ Test
990
+ public void testSelfReferenceWithOther () {
991
+ DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
992
+ bf .setAutowireCandidateResolver (new QualifierAnnotationAutowireCandidateResolver ());
993
+ AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
994
+ bpp .setBeanFactory (bf );
995
+ bf .addBeanPostProcessor (bpp );
996
+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (SelfInjectionBean .class ));
997
+ bf .registerBeanDefinition ("annotatedBean2" , new RootBeanDefinition (SelfInjectionBean .class ));
983
998
984
999
SelfInjectionBean bean = (SelfInjectionBean ) bf .getBean ("annotatedBean" );
985
- assertSame (bean , bean .selfReference );
1000
+ SelfInjectionBean bean2 = (SelfInjectionBean ) bf .getBean ("annotatedBean2" );
1001
+ assertSame (bean2 , bean .reference );
1002
+ assertEquals (1 , bean .referenceCollection .size ());
1003
+ assertSame (bean2 , bean .referenceCollection .get (0 ));
1004
+ }
1005
+
1006
+ @ Test
1007
+ public void testSelfReferenceCollection () {
1008
+ DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
1009
+ bf .setAutowireCandidateResolver (new QualifierAnnotationAutowireCandidateResolver ());
1010
+ AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
1011
+ bpp .setBeanFactory (bf );
1012
+ bf .addBeanPostProcessor (bpp );
1013
+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (SelfInjectionCollectionBean .class ));
1014
+
1015
+ SelfInjectionCollectionBean bean = (SelfInjectionCollectionBean ) bf .getBean ("annotatedBean" );
1016
+ assertSame (bean , bean .reference );
1017
+ assertNull (bean .referenceCollection );
1018
+ }
1019
+
1020
+ @ Test
1021
+ public void testSelfReferenceCollectionWithOther () {
1022
+ DefaultListableBeanFactory bf = new DefaultListableBeanFactory ();
1023
+ bf .setAutowireCandidateResolver (new QualifierAnnotationAutowireCandidateResolver ());
1024
+ AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor ();
1025
+ bpp .setBeanFactory (bf );
1026
+ bf .addBeanPostProcessor (bpp );
1027
+ bf .registerBeanDefinition ("annotatedBean" , new RootBeanDefinition (SelfInjectionCollectionBean .class ));
1028
+ bf .registerBeanDefinition ("annotatedBean2" , new RootBeanDefinition (SelfInjectionCollectionBean .class ));
1029
+
1030
+ SelfInjectionCollectionBean bean = (SelfInjectionCollectionBean ) bf .getBean ("annotatedBean" );
1031
+ SelfInjectionCollectionBean bean2 = (SelfInjectionCollectionBean ) bf .getBean ("annotatedBean2" );
1032
+ assertSame (bean2 , bean .reference );
1033
+ assertSame (1 , bean2 .referenceCollection .size ());
1034
+ assertSame (bean2 , bean .referenceCollection .get (0 ));
986
1035
}
987
1036
988
1037
@ Test
@@ -2582,7 +2631,21 @@ public Set<TestBean> getTestBeanSet() {
2582
2631
public static class SelfInjectionBean {
2583
2632
2584
2633
@ Autowired
2585
- public SelfInjectionBean selfReference ;
2634
+ public SelfInjectionBean reference ;
2635
+
2636
+ @ Autowired (required = false )
2637
+ public List <SelfInjectionBean > referenceCollection ;
2638
+ }
2639
+
2640
+
2641
+ @ SuppressWarnings ("serial" )
2642
+ public static class SelfInjectionCollectionBean extends LinkedList <SelfInjectionCollectionBean > {
2643
+
2644
+ @ Autowired
2645
+ public SelfInjectionCollectionBean reference ;
2646
+
2647
+ @ Autowired (required = false )
2648
+ public List <SelfInjectionCollectionBean > referenceCollection ;
2586
2649
}
2587
2650
2588
2651
@@ -3149,7 +3212,7 @@ public static GenericInterface1<String> create() {
3149
3212
}
3150
3213
3151
3214
public static GenericInterface1 <String > createErased () {
3152
- return new GenericInterface1Impl <String >();
3215
+ return new GenericInterface1Impl <>();
3153
3216
}
3154
3217
3155
3218
@ SuppressWarnings ("rawtypes" )
@@ -3336,14 +3399,14 @@ public ProvidedArgumentBean(String[] args) {
3336
3399
public static class CollectionFactoryMethods {
3337
3400
3338
3401
public static Map <String , TestBean > testBeanMap () {
3339
- Map <String , TestBean > tbm = new LinkedHashMap <String , TestBean >();
3402
+ Map <String , TestBean > tbm = new LinkedHashMap <>();
3340
3403
tbm .put ("testBean1" , new TestBean ("tb1" ));
3341
3404
tbm .put ("testBean2" , new TestBean ("tb2" ));
3342
3405
return tbm ;
3343
3406
}
3344
3407
3345
3408
public static Set <TestBean > testBeanSet () {
3346
- Set <TestBean > tbs = new LinkedHashSet <TestBean >();
3409
+ Set <TestBean > tbs = new LinkedHashSet <>();
3347
3410
tbs .add (new TestBean ("tb1" ));
3348
3411
tbs .add (new TestBean ("tb2" ));
3349
3412
return tbs ;
0 commit comments