|
37 | 37 | import org.springframework.aot.hint.predicate.RuntimeHintsPredicates; |
38 | 38 | import org.springframework.aot.test.generate.TestGenerationContext; |
39 | 39 | import org.springframework.beans.factory.aot.BeanRegistrationAotContribution; |
| 40 | +import org.springframework.beans.factory.config.BeanDefinition; |
40 | 41 | import org.springframework.beans.factory.support.DefaultListableBeanFactory; |
41 | 42 | import org.springframework.beans.factory.support.RegisteredBean; |
42 | | -import org.springframework.beans.factory.support.RootBeanDefinition; |
43 | 43 | import org.springframework.core.OverridingClassLoader; |
44 | 44 | import org.springframework.lang.Nullable; |
45 | 45 |
|
|
52 | 52 | import static java.lang.annotation.RetentionPolicy.RUNTIME; |
53 | 53 | import static org.assertj.core.api.Assertions.assertThat; |
54 | 54 | import static org.mockito.Mockito.mock; |
| 55 | +import static org.springframework.beans.factory.config.BeanDefinition.ROLE_APPLICATION; |
| 56 | +import static org.springframework.beans.factory.config.BeanDefinition.ROLE_INFRASTRUCTURE; |
| 57 | +import static org.springframework.beans.factory.support.BeanDefinitionBuilder.rootBeanDefinition; |
55 | 58 |
|
56 | 59 | /** |
57 | 60 | * Tests for {@link BeanValidationBeanRegistrationAotProcessor}. |
@@ -130,17 +133,28 @@ void shouldSkipConstraintWithMissingDependency() throws Exception { |
130 | 133 | assertThat(this.generationContext.getRuntimeHints().reflection().typeHints()).isEmpty(); |
131 | 134 | } |
132 | 135 |
|
| 136 | +@Test // gh-33940 |
| 137 | +void shouldSkipInfrastructureBean() { |
| 138 | +process(EmptyClass.class, ROLE_INFRASTRUCTURE); |
| 139 | +assertThat(this.generationContext.getRuntimeHints().reflection().typeHints()).isEmpty(); |
| 140 | +} |
| 141 | + |
133 | 142 | private void process(Class<?> beanClass) { |
134 | | -BeanRegistrationAotContribution contribution = createContribution(beanClass); |
| 143 | +process(beanClass, ROLE_APPLICATION); |
| 144 | +} |
| 145 | + |
| 146 | +private void process(Class<?> beanClass, int role) { |
| 147 | +BeanRegistrationAotContribution contribution = createContribution(beanClass, role); |
135 | 148 | if (contribution != null) { |
136 | 149 | contribution.applyTo(this.generationContext, mock()); |
137 | 150 | } |
138 | 151 | } |
139 | 152 |
|
140 | 153 | @Nullable |
141 | | -private BeanRegistrationAotContribution createContribution(Class<?> beanClass) { |
| 154 | +private BeanRegistrationAotContribution createContribution(Class<?> beanClass, int role) { |
142 | 155 | DefaultListableBeanFactory beanFactory = new DefaultListableBeanFactory(); |
143 | | -beanFactory.registerBeanDefinition(beanClass.getName(), new RootBeanDefinition(beanClass)); |
| 156 | +BeanDefinition beanDefinition = rootBeanDefinition(beanClass).setRole(role).getBeanDefinition(); |
| 157 | +beanFactory.registerBeanDefinition(beanClass.getName(), beanDefinition); |
144 | 158 | return this.processor.processAheadOfTime(RegisteredBean.of(beanFactory, beanClass.getName())); |
145 | 159 | } |
146 | 160 |
|
|
0 commit comments