2828
2929import org .springframework .beans .factory .config .ConfigurableListableBeanFactory ;
3030import org .springframework .beans .factory .support .DefaultListableBeanFactory ;
31- import org .springframework .boot .autoconfigure .freemarker .FreeMarkerAutoConfiguration ;
32- import org .springframework .boot .autoconfigure .thymeleaf .ThymeleafAutoConfiguration ;
3331import org .springframework .core .annotation .AliasFor ;
3432import org .springframework .core .io .DefaultResourceLoader ;
3533import org .springframework .core .type .AnnotationMetadata ;
@@ -58,20 +56,21 @@ void setup() {
5856 this .importSelector .setBeanFactory (this .beanFactory );
5957 this .importSelector .setEnvironment (this .environment );
6058 this .importSelector .setResourceLoader (new DefaultResourceLoader ());
59+ this .importSelector .setBeanClassLoader (Thread .currentThread ().getContextClassLoader ());
6160 }
6261
6362 @ Test
6463 void importsAreSelected () throws Exception {
65- AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportFreeMarker .class );
64+ AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportImported .class );
6665 String [] imports = this .importSelector .selectImports (annotationMetadata );
67- assertThat (imports ).containsExactly (FreeMarkerAutoConfiguration .class .getName ());
66+ assertThat (imports ).containsExactly (ImportedAutoConfiguration .class .getName ());
6867 }
6968
7069 @ Test
7170 void importsAreSelectedUsingClassesAttribute () throws Exception {
72- AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportFreeMarkerUsingClassesAttribute .class );
71+ AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportImportedUsingClassesAttribute .class );
7372 String [] imports = this .importSelector .selectImports (annotationMetadata );
74- assertThat (imports ).containsExactly (FreeMarkerAutoConfiguration .class .getName ());
73+ assertThat (imports ).containsExactly (ImportedAutoConfiguration .class .getName ());
7574 }
7675
7776 @ Test
@@ -95,39 +94,39 @@ void importsSelectedFromImportsFileIgnoreMissingOptionalClasses() throws Excepti
9594
9695 @ Test
9796 void propertyExclusionsAreApplied () throws IOException {
98- this .environment .setProperty ("spring.autoconfigure.exclude" , FreeMarkerAutoConfiguration .class .getName ());
97+ this .environment .setProperty ("spring.autoconfigure.exclude" , ImportedAutoConfiguration .class .getName ());
9998 AnnotationMetadata annotationMetadata = getAnnotationMetadata (MultipleImports .class );
10099 String [] imports = this .importSelector .selectImports (annotationMetadata );
101- assertThat (imports ).containsExactly (ThymeleafAutoConfiguration .class .getName ());
100+ assertThat (imports ).containsExactly (AnotherImportedAutoConfiguration .class .getName ());
102101 }
103102
104103 @ Test
105104 void multipleImportsAreFound () throws Exception {
106105 AnnotationMetadata annotationMetadata = getAnnotationMetadata (MultipleImports .class );
107106 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 ());
110109 }
111110
112111 @ Test
113112 void selfAnnotatingAnnotationDoesNotCauseStackOverflow () throws IOException {
114113 AnnotationMetadata annotationMetadata = getAnnotationMetadata (ImportWithSelfAnnotatingAnnotation .class );
115114 String [] imports = this .importSelector .selectImports (annotationMetadata );
116- assertThat (imports ).containsOnly (ThymeleafAutoConfiguration .class .getName ());
115+ assertThat (imports ).containsOnly (AnotherImportedAutoConfiguration .class .getName ());
117116 }
118117
119118 @ Test
120119 void exclusionsAreApplied () throws Exception {
121120 AnnotationMetadata annotationMetadata = getAnnotationMetadata (MultipleImportsWithExclusion .class );
122121 String [] imports = this .importSelector .selectImports (annotationMetadata );
123- assertThat (imports ).containsOnly (FreeMarkerAutoConfiguration .class .getName ());
122+ assertThat (imports ).containsOnly (ImportedAutoConfiguration .class .getName ());
124123 }
125124
126125 @ Test
127126 void exclusionsWithoutImport () throws Exception {
128127 AnnotationMetadata annotationMetadata = getAnnotationMetadata (ExclusionWithoutImport .class );
129128 String [] imports = this .importSelector .selectImports (annotationMetadata );
130- assertThat (imports ).containsOnly (FreeMarkerAutoConfiguration .class .getName ());
129+ assertThat (imports ).containsOnly (ImportedAutoConfiguration .class .getName ());
131130 }
132131
133132 @ Test
@@ -199,13 +198,13 @@ private AnnotationMetadata getAnnotationMetadata(Class<?> source) throws IOExcep
199198 return new SimpleMetadataReaderFactory ().getMetadataReader (source .getName ()).getAnnotationMetadata ();
200199 }
201200
202- @ ImportAutoConfiguration (FreeMarkerAutoConfiguration .class )
203- static class ImportFreeMarker {
201+ @ ImportAutoConfiguration (ImportedAutoConfiguration .class )
202+ static class ImportImported {
204203
205204 }
206205
207- @ ImportAutoConfiguration (classes = FreeMarkerAutoConfiguration .class )
208- static class ImportFreeMarkerUsingClassesAttribute {
206+ @ ImportAutoConfiguration (classes = ImportedAutoConfiguration .class )
207+ static class ImportImportedUsingClassesAttribute {
209208
210209 }
211210
@@ -217,13 +216,13 @@ static class MultipleImports {
217216
218217 @ ImportOne
219218 @ ImportTwo
220- @ ImportAutoConfiguration (exclude = ThymeleafAutoConfiguration .class )
219+ @ ImportAutoConfiguration (exclude = AnotherImportedAutoConfiguration .class )
221220 static class MultipleImportsWithExclusion {
222221
223222 }
224223
225224 @ ImportOne
226- @ ImportAutoConfiguration (exclude = ThymeleafAutoConfiguration .class )
225+ @ ImportAutoConfiguration (exclude = AnotherImportedAutoConfiguration .class )
227226 static class ExclusionWithoutImport {
228227
229228 }
@@ -233,19 +232,19 @@ static class ImportWithSelfAnnotatingAnnotation {
233232
234233 }
235234
236- @ SelfAnnotating (excludeAutoConfiguration = ThymeleafAutoConfiguration .class )
235+ @ SelfAnnotating (excludeAutoConfiguration = AnotherImportedAutoConfiguration .class )
237236 static class ImportWithSelfAnnotatingAnnotationExclude {
238237
239238 }
240239
241240 @ Retention (RetentionPolicy .RUNTIME )
242- @ ImportAutoConfiguration (FreeMarkerAutoConfiguration .class )
241+ @ ImportAutoConfiguration (ImportedAutoConfiguration .class )
243242 @interface ImportOne {
244243
245244 }
246245
247246 @ Retention (RetentionPolicy .RUNTIME )
248- @ ImportAutoConfiguration (ThymeleafAutoConfiguration .class )
247+ @ ImportAutoConfiguration (AnotherImportedAutoConfiguration .class )
249248 @interface ImportTwo {
250249
251250 }
@@ -274,25 +273,25 @@ static class ImportAutoConfigurationWithUnrelatedTwo {
274273
275274 }
276275
277- @ ImportAutoConfiguration (classes = ThymeleafAutoConfiguration .class )
276+ @ ImportAutoConfiguration (classes = AnotherImportedAutoConfiguration .class )
278277 @ UnrelatedOne
279278 static class ImportAutoConfigurationWithItemsOne {
280279
281280 }
282281
283- @ ImportAutoConfiguration (classes = ThymeleafAutoConfiguration .class )
282+ @ ImportAutoConfiguration (classes = AnotherImportedAutoConfiguration .class )
284283 @ UnrelatedTwo
285284 static class ImportAutoConfigurationWithItemsTwo {
286285
287286 }
288287
289- @ MetaImportAutoConfiguration (exclude = ThymeleafAutoConfiguration .class )
288+ @ MetaImportAutoConfiguration (exclude = AnotherImportedAutoConfiguration .class )
290289 @ UnrelatedOne
291290 static class ImportMetaAutoConfigurationExcludeWithUnrelatedOne {
292291
293292 }
294293
295- @ MetaImportAutoConfiguration (exclude = ThymeleafAutoConfiguration .class )
294+ @ MetaImportAutoConfiguration (exclude = AnotherImportedAutoConfiguration .class )
296295 @ UnrelatedTwo
297296 static class ImportMetaAutoConfigurationExcludeWithUnrelatedTwo {
298297
@@ -320,7 +319,7 @@ Class<?>[] exclude() default {
320319 }
321320
322321 @ Retention (RetentionPolicy .RUNTIME )
323- @ ImportAutoConfiguration (ThymeleafAutoConfiguration .class )
322+ @ ImportAutoConfiguration (AnotherImportedAutoConfiguration .class )
324323 @ SelfAnnotating
325324 @interface SelfAnnotating {
326325
@@ -348,8 +347,8 @@ static class TestImportAutoConfigurationImportSelector extends ImportAutoConfigu
348347 @ Override
349348 protected Collection <String > loadFactoryNames (Class <?> source ) {
350349 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 ());
353352 }
354353 return super .loadFactoryNames (source );
355354 }
0 commit comments