16
16
17
17
package org .springframework .context .annotation ;
18
18
19
- import static org .mockito .Matchers .any ;
20
- import static org .mockito .Matchers .eq ;
21
- import static org .mockito .Mockito .inOrder ;
22
- import static org .mockito .Mockito .spy ;
23
-
24
19
import java .lang .annotation .ElementType ;
25
20
import java .lang .annotation .Retention ;
26
21
import java .lang .annotation .RetentionPolicy ;
27
22
import java .lang .annotation .Target ;
28
23
29
24
import org .junit .Test ;
30
25
import org .mockito .InOrder ;
26
+ import org .springframework .beans .BeansException ;
27
+ import org .springframework .beans .factory .BeanClassLoaderAware ;
28
+ import org .springframework .beans .factory .BeanFactory ;
29
+ import org .springframework .beans .factory .BeanFactoryAware ;
31
30
import org .springframework .beans .factory .config .BeanDefinition ;
32
31
import org .springframework .beans .factory .support .DefaultListableBeanFactory ;
32
+ import org .springframework .context .EnvironmentAware ;
33
+ import org .springframework .context .MessageSource ;
34
+ import org .springframework .context .ResourceLoaderAware ;
35
+ import org .springframework .context .annotation .ImportBeanDefinitionRegistrarTests .SampleRegistrar ;
33
36
import org .springframework .core .Ordered ;
34
37
import org .springframework .core .annotation .Order ;
38
+ import org .springframework .core .env .Environment ;
39
+ import org .springframework .core .io .ResourceLoader ;
35
40
import org .springframework .core .type .AnnotationMetadata ;
36
41
42
+ import static org .hamcrest .CoreMatchers .*;
43
+ import static org .junit .Assert .*;
44
+ import static org .mockito .Matchers .*;
45
+ import static org .mockito .Mockito .*;
46
+
37
47
/**
38
48
* Tests for {@link ImportSelector} and {@link DeferredImportSelector}.
39
49
*
@@ -50,10 +60,62 @@ public void importSelectors() {
50
60
context .refresh ();
51
61
context .getBean (Config .class );
52
62
InOrder ordered = inOrder (beanFactory );
53
- ordered .verify (beanFactory ).registerBeanDefinition (eq ("a" ), any (BeanDefinition .class ));
54
- ordered .verify (beanFactory ).registerBeanDefinition (eq ("b" ), any (BeanDefinition .class ));
55
- ordered .verify (beanFactory ).registerBeanDefinition (eq ("d" ), any (BeanDefinition .class ));
56
- ordered .verify (beanFactory ).registerBeanDefinition (eq ("c" ), any (BeanDefinition .class ));
63
+ ordered .verify (beanFactory ).registerBeanDefinition (eq ("a" ), (BeanDefinition ) anyObject ());
64
+ ordered .verify (beanFactory ).registerBeanDefinition (eq ("b" ), (BeanDefinition ) anyObject ());
65
+ ordered .verify (beanFactory ).registerBeanDefinition (eq ("d" ), (BeanDefinition ) anyObject ());
66
+ ordered .verify (beanFactory ).registerBeanDefinition (eq ("c" ), (BeanDefinition ) anyObject ());
67
+ }
68
+
69
+ @ Test
70
+ public void invokeAwareMethodsInImportSelector () {
71
+
72
+ AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext (AwareConfig .class );
73
+ context .getBean (MessageSource .class );
74
+
75
+ assertThat (SampleRegistrar .beanFactory , is ((BeanFactory ) context .getBeanFactory ()));
76
+ assertThat (SampleRegistrar .classLoader , is (context .getBeanFactory ().getBeanClassLoader ()));
77
+ assertThat (SampleRegistrar .resourceLoader , is (notNullValue ()));
78
+ assertThat (SampleRegistrar .environment , is ((Environment ) context .getEnvironment ()));
79
+ }
80
+
81
+ @ Configuration
82
+ @ Import (SampleImportSelector .class )
83
+ static class AwareConfig {
84
+
85
+ }
86
+
87
+ static class SampleImportSelector implements ImportSelector , BeanClassLoaderAware , ResourceLoaderAware ,
88
+ BeanFactoryAware , EnvironmentAware {
89
+
90
+ static ClassLoader classLoader ;
91
+ static ResourceLoader resourceLoader ;
92
+ static BeanFactory beanFactory ;
93
+ static Environment environment ;
94
+
95
+ @ Override
96
+ public void setBeanClassLoader (ClassLoader classLoader ) {
97
+ SampleRegistrar .classLoader = classLoader ;
98
+ }
99
+
100
+ @ Override
101
+ public void setBeanFactory (BeanFactory beanFactory ) throws BeansException {
102
+ SampleRegistrar .beanFactory = beanFactory ;
103
+ }
104
+
105
+ @ Override
106
+ public void setResourceLoader (ResourceLoader resourceLoader ) {
107
+ SampleRegistrar .resourceLoader = resourceLoader ;
108
+ }
109
+
110
+ @ Override
111
+ public void setEnvironment (Environment environment ) {
112
+ SampleRegistrar .environment = environment ;
113
+ }
114
+
115
+ @ Override
116
+ public String [] selectImports (AnnotationMetadata importingClassMetadata ) {
117
+ return new String [] {};
118
+ }
57
119
}
58
120
59
121
@ Sample
0 commit comments