28
28
29
29
import org .springframework .beans .factory .config .ConfigurableListableBeanFactory ;
30
30
import org .springframework .beans .factory .support .DefaultListableBeanFactory ;
31
- import org .springframework .boot .autoconfigure .freemarker .FreeMarkerAutoConfiguration ;
32
- import org .springframework .boot .autoconfigure .thymeleaf .ThymeleafAutoConfiguration ;
33
31
import org .springframework .core .annotation .AliasFor ;
34
32
import org .springframework .core .io .DefaultResourceLoader ;
35
33
import org .springframework .core .type .AnnotationMetadata ;
@@ -58,20 +56,21 @@ void setup() {
58
56
this .importSelector .setBeanFactory (this .beanFactory );
59
57
this .importSelector .setEnvironment (this .environment );
60
58
this .importSelector .setResourceLoader (new DefaultResourceLoader ());
59
+ this .importSelector .setBeanClassLoader (Thread .currentThread ().getContextClassLoader ());
61
60
}
62
61
63
62
@ Test
64
63
void importsAreSelected () throws Exception {
65
- AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportFreeMarker .class );
64
+ AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportImported .class );
66
65
String [] imports = this .importSelector .selectImports (annotationMetadata );
67
- assertThat (imports ).containsExactly (FreeMarkerAutoConfiguration .class .getName ());
66
+ assertThat (imports ).containsExactly (ImportedAutoConfiguration .class .getName ());
68
67
}
69
68
70
69
@ Test
71
70
void importsAreSelectedUsingClassesAttribute () throws Exception {
72
- AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportFreeMarkerUsingClassesAttribute .class );
71
+ AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportImportedUsingClassesAttribute .class );
73
72
String [] imports = this .importSelector .selectImports (annotationMetadata );
74
- assertThat (imports ).containsExactly (FreeMarkerAutoConfiguration .class .getName ());
73
+ assertThat (imports ).containsExactly (ImportedAutoConfiguration .class .getName ());
75
74
}
76
75
77
76
@ Test
@@ -95,39 +94,39 @@ void importsSelectedFromImportsFileIgnoreMissingOptionalClasses() throws Excepti
95
94
96
95
@ Test
97
96
void propertyExclusionsAreApplied () throws IOException {
98
- this .environment .setProperty ("spring.autoconfigure.exclude" , FreeMarkerAutoConfiguration .class .getName ());
97
+ this .environment .setProperty ("spring.autoconfigure.exclude" , ImportedAutoConfiguration .class .getName ());
99
98
AnnotationMetadata annotationMetadata = getAnnotationMetadata (MultipleImports .class );
100
99
String [] imports = this .importSelector .selectImports (annotationMetadata );
101
- assertThat (imports ).containsExactly (ThymeleafAutoConfiguration .class .getName ());
100
+ assertThat (imports ).containsExactly (AnotherImportedAutoConfiguration .class .getName ());
102
101
}
103
102
104
103
@ Test
105
104
void multipleImportsAreFound () throws Exception {
106
105
AnnotationMetadata annotationMetadata = getAnnotationMetadata (MultipleImports .class );
107
106
String [] imports = this .importSelector .selectImports (annotationMetadata );
108
- assertThat (imports ).containsOnly (FreeMarkerAutoConfiguration .class .getName (),
109
- ThymeleafAutoConfiguration .class .getName ());
107
+ assertThat (imports ).containsOnly (ImportedAutoConfiguration .class .getName (),
108
+ AnotherImportedAutoConfiguration .class .getName ());
110
109
}
111
110
112
111
@ Test
113
112
void selfAnnotatingAnnotationDoesNotCauseStackOverflow () throws IOException {
114
113
AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportWithSelfAnnotatingAnnotation .class );
115
114
String [] imports = this .importSelector .selectImports (annotationMetadata );
116
- assertThat (imports ).containsOnly (ThymeleafAutoConfiguration .class .getName ());
115
+ assertThat (imports ).containsOnly (AnotherImportedAutoConfiguration .class .getName ());
117
116
}
118
117
119
118
@ Test
120
119
void exclusionsAreApplied () throws Exception {
121
120
AnnotationMetadata annotationMetadata = getAnnotationMetadata (MultipleImportsWithExclusion .class );
122
121
String [] imports = this .importSelector .selectImports (annotationMetadata );
123
- assertThat (imports ).containsOnly (FreeMarkerAutoConfiguration .class .getName ());
122
+ assertThat (imports ).containsOnly (ImportedAutoConfiguration .class .getName ());
124
123
}
125
124
126
125
@ Test
127
126
void exclusionsWithoutImport () throws Exception {
128
127
AnnotationMetadata annotationMetadata = getAnnotationMetadata (ExclusionWithoutImport .class );
129
128
String [] imports = this .importSelector .selectImports (annotationMetadata );
130
- assertThat (imports ).containsOnly (FreeMarkerAutoConfiguration .class .getName ());
129
+ assertThat (imports ).containsOnly (ImportedAutoConfiguration .class .getName ());
131
130
}
132
131
133
132
@ Test
@@ -199,13 +198,13 @@ private AnnotationMetadata getAnnotationMetadata(Class<?> source) throws IOExcep
199
198
return new SimpleMetadataReaderFactory ().getMetadataReader (source .getName ()).getAnnotationMetadata ();
200
199
}
201
200
202
- @ ImportAutoConfiguration (FreeMarkerAutoConfiguration .class )
203
- static class ImportFreeMarker {
201
+ @ ImportAutoConfiguration (ImportedAutoConfiguration .class )
202
+ static class ImportImported {
204
203
205
204
}
206
205
207
- @ ImportAutoConfiguration (classes = FreeMarkerAutoConfiguration .class )
208
- static class ImportFreeMarkerUsingClassesAttribute {
206
+ @ ImportAutoConfiguration (classes = ImportedAutoConfiguration .class )
207
+ static class ImportImportedUsingClassesAttribute {
209
208
210
209
}
211
210
@@ -217,13 +216,13 @@ static class MultipleImports {
217
216
218
217
@ ImportOne
219
218
@ ImportTwo
220
- @ ImportAutoConfiguration (exclude = ThymeleafAutoConfiguration .class )
219
+ @ ImportAutoConfiguration (exclude = AnotherImportedAutoConfiguration .class )
221
220
static class MultipleImportsWithExclusion {
222
221
223
222
}
224
223
225
224
@ ImportOne
226
- @ ImportAutoConfiguration (exclude = ThymeleafAutoConfiguration .class )
225
+ @ ImportAutoConfiguration (exclude = AnotherImportedAutoConfiguration .class )
227
226
static class ExclusionWithoutImport {
228
227
229
228
}
@@ -233,19 +232,19 @@ static class ImportWithSelfAnnotatingAnnotation {
233
232
234
233
}
235
234
236
- @ SelfAnnotating (excludeAutoConfiguration = ThymeleafAutoConfiguration .class )
235
+ @ SelfAnnotating (excludeAutoConfiguration = AnotherImportedAutoConfiguration .class )
237
236
static class ImportWithSelfAnnotatingAnnotationExclude {
238
237
239
238
}
240
239
241
240
@ Retention (RetentionPolicy .RUNTIME )
242
- @ ImportAutoConfiguration (FreeMarkerAutoConfiguration .class )
241
+ @ ImportAutoConfiguration (ImportedAutoConfiguration .class )
243
242
@interface ImportOne {
244
243
245
244
}
246
245
247
246
@ Retention (RetentionPolicy .RUNTIME )
248
- @ ImportAutoConfiguration (ThymeleafAutoConfiguration .class )
247
+ @ ImportAutoConfiguration (AnotherImportedAutoConfiguration .class )
249
248
@interface ImportTwo {
250
249
251
250
}
@@ -274,25 +273,25 @@ static class ImportAutoConfigurationWithUnrelatedTwo {
274
273
275
274
}
276
275
277
- @ ImportAutoConfiguration (classes = ThymeleafAutoConfiguration .class )
276
+ @ ImportAutoConfiguration (classes = AnotherImportedAutoConfiguration .class )
278
277
@ UnrelatedOne
279
278
static class ImportAutoConfigurationWithItemsOne {
280
279
281
280
}
282
281
283
- @ ImportAutoConfiguration (classes = ThymeleafAutoConfiguration .class )
282
+ @ ImportAutoConfiguration (classes = AnotherImportedAutoConfiguration .class )
284
283
@ UnrelatedTwo
285
284
static class ImportAutoConfigurationWithItemsTwo {
286
285
287
286
}
288
287
289
- @ MetaImportAutoConfiguration (exclude = ThymeleafAutoConfiguration .class )
288
+ @ MetaImportAutoConfiguration (exclude = AnotherImportedAutoConfiguration .class )
290
289
@ UnrelatedOne
291
290
static class ImportMetaAutoConfigurationExcludeWithUnrelatedOne {
292
291
293
292
}
294
293
295
- @ MetaImportAutoConfiguration (exclude = ThymeleafAutoConfiguration .class )
294
+ @ MetaImportAutoConfiguration (exclude = AnotherImportedAutoConfiguration .class )
296
295
@ UnrelatedTwo
297
296
static class ImportMetaAutoConfigurationExcludeWithUnrelatedTwo {
298
297
@@ -320,7 +319,7 @@ Class<?>[] exclude() default {
320
319
}
321
320
322
321
@ Retention (RetentionPolicy .RUNTIME )
323
- @ ImportAutoConfiguration (ThymeleafAutoConfiguration .class )
322
+ @ ImportAutoConfiguration (AnotherImportedAutoConfiguration .class )
324
323
@ SelfAnnotating
325
324
@interface SelfAnnotating {
326
325
@@ -348,8 +347,8 @@ static class TestImportAutoConfigurationImportSelector extends ImportAutoConfigu
348
347
@ Override
349
348
protected Collection <String > loadFactoryNames (Class <?> source ) {
350
349
if (source == MetaImportAutoConfiguration .class ) {
351
- return Arrays .asList (ThymeleafAutoConfiguration .class .getName (),
352
- FreeMarkerAutoConfiguration .class .getName ());
350
+ return Arrays .asList (AnotherImportedAutoConfiguration .class .getName (),
351
+ ImportedAutoConfiguration .class .getName ());
353
352
}
354
353
return super .loadFactoryNames (source );
355
354
}
0 commit comments